+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;
+ LDKShutdownScript ret_var = ShutdownScript_clone(&orig_conv);
+ CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+ CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+ uint64_t ret_ref = (uint64_t)ret_var.inner;
+ if (ret_var.is_owned) {
+ ret_ref |= 1;
+ }
+ return ret_ref;
+}
+
+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);
+ InvalidShutdownScript_free(this_obj_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;
+ 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);
+ return ret_arr;
+}
+
+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;
+ 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);
+}
+
+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);
+ CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+ CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+ uint64_t 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;
+ 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);
+ 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 = *((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);
+ return (uint64_t)ret_conv;
+}
+
+uint32_t __attribute__((visibility("default"))) TS_ShutdownScript_new_p2pkh(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_p2pkh(pubkey_hash_ref);
+ CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+ CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+ uint64_t 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_p2sh(int8_tArray script_hash) {
+ unsigned char script_hash_arr[20];
+ CHECK(*((uint32_t*)script_hash) == 20);
+ memcpy(script_hash_arr, (uint8_t*)(script_hash + 4), 20);
+ unsigned char (*script_hash_ref)[20] = &script_hash_arr;
+ LDKShutdownScript ret_var = ShutdownScript_new_p2sh(script_hash_ref);
+ CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+ CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+ uint64_t 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_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);
+ CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+ CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+ uint64_t 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);
+ CHECK((((uint64_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this.
+ CHECK((((uint64_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this.
+ uint64_t 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_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);
+ 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);
+ 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);
+ 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;
+ 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;
+}
+
+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;
+ LDKInitFeatures features_conv;
+ features_conv.inner = (void*)(features & (~1));
+ features_conv.is_owned = false;
+ jboolean ret_val = ShutdownScript_is_compatible(&this_arg_conv, &features_conv);
+ return ret_val;
+}
+
+void __attribute__((visibility("default"))) TS_CustomMessageReader_free(uint32_t this_ptr) {
+ if ((this_ptr & 1) != 0) return;
+ LDKCustomMessageReader this_ptr_conv = *(LDKCustomMessageReader*)(((uint64_t)this_ptr) & ~1);
+ FREE((void*)this_ptr);
+ CustomMessageReader_free(this_ptr_conv);
+}
+
+uint32_t __attribute__((visibility("default"))) TS_Type_clone(uint32_t orig) {
+ LDKType* orig_conv = (LDKType*)(((uint64_t)orig) & ~1);
+ LDKType* ret_ret =MALLOC(sizeof(LDKType), "LDKType");
+ *ret_ret = Type_clone(orig_conv);
+ return (uint64_t)ret_ret;
+}
+
+void __attribute__((visibility("default"))) TS_Type_free(uint32_t this_ptr) {
+ if ((this_ptr & 1) != 0) return;
+ LDKType this_ptr_conv = *(LDKType*)(((uint64_t)this_ptr) & ~1);
+ FREE((void*)this_ptr);
+ Type_free(this_ptr_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);
+ RouteHop_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;
+ 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;
+}