Merge pull request #134 from TheBlueMatt/main v0.0.115.1
authorMatt Corallo <649246+TheBlueMatt@users.noreply.github.com>
Mon, 5 Jun 2023 02:36:54 +0000 (02:36 +0000)
committerGitHub <noreply@github.com>
Mon, 5 Jun 2023 02:36:54 +0000 (02:36 +0000)
0.0.115.1

91 files changed:
.github/workflows/build.yml
gen_type_mapping.py
genbindings.py
genbindings.sh
java_strings.py
src/main/java/org/ldk/batteries/ChannelManagerConstructor.java
src/main/java/org/ldk/impl/bindings.java
src/main/java/org/ldk/structs/BackgroundProcessor.java
src/main/java/org/ldk/structs/BlindedPath.java
src/main/java/org/ldk/structs/BuiltCommitmentTransaction.java
src/main/java/org/ldk/structs/ChainMonitor.java
src/main/java/org/ldk/structs/ChannelManager.java
src/main/java/org/ldk/structs/ChannelManagerReadArgs.java
src/main/java/org/ldk/structs/ChannelMonitor.java
src/main/java/org/ldk/structs/CustomMessageHandler.java
src/main/java/org/ldk/structs/CustomOnionMessageHandler.java
src/main/java/org/ldk/structs/DefaultRouter.java
src/main/java/org/ldk/structs/EventsProvider.java
src/main/java/org/ldk/structs/FilesystemPersister.java
src/main/java/org/ldk/structs/Future.java
src/main/java/org/ldk/structs/InMemorySigner.java
src/main/java/org/ldk/structs/LockableScore.java
src/main/java/org/ldk/structs/MessageHandler.java
src/main/java/org/ldk/structs/MultiThreadedLockableScore.java
src/main/java/org/ldk/structs/NetworkGraph.java
src/main/java/org/ldk/structs/OnionMessageContents.java
src/main/java/org/ldk/structs/OnionMessenger.java
src/main/java/org/ldk/structs/Option_CustomOnionMessageContentsZ.java
src/main/java/org/ldk/structs/Option_FilterZ.java
src/main/java/org/ldk/structs/Option_ScalarZ.java
src/main/java/org/ldk/structs/Option_TypeZ.java
src/main/java/org/ldk/structs/Option_UtxoLookupZ.java
src/main/java/org/ldk/structs/Option_WriteableScoreZ.java
src/main/java/org/ldk/structs/P2PGossipSync.java
src/main/java/org/ldk/structs/PeerManager.java
src/main/java/org/ldk/structs/Persister.java
src/main/java/org/ldk/structs/ProbabilisticScorer.java
src/main/java/org/ldk/structs/RapidGossipSync.java
src/main/java/org/ldk/structs/Result_NetworkGraphDecodeErrorZ.java
src/main/java/org/ldk/structs/Result_ProbabilisticScorerDecodeErrorZ.java
src/main/java/org/ldk/structs/Result_WriteableEcdsaChannelSignerDecodeErrorZ.java
src/main/java/org/ldk/structs/ScorerAccountingForInFlightHtlcs.java
src/main/java/org/ldk/structs/SignerProvider.java
src/main/java/org/ldk/structs/TrustedCommitmentTransaction.java
src/main/java/org/ldk/structs/TwoTuple_BlockHashChannelManagerZ.java
src/main/java/org/ldk/structs/TwoTuple_PublicKeyTypeZ.java
src/main/java/org/ldk/structs/UtilMethods.java
src/main/jni/bindings.c
src/main/jni/bindings.c.body
src/main/jni/org_ldk_impl_bindings.h
src/test/java/org/ldk/HumanObjectPeerTest.java
ts/bindings.c
ts/bindings.c.body
ts/bindings.mts
ts/structs/BlindedPath.mts
ts/structs/BuiltCommitmentTransaction.mts
ts/structs/ChainMonitor.mts
ts/structs/ChannelManager.mts
ts/structs/ChannelManagerReadArgs.mts
ts/structs/ChannelMonitor.mts
ts/structs/CustomMessageHandler.mts
ts/structs/CustomOnionMessageHandler.mts
ts/structs/DefaultRouter.mts
ts/structs/EventsProvider.mts
ts/structs/Future.mts
ts/structs/InMemorySigner.mts
ts/structs/LockableScore.mts
ts/structs/MessageHandler.mts
ts/structs/MultiThreadedLockableScore.mts
ts/structs/NetworkGraph.mts
ts/structs/OnionMessageContents.mts
ts/structs/OnionMessenger.mts
ts/structs/Option_CustomOnionMessageContentsZ.mts
ts/structs/Option_FilterZ.mts
ts/structs/Option_ScalarZ.mts
ts/structs/Option_TypeZ.mts
ts/structs/Option_UtxoLookupZ.mts
ts/structs/P2PGossipSync.mts
ts/structs/PeerManager.mts
ts/structs/Persister.mts
ts/structs/ProbabilisticScorer.mts
ts/structs/RapidGossipSync.mts
ts/structs/Result_NetworkGraphDecodeErrorZ.mts
ts/structs/Result_ProbabilisticScorerDecodeErrorZ.mts
ts/structs/Result_WriteableEcdsaChannelSignerDecodeErrorZ.mts
ts/structs/ScorerAccountingForInFlightHtlcs.mts
ts/structs/SignerProvider.mts
ts/structs/TrustedCommitmentTransaction.mts
ts/structs/TwoTuple_BlockHashChannelManagerZ.mts
ts/structs/TwoTuple_PublicKeyTypeZ.mts
ts/structs/UtilMethods.mts

index 6ce9785a61d15b3101a14e3f433037943cc59ee9..28e04e264ffea7d68dc2177755c6668afd5ea724 100644 (file)
@@ -200,6 +200,7 @@ jobs:
           cd ldk-c-bindings
           ./genbindings.sh ../rust-lightning true
       - name: Checkout latest MacOS binaries
+        shell: bash
         run: |
           export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
           echo "Fetching deterministic binaries for LDK-GC ${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}"
@@ -213,8 +214,24 @@ jobs:
           rm -r ldk-java-bins-*
           cd ../..
           mkdir -p src/main/resources/
-          cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/liblightningjni_MacOSX-"* src/main/resources/
-          rm src/main/resources/liblightningjni_MacOSX-*-leaktracking.nativelib
+      - name: Copy latest MacOS leaktracking libs
+        run: |
+          export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
+          cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"liblightningjni_MacOSX-aarch64-leaktracking.nativelib src/main/resources/liblightningjni_MacOSX-aarch64.nativelib
+          cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"liblightningjni_MacOSX-x86_64-leaktracking.nativelib src/main/resources/liblightningjni_MacOSX-x86_64.nativelib
+      - name: Build Leaktracking Java Release Bindings
+        run: |
+          export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
+          ./genbindings.sh ./ldk-c-bindings/ "-I/usr/lib/jvm/java-11-openjdk-amd64/include/ -I/usr/lib/jvm/java-11-openjdk-amd64/include/linux/" leaks false
+      - name: Build deterministic release jar
+        run: |
+          ./build-release-jar.sh
+          mv ldk-java.jar ldk-java-leaktracking.jar
+      - name: Copy latest MacOS libs
+        shell: bash
+        run: |
+          export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
+          cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/liblightningjni_MacOSX-"{aarch64,x86_64}.nativelib src/main/resources/
       - name: Build Java Release Bindings
         run: |
           export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
@@ -227,20 +244,21 @@ jobs:
           mkdir ldk-java-bins/new/
           cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"liblightningjni_Mac*.nativelib ldk-java-bins/new/
           cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"LDK-release.aar ldk-java-bins/new/
-          # ldk-java-leaktracking is only for debug purposes and we don't bother with determinism
-          cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"ldk-java-leaktracking.jar ldk-java-bins/new/
           cp src/main/resources/liblightningjni_Linux-amd64.nativelib ldk-java-bins/new/
           cp ldk-java-sources.jar ldk-java-bins/new/
           cp ldk-java.jar ldk-java-bins/new/
+          cp ldk-java-leaktracking.jar ldk-java-bins/new/
           cp ldk-java-classes.jar ldk-java-bins/new/
           cp ldk-java-javadoc.jar ldk-java-bins/new/
           cd ldk-java-bins
+          rm "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/liblightningjs.wasm" # TODO: Test this
           if ! diff -r "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/" new/; then
             apt-get -y install diffoscope
             diffoscope new/ldk-java-sources.jar "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/ldk-java-sources.jar" || echo
             diffoscope new/ldk-java-javadoc.jar "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/ldk-java-javadoc.jar" || echo
             diffoscope new/ldk-java-classes.jar "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/ldk-java-classes.jar" || echo
             diffoscope new/ldk-java.jar "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/ldk-java.jar" || echo
+            diffoscope new/ldk-java-leaktracking.jar "${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/ldk-java-leaktracking.jar" || echo
             exit 1
           fi
       - name: Run Java Tests against built release jar
@@ -250,6 +268,128 @@ jobs:
           mvn package
           java -ea -jar target/ldk-java-tests-1.0-SNAPSHOT-jar-with-dependencies.jar
 
+  macos_determinism:
+    runs-on: ubuntu-latest
+    # Ubuntu's version of rustc uses its own LLVM instead of being a real native package.
+    # This leaves us with an incompatible LLVM version when linking. Instead, use a real OS.
+    container: debian:bookworm
+    strategy:
+      fail-fast: false
+    steps:
+      - name: Install native Rust toolchain, Valgrind, and build utilitis
+        run: |
+          apt-get update
+          apt-get -y dist-upgrade
+          apt-get -y install cargo valgrind openjdk-17-jdk lld git g++ clang llvm curl rust-src
+      - name: Checkout source code
+        uses: actions/checkout@v2
+        with:
+          fetch-depth: 0
+      - name: Install cbindgen
+        run: |
+          git config --global safe.directory '*'
+          git clone https://github.com/eqrion/cbindgen
+          cd cbindgen/
+          git checkout v0.20.0
+          cargo update -p indexmap --precise "1.6.2" --verbose
+          cargo install --locked --path .
+      - name: Checkout Rust-Lightning and LDK-C-Bindings git
+        run: |
+          git config --global user.email "ldk-ci@example.com"
+          git config --global user.name "LDK CI"
+          # Note this is a different endpoint, as we need one non-upstream commit!
+          git clone https://git.bitcoin.ninja/rust-lightning
+          cd rust-lightning
+          git checkout origin/2023-04-0.0.115-java-bindings
+          cd ..
+          git clone https://github.com/lightningdevkit/ldk-c-bindings
+          cd ldk-c-bindings
+          git checkout 0.0.115
+      - name: Fetch MacOS SDK
+        run: |
+          curl -o Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers.tar.gz https://bitcoincore.org/depends-sources/sdks/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers.tar.gz
+          tar xvvf Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers.tar.gz
+      - name: Rebuild C bindings, and check the sample app builds + links
+        run: |
+          # rust-src doesn't distribute the rustlib Cargo.lock, but an empty
+          # file seems to suffice to make `-Zbuild-std` happy.
+          touch /usr/lib/rustlib/src/rust/Cargo.lock
+          export MACOS_SDK="$PWD/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers"
+          cd ldk-c-bindings
+          ./genbindings.sh ../rust-lightning true
+      - name: Fetch MacOS OpenJDK 18 for x86_64
+        run: |
+          curl -o openjdk-18.0.1.1_macos-x64_bin.tar.gz https://download.java.net/java/GA/jdk18.0.1.1/65ae32619e2f40f3a9af3af1851d6e19/2/GPL/openjdk-18.0.1.1_macos-x64_bin.tar.gz
+          if [ "$(shasum -a 256 openjdk-18.0.1.1_macos-x64_bin.tar.gz | awk '{ print $1 }')" != "f02d17ec5a387555f8489abc352d973b6c10364409b597046025938e2266d72a" ]; then
+            echo "Bad hash"
+            exit 1
+          fi
+          mkdir jdk-x86_64
+          cd jdk-x86_64
+          tar xvvf ../openjdk-18.0.1.1_macos-x64_bin.tar.gz
+      - name: Fetch MacOS OpenJDK 18 for aarch64
+        run: |
+          curl -o openjdk-18.0.1.1_macos-aarch64_bin.tar.gz https://download.java.net/java/GA/jdk18.0.1.1/65ae32619e2f40f3a9af3af1851d6e19/2/GPL/openjdk-18.0.1.1_macos-aarch64_bin.tar.gz
+          if [ "$(shasum -a 256 openjdk-18.0.1.1_macos-aarch64_bin.tar.gz | awk '{ print $1 }')" != "29773ad68063bdad7fbaeb762cd873d3f243e86de380d3ac5335cdb929371fb5" ]; then
+            echo "Bad hash"
+            exit 1
+          fi
+          mkdir jdk-aarch64
+          cd jdk-aarch64
+          tar xvvf ../openjdk-18.0.1.1_macos-aarch64_bin.tar.gz
+      - name: Build MacOS aarch64 Java leaktracking Release Bindings
+        run: |
+          MACOS_SDK="$PWD/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers"
+          JAVA_HOME=jdk-aarch64/jdk-18.0.1.1.jdk/Contents/Home
+          export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
+          CC=clang LDK_TARGET=aarch64-apple-darwin LDK_TARGET_CPU=apple-a14 ./genbindings.sh ./ldk-c-bindings/ "-I$JAVA_HOME/include/ -I$JAVA_HOME/include/darwin -isysroot$MACOS_SDK" leaks false
+          mv src/main/resources/liblightningjni_MacOSX-aarch64.nativelib src/main/resources/liblightningjni_MacOSX-aarch64-leaktracking.nativelib
+      - name: Build MacOS x86_64 Java leaktracking Release Bindings
+        run: |
+          MACOS_SDK="$PWD/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers"
+          JAVA_HOME=jdk-x86_64/jdk-18.0.1.1.jdk/Contents/Home
+          export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
+          CC=clang LDK_TARGET=x86_64-apple-darwin LDK_TARGET_CPU=sandybridge ./genbindings.sh ./ldk-c-bindings/ "-I$JAVA_HOME/include/ -I$JAVA_HOME/include/darwin -isysroot$MACOS_SDK" leaks false
+          mv src/main/resources/liblightningjni_MacOSX-x86_64.nativelib src/main/resources/liblightningjni_MacOSX-x86_64-leaktracking.nativelib
+      - name: Build MacOS aarch64 Java Release Bindings
+        run: |
+          MACOS_SDK="$PWD/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers"
+          JAVA_HOME=jdk-aarch64/jdk-18.0.1.1.jdk/Contents/Home
+          export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
+          CC=clang LDK_TARGET=aarch64-apple-darwin LDK_TARGET_CPU=apple-a14 ./genbindings.sh ./ldk-c-bindings/ "-I$JAVA_HOME/include/ -I$JAVA_HOME/include/darwin -isysroot$MACOS_SDK" false false
+      - name: Build MacOS x86_64 Java Release Bindings
+        run: |
+          MACOS_SDK="$PWD/Xcode-12.2-12B45b-extracted-SDK-with-libcxx-headers"
+          JAVA_HOME=jdk-x86_64/jdk-18.0.1.1.jdk/Contents/Home
+          export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
+          CC=clang LDK_TARGET=x86_64-apple-darwin LDK_TARGET_CPU=sandybridge ./genbindings.sh ./ldk-c-bindings/ "-I$JAVA_HOME/include/ -I$JAVA_HOME/include/darwin -isysroot$MACOS_SDK" false false
+      - name: Checkout latest binaries
+        run: |
+          export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
+          echo "Fetching deterministic binaries for LDK-GC ${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}"
+          # Gitweb only allows snapshots of folders by providing the object hash, which we have to extract:
+          SNAPSHOT_LINK="$(curl "https://git.bitcoin.ninja/index.cgi?p=ldk-java-bins;a=tree;f=${LDK_GARBAGECOLLECTED_GIT_OVERRIDE};hb=refs/heads/main" | grep snapshot | grep -o 'href="[a-zA-Z0-9/?\.=;\-]*"' | sed 's/href="//' | tr -d '"' | grep snapshot)"
+          curl -o bins-snapshot.tgz "https://git.bitcoin.ninja${SNAPSHOT_LINK}"
+          mkdir -p ldk-java-bins/"${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}"
+          cd ldk-java-bins/"${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}"
+          tar xvvf ../../bins-snapshot.tgz
+          mv ldk-java-bins-*/* ./
+          rm -r ldk-java-bins-*
+          cd ../..
+      - name: Check latest MacOS libraries are in the bins repo
+        shell: bash
+        run: |
+          export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
+          for F in liblightningjni_MacOSX-{x86_64,aarch64}{,-leaktracking}.nativelib; do
+            if ! diff "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/$F" "src/main/resources/$F"; then
+              apt-get -y install diffoscope
+              # Sadly these binaries are still non-deterministic, but only due
+              # to a few-byte tag, thus we use diffoscope to ensure there
+              # aren't any "real" differences and move on.
+              diffoscope "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/$F" "src/main/resources/$F" || echo
+            fi
+          done
+
   android:
     runs-on: ubuntu-latest
     # Frankly, I'm not really sure why debian and ubuntu differ in the results here, they really shouldn't
@@ -347,28 +487,20 @@ jobs:
     strategy:
       matrix:
         include:
-          - platform: macos-10.15
           - platform: macos-11
+          - platform: macos-12
+          - platform: macos-13
       fail-fast: false
     runs-on: ${{ matrix.platform }}
     steps:
-      - name: Install other Rust platforms
-        run: rustup target install aarch64-apple-darwin
+      - name: Install Rust components
+        run: |
+          rustup target install aarch64-apple-darwin
+          rustup component add rust-src
       - name: Checkout source code
         uses: actions/checkout@v2
         with:
           fetch-depth: 0
-      - name: Fetch upstream LLVM/clang snapshot
-        run: |
-          git config --global safe.directory '*'
-          wget -O clang+llvm-15.0.7-x86_64-apple-darwin21.0.tar.xz https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.7/clang+llvm-15.0.7-x86_64-apple-darwin21.0.tar.xz
-          if [ "$(shasum -a 256 clang+llvm-15.0.7-x86_64-apple-darwin21.0.tar.xz | awk '{ print $1 }')" != "d16b6d536364c5bec6583d12dd7e6cf841b9f508c4430d9ee886726bd9983f1c" ]; then
-            echo "Bad hash"
-            exit 1
-          fi
-      - name: Unpack upstream LLVM+clang and use it by default
-        run: |
-          tar xvvf clang+llvm-15.0.7-x86_64-apple-darwin21.0.tar.xz
       - name: Install cbindgen
         run: cargo install cbindgen
       - name: Checkout Rust-Lightning and LDK-C-Bindings git
@@ -383,13 +515,9 @@ jobs:
           git clone https://github.com/lightningdevkit/ldk-c-bindings
           cd ldk-c-bindings
           git checkout 0.0.115
-      - name: Rebuild C bindings with upstream clang, and check the sample app builds + links
+      - name: Rebuild C bindings and check the sample app builds + links
         run: |
-          export PATH=`pwd`/clang+llvm-15.0.7-x86_64-apple-darwin21.0/bin:$PATH
           cd ldk-c-bindings
-          export CC=clang
-          export CC_x86_64_apple_darwin=clang
-          export CC_aarch64_apple_darwin=clang
           CC=clang ./genbindings.sh ../rust-lightning true
       - name: Fetch OpenJDK 18
         run: |
@@ -427,7 +555,6 @@ jobs:
           export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
           export JAVA_HOME=`pwd`/jdk-18.0.1.1.jdk/Contents/Home
           export PATH=$JAVA_HOME/bin:$PATH
-          export PATH=`pwd`/clang+llvm-15.0.7-x86_64-apple-darwin21.0/bin:$PATH
           ./genbindings.sh ./ldk-c-bindings/ "-I$JAVA_HOME/include/ -I$JAVA_HOME/include/darwin -isysroot$(xcrun --show-sdk-path)" false false
 
           if [ "${{ matrix.platform }}" = "macos-11" ]; then
@@ -438,7 +565,6 @@ jobs:
             cat src/main/resources/liblightningjni_MacOSX-aarch64.nativelib > /dev/null
 
           fi
-
       - name: Fetch Maven 3.8.4
         run: |
           # We don't bother using the upstream mirrors as they remove prior
@@ -462,38 +588,14 @@ jobs:
           cd javatester
           mvn -q -B package
           java -ea -jar target/ldk-java-tests-1.0-SNAPSHOT-jar-with-dependencies.jar
-      - name: Check latest release libs are in git
-        run: |
-          if [ "${{ matrix.platform }}" = "macos-11" ]; then
-            export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
-            # Sadly, OSX binaries are not currently deterministic, more debugging is needed.
-            diff "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"liblightningjni_MacOSX-x86_64.nativelib src/main/resources/liblightningjni_MacOSX-x86_64.nativelib || echo
-            diff "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"liblightningjni_MacOSX-aarch64.nativelib src/main/resources/liblightningjni_MacOSX-aarch64.nativelib || echo
-          fi
-      - name: Upload CI x86_64 build for analysis
-        if: matrix.platform == 'macos-11'
-        uses: actions/upload-artifact@v3.0.0
-        with:
-          name: liblightningjni_MacOSX-x86_64.nativelib.ci-build
-          path: src/main/resources/liblightningjni_MacOSX-x86_64.nativelib
-      - name: Upload CI aarch64 build for analysis
-        if: matrix.platform == 'macos-11'
-        uses: actions/upload-artifact@v3.0.0
-        with:
-          name: liblightningjni_MacOSX-aarch64.nativelib.ci-build
-          path: src/main/resources/liblightningjni_MacOSX-aarch64.nativelib
       - name: Run Java Tests against release bins
         run: |
-          if [ "${{ matrix.platform }}" != "macos-11" ]; then
-            export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
-            export JAVA_HOME=`pwd`/jdk-18.0.1.1.jdk/Contents/Home
-            export PATH=$JAVA_HOME/bin:$PATH
-            cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/"liblightningjni_MacOSX-{x86_64,aarch64}.nativelib src/main/resources/
-            mvn clean
-            mvn -q -B -DskipTests=true package
-            JAR_VERSION=${LDK_GARBAGECOLLECTED_GIT_OVERRIDE:1:100}
-            mvn install:install-file -Dfile=target/ldk-java-${JAR_VERSION}.jar -DgroupId=org.lightningdevkit -DartifactId=ldk-java -Dversion=1.0-SNAPSHOT -Dpackaging=jar
-            cd javatester
-            mvn -q -B package
-            java -ea -jar target/ldk-java-tests-1.0-SNAPSHOT-jar-with-dependencies.jar
-          fi
+          export LDK_GARBAGECOLLECTED_GIT_OVERRIDE="$(git describe --tag HEAD)"
+          export JAVA_HOME=`pwd`/jdk-18.0.1.1.jdk/Contents/Home
+          export PATH=$JAVA_HOME/bin:$PATH
+          cp "ldk-java-bins/${LDK_GARBAGECOLLECTED_GIT_OVERRIDE}/ldk-java.jar" ./
+          mvn install:install-file -Dfile=ldk-java.jar -DgroupId=org.lightningdevkit -DartifactId=ldk-java -Dversion=1.0-SNAPSHOT -Dpackaging=jar
+          cd javatester
+          mvn clean
+          mvn -q -B package
+          java -ea -jar target/ldk-java-tests-1.0-SNAPSHOT-jar-with-dependencies.jar
index aebb290d03862d0d2e3181b3e64af0443ad98f18..2a709ea46af9fcad29ee5064dfdc5a2abdbe544f 100644 (file)
@@ -393,7 +393,7 @@ class TypeMappingGenerator:
                             if holds_ref:
                                 base_conv += "\n" + ty_info.var_name + "_conv = " + ty_info.rust_obj.replace("LDK", "") + "_clone(&" + ty_info.var_name + "_conv);"
                             else:
-                                from_hu_conv = (ty_info.var_name + " == null ? " + self.consts.native_zero_ptr + " : " + ty_info.var_name + ".clone_ptr()", "")
+                                from_hu_conv = (ty_info.var_name + ".clone_ptr()", "")
                                 base_conv += "\n" + "FREE(untag_ptr(" + ty_info.var_name + "));"
                         else:
                             base_conv = base_conv + self.consts.trait_struct_inc_refcnt(ty_info)
@@ -402,7 +402,7 @@ class TypeMappingGenerator:
                     else:
                         base_conv = base_conv + "\n" + "FREE(untag_ptr(" + ty_info.var_name + "));"
                     if from_hu_conv is None:
-                        from_hu_conv = (ty_info.var_name + " == null ? " + self.consts.native_zero_ptr + " : " + self.consts.get_ptr(ty_info.var_name), "")
+                        from_hu_conv = (self.consts.get_ptr(ty_info.var_name), "")
                     from_hu_conv = (from_hu_conv[0], self.consts.add_ref("this", ty_info.var_name))
                     return ConvInfo(ty_info = ty_info, arg_name = ty_info.var_name,
                         arg_conv = base_conv, arg_conv_name = ty_info.var_name + "_conv", arg_conv_cleanup = None,
@@ -553,6 +553,7 @@ class TypeMappingGenerator:
                         arg_conv += "if (ptr_is_owned(" + ty_info.var_name + ")) { CHECK_ACCESS(" + ty_info.var_name + "_ptr); }\n"
                         arg_conv += ty_info.rust_obj + "* " + ty_info.var_name + "_conv = (" + ty_info.rust_obj + "*)" + ty_info.var_name + "_ptr;"
                         arg_conv_name = ty_info.var_name + "_conv"
+                        from_hu_conv_pfx = self.consts.get_ptr(ty_info.var_name)
                     else:
                         # We map Option<Trait> as *mut Trait, which we can differentiate from &Trait by the NONNULL_PTR annotation.
                         # We handle the Option<Trait> case here.
@@ -567,6 +568,7 @@ class TypeMappingGenerator:
                         arg_conv += "\t*" + ty_info.var_name + "_conv_ptr = " + ty_info.var_name + "_conv;\n"
                         arg_conv += "}"
                         arg_conv_name = ty_info.var_name + "_conv_ptr"
+                        from_hu_conv_pfx = ty_info.var_name + " == null ? " + self.consts.native_zero_ptr + " : " + self.consts.get_ptr(ty_info.var_name)
                     if ty_info.rust_obj.replace("LDK", "") + "_clone" in self.clone_fns:
                         return ConvInfo(ty_info = ty_info, arg_name = ty_info.var_name,
                             arg_conv = arg_conv, arg_conv_name = arg_conv_name, arg_conv_cleanup = None,
@@ -574,16 +576,14 @@ class TypeMappingGenerator:
                                 "*" + ty_info.var_name + "_clone = " + ty_info.rust_obj.replace("LDK", "") + "_clone(", ");"),
                             ret_conv_name = "tag_ptr(" + ty_info.var_name + "_clone, true)",
                             to_hu_conv = self.consts.var_decl_statement(ty_info.java_hu_ty, "ret_hu_conv", "new " + ty_info.java_hu_ty + "(null, " + ty_info.var_name + ")") + ";\n" + self.consts.add_ref("ret_hu_conv", "this") + ";",
-                            to_hu_conv_name = "ret_hu_conv",
-                            from_hu_conv = (ty_info.var_name + " == null ? " + self.consts.native_zero_ptr + " : " + self.consts.get_ptr(ty_info.var_name), ""))
+                            to_hu_conv_name = "ret_hu_conv", from_hu_conv = (from_hu_conv_pfx, ""))
                     else:
                         return ConvInfo(ty_info = ty_info, arg_name = ty_info.var_name,
                             arg_conv = arg_conv, arg_conv_name = arg_conv_name, arg_conv_cleanup = None,
                             ret_conv = ("// WARNING: This object doesn't live past this scope, needs clone!\n" + self.consts.ptr_c_ty + " ret_" + ty_info.var_name + " = tag_ptr(", ", false);"),
                             ret_conv_name = "ret_" + ty_info.var_name,
                             to_hu_conv = self.consts.var_decl_statement(ty_info.java_hu_ty, "ret_hu_conv", "new " + ty_info.java_hu_ty + "(null, " + ty_info.var_name + ")") + ";\n" + self.consts.add_ref("ret_hu_conv", "this") + ";",
-                            to_hu_conv_name = "ret_hu_conv",
-                            from_hu_conv = (ty_info.var_name + " == null ? " + self.consts.native_zero_ptr + " : " + self.consts.get_ptr(ty_info.var_name), self.consts.add_ref("this", ty_info.var_name)))
+                            to_hu_conv_name = "ret_hu_conv", from_hu_conv = (from_hu_conv_pfx, self.consts.add_ref("this", ty_info.var_name)))
                 ret_conv = (self.consts.ptr_c_ty + " ret_" + ty_info.var_name + " = tag_ptr(", ", true);")
                 if holds_ref:
                     ret_conv = (ret_conv[0], ", false);")
index e5a59700352c6f0c1cdff2de3546783770396ee8..28b0e7e7b62c5d412e31ac345796f4149a0c0f0c 100755 (executable)
@@ -1,8 +1,8 @@
 #!/usr/bin/env python3
 import os, sys, re, subprocess
 
-if len(sys.argv) < 7:
-    print("USAGE: /path/to/lightning.h /path/to/bindings/output /path/to/bindings/ /path/to/bindings/output.c debug lang")
+if len(sys.argv) < 8:
+    print("USAGE: /path/to/lightning.h /path/to/bindings/output /path/to/bindings/ /path/to/bindings/output.c debug lang target-tuple")
     sys.exit(1)
 
 if sys.argv[5] == "false":
@@ -20,6 +20,8 @@ if sys.argv[6] == "java" or sys.argv[6] == "android":
     target = java_strings.Target.JAVA
     if sys.argv[6] == "android":
         target = java_strings.Target.ANDROID
+    if "apple" in sys.argv[8]:
+        target = java_strings.Target.MACOS
 elif sys.argv[6] == "typescript":
     import typescript_strings
     from typescript_strings import Consts
@@ -38,7 +40,6 @@ else:
     print("Only java, typescript, python, or c_sharp can be set for lang")
     sys.exit(1)
 
-
 consts = Consts(DEBUG, target=target, outdir=sys.argv[4])
 
 local_git_version = os.getenv("LDK_GARBAGECOLLECTED_GIT_OVERRIDE")
index e2952f7306a49326d100b82dbf0a450915d1ead3..25621a8ee1ec93e8f7622d18c369b76c443093d6 100755 (executable)
@@ -20,13 +20,47 @@ function is_gnu_sed(){
   sed --version >/dev/null 2>&1
 }
 
-if [ "$CC" != "" ]; then
-       COMMON_COMPILE="$CC -std=c11 -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-function -Wno-nullability-completeness -Wno-pointer-sign -Wdate-time -ffile-prefix-map=$(pwd)="
-else
+if [ "$CC" = "" ]; then
        CC=clang
-       COMMON_COMPILE="clang -std=c11 -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-function -Wno-nullability-completeness -Wno-pointer-sign -Wdate-time -ffile-prefix-map=$(pwd)="
 fi
 
+TARGET_STRING="$LDK_TARGET"
+if [ "$TARGET_STRING" = "" ]; then
+       # We assume clang-style $CC --version here, but worst-case we just get an empty suffix
+       TARGET_STRING="$($CC --version | grep Target | awk '{ print $2 }')"
+fi
+
+IS_MAC=false
+[ "$($CC --version | grep apple-darwin)" != "" ] && IS_MAC=true
+IS_APPLE_CLANG=false
+[ "$($CC --version | grep "Apple clang version")" != "" ] && IS_APPLE_CLANG=true
+
+case "$TARGET_STRING" in
+       "x86_64-pc-linux"*)
+               LDK_TARGET_SUFFIX="_Linux-amd64"
+               LDK_JAR_TARGET=true
+               ;;
+       "x86_64-apple-darwin"*)
+               LDK_TARGET_SUFFIX="_MacOSX-x86_64"
+               LDK_JAR_TARGET=true
+               IS_MAC=true
+               ;;
+       "aarch64-apple-darwin"*)
+               LDK_TARGET_CPU="apple-a14"
+               LDK_TARGET_SUFFIX="_MacOSX-aarch64"
+               LDK_JAR_TARGET=true
+               IS_MAC=true
+               ;;
+       *)
+               LDK_TARGET_SUFFIX="_${TARGET_STRING}"
+esac
+if [ "$LDK_TARGET_CPU" = "" ]; then
+       LDK_TARGET_CPU="sandybridge"
+fi
+
+COMMON_COMPILE="$CC -std=c11 -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-function -Wno-nullability-completeness -Wno-pointer-sign -Wdate-time -ffile-prefix-map=$(pwd)="
+[ "$IS_MAC" = "true" -a "$2" != "wasm" ] && COMMON_COMPILE="$COMMON_COMPILE --target=$TARGET_STRING -mcpu=$LDK_TARGET_CPU"
+
 DEBUG_ARG="$3"
 if [ "$3" = "leaks" ]; then
        DEBUG_ARG="true"
@@ -50,36 +84,10 @@ fi
 
 
 if [ "$2" = "c_sharp" ]; then
-       TARGET_STRING="$LDK_TARGET"
-       if [ "$TARGET_STRING" = "" ]; then
-               # We assume clang-style $CC --version here, but worst-case we just get an empty suffix
-               TARGET_STRING="$($CC --version | grep Target | awk '{ print $2 }')"
-       fi
-       case "$TARGET_STRING" in
-               "x86_64-pc-linux"*)
-                       LDK_TARGET_SUFFIX="_Linux-amd64"
-                       LDK_JAR_TARGET=true
-                       ;;
-               "x86_64-apple-darwin"*)
-                       LDK_TARGET_SUFFIX="_MacOSX-x86_64"
-                       LDK_JAR_TARGET=true
-                       ;;
-               "aarch64-apple-darwin"*)
-                       LDK_TARGET_CPU="apple-a14"
-                       LDK_TARGET_SUFFIX="_MacOSX-aarch64"
-                       LDK_JAR_TARGET=true
-                       ;;
-               *)
-                       LDK_TARGET_SUFFIX="_${TARGET_STRING}"
-       esac
-       if [ "$LDK_TARGET_CPU" = "" ]; then
-               LDK_TARGET_CPU="sandybridge"
-       fi
-
        echo "Creating C# bindings..."
        mkdir -p c_sharp/src/org/ldk/{enums,structs,impl}
        rm -f c_sharp/src/org/ldk/{enums,structs,impl}/*.cs
-       ./genbindings.py "./lightning.h" c_sharp/src/org/ldk/impl c_sharp/src/org/ldk c_sharp/ $DEBUG_ARG c_sharp $4
+       ./genbindings.py "./lightning.h" c_sharp/src/org/ldk/impl c_sharp/src/org/ldk c_sharp/ $DEBUG_ARG c_sharp $4 $TARGET_STRING
        rm -f c_sharp/bindings.c
        if [ "$3" = "true" ]; then
                echo "#define LDK_DEBUG_BUILD" > c_sharp/bindings.c
@@ -108,7 +116,7 @@ if [ "$2" = "c_sharp" ]; then
        mv ./-out:csharpldk.dll csharpldk.dll # Mono is braindead, apparently
 
        echo "Building C# bindings..."
-       COMPILE="$COMMON_COMPILE -mcpu=$LDK_TARGET_CPU -Isrc/main/jni -pthread -fPIC"
+       COMPILE="$COMMON_COMPILE -Isrc/main/jni -pthread -fPIC"
        LINK="-ldl -shared"
        [ "$IS_MAC" = "false" ] && LINK="$LINK -Wl,--no-undefined"
        [ "$IS_MAC" = "true" ] && COMPILE="$COMPILE -mmacosx-version-min=10.9"
@@ -122,39 +130,13 @@ if [ "$2" = "c_sharp" ]; then
        else
                $COMPILE -o bindings.o -c -flto -O3 -I"$1"/lightning-c-bindings/include/ $2 c_sharp/bindings.c
                $COMPILE $LINK -o liblightningjni_release$LDK_TARGET_SUFFIX.so -flto -O3 -Wl,--lto-O3 -Wl,-O3 -Wl,--version-script=c_sharp/libcode.version -I"$1"/lightning-c-bindings/include/ $2 bindings.o "$1"/lightning-c-bindings/target/$LDK_TARGET/release/libldk.a -lm
-               llvm-strip liblightningjni_release$LDK_TARGET_SUFFIX.so
+               [ "$IS_APPLE_CLANG" != "true" ] && llvm-strip liblightningjni_release$LDK_TARGET_SUFFIX.so
        fi
 elif [ "$2" = "python" ]; then
-       TARGET_STRING="$LDK_TARGET"
-       if [ "$TARGET_STRING" = "" ]; then
-               # We assume clang-style $CC --version here, but worst-case we just get an empty suffix
-               TARGET_STRING="$($CC --version | grep Target | awk '{ print $2 }')"
-       fi
-       case "$TARGET_STRING" in
-               "x86_64-pc-linux"*)
-                       LDK_TARGET_SUFFIX="_Linux-amd64"
-                       LDK_JAR_TARGET=true
-                       ;;
-               "x86_64-apple-darwin"*)
-                       LDK_TARGET_SUFFIX="_MacOSX-x86_64"
-                       LDK_JAR_TARGET=true
-                       ;;
-               "aarch64-apple-darwin"*)
-                       LDK_TARGET_CPU="apple-a14"
-                       LDK_TARGET_SUFFIX="_MacOSX-aarch64"
-                       LDK_JAR_TARGET=true
-                       ;;
-               *)
-                       LDK_TARGET_SUFFIX="_${TARGET_STRING}"
-       esac
-       if [ "$LDK_TARGET_CPU" = "" ]; then
-               LDK_TARGET_CPU="sandybridge"
-       fi
-
        echo "Creating Python bindings..."
        mkdir -p python/src/{enums,structs,impl}
        rm -f python/src/{enums,structs,impl}/*.py
-       ./genbindings.py "./lightning.h" python/src/impl python/src python/ $DEBUG_ARG python $4
+       ./genbindings.py "./lightning.h" python/src/impl python/src python/ $DEBUG_ARG python $4 $TARGET_STRING
        rm -f python/bindings.c
        if [ "$3" = "true" ]; then
                echo "#define LDK_DEBUG_BUILD" > python/bindings.c
@@ -173,7 +155,7 @@ elif [ "$2" = "python" ]; then
        [ "$($CC --version | grep "Apple clang version")" != "" ] && IS_APPLE_CLANG=true
 
        echo "Building Python bindings..."
-       COMPILE="$COMMON_COMPILE -mcpu=$LDK_TARGET_CPU -Isrc/main/jni -pthread -fPIC"
+       COMPILE="$COMMON_COMPILE -Isrc/main/jni -pthread -fPIC"
        LINK="-ldl -shared"
        [ "$IS_MAC" = "false" ] && LINK="$LINK -Wl,--no-undefined"
        [ "$IS_MAC" = "true" ] && COMPILE="$COMPILE -mmacosx-version-min=10.9"
@@ -187,16 +169,16 @@ elif [ "$2" = "python" ]; then
        else
                $COMPILE -o bindings.o -c -flto -O3 -I"$1"/lightning-c-bindings/include/ $2 c_sharp/bindings.c
                $COMPILE $LINK -o liblightningpython_release$LDK_TARGET_SUFFIX.so -Wl,--version-script=python/libcode.version -flto -O3 -Wl,--lto-O3 -Wl,-O3 -I"$1"/lightning-c-bindings/include/ $2 bindings.o "$1"/lightning-c-bindings/target/$LDK_TARGET/release/libldk.a -lm
-               llvm-strip liblightningpython_release$LDK_TARGET_SUFFIX.so
+               [ "$IS_APPLE_CLANG" != "true" ] && llvm-strip liblightningpython_release$LDK_TARGET_SUFFIX.so
        fi
 elif [ "$2" = "wasm" ]; then
        echo "Creating TS bindings..."
        mkdir -p ts/{enums,structs}
        rm -f ts/{enums,structs,}/*.{mjs,mts,mts.part}
        if [ "$4" = "false" ]; then
-               ./genbindings.py "./lightning.h" ts ts ts $DEBUG_ARG typescript node
+               ./genbindings.py "./lightning.h" ts ts ts $DEBUG_ARG typescript node wasm
        else
-               ./genbindings.py "./lightning.h" ts ts ts $DEBUG_ARG typescript browser
+               ./genbindings.py "./lightning.h" ts ts ts $DEBUG_ARG typescript browser wasm
        fi
        rm -f ts/bindings.c
        sed -i 's/^  "version": .*/  "version": "'${LDK_GARBAGECOLLECTED_GIT_OVERRIDE:1:100}'",/g' ts/package.json
@@ -250,32 +232,6 @@ elif [ "$2" = "wasm" ]; then
                fi
        fi
 else
-       TARGET_STRING="$LDK_TARGET"
-       if [ "$TARGET_STRING" = "" ]; then
-               # We assume clang-style $CC --version here, but worst-case we just get an empty suffix
-               TARGET_STRING="$($CC --version | grep Target | awk '{ print $2 }')"
-       fi
-       case "$TARGET_STRING" in
-               "x86_64-pc-linux"*)
-                       LDK_TARGET_SUFFIX="_Linux-amd64"
-                       LDK_JAR_TARGET=true
-                       ;;
-               "x86_64-apple-darwin"*)
-                       LDK_TARGET_SUFFIX="_MacOSX-x86_64"
-                       LDK_JAR_TARGET=true
-                       ;;
-               "aarch64-apple-darwin"*)
-                       LDK_TARGET_CPU="apple-a14"
-                       LDK_TARGET_SUFFIX="_MacOSX-aarch64"
-                       LDK_JAR_TARGET=true
-                       ;;
-               *)
-                       LDK_TARGET_SUFFIX="_${TARGET_STRING}"
-       esac
-       if [ "$LDK_TARGET_CPU" = "" ]; then
-               LDK_TARGET_CPU="sandybridge"
-       fi
-
        if is_gnu_sed; then
                sed -i "s/^    <version>.*<\/version>/    <version>${LDK_GARBAGECOLLECTED_GIT_OVERRIDE:1:100}<\/version>/g" pom.xml
        else
@@ -288,9 +244,9 @@ else
        rm -f src/main/java/org/ldk/{enums,structs}/*.java
        rm -f src/main/jni/*.h
        if [ "$4" = "true" ]; then
-               ./genbindings.py "./lightning.h" src/main/java/org/ldk/impl src/main/java/org/ldk src/main/jni/ $DEBUG_ARG android $4
+               ./genbindings.py "./lightning.h" src/main/java/org/ldk/impl src/main/java/org/ldk src/main/jni/ $DEBUG_ARG android $4 $TARGET_STRING
        else
-               ./genbindings.py "./lightning.h" src/main/java/org/ldk/impl src/main/java/org/ldk src/main/jni/ $DEBUG_ARG java $4
+               ./genbindings.py "./lightning.h" src/main/java/org/ldk/impl src/main/java/org/ldk src/main/jni/ $DEBUG_ARG java $4 $TARGET_STRING
        fi
        rm -f src/main/jni/bindings.c
        if [ "$3" = "true" ]; then
@@ -306,13 +262,8 @@ else
        javac -h src/main/jni src/main/java/org/ldk/enums/*.java src/main/java/org/ldk/impl/*.java
        rm src/main/java/org/ldk/enums/*.class src/main/java/org/ldk/impl/bindings*.class
 
-       IS_MAC=false
-       [ "$($CC --version | grep apple-darwin)" != "" ] && IS_MAC=true
-       IS_APPLE_CLANG=false
-       [ "$($CC --version | grep "Apple clang version")" != "" ] && IS_APPLE_CLANG=true
-
        echo "Building Java bindings..."
-       COMPILE="$COMMON_COMPILE -mcpu=$LDK_TARGET_CPU -Isrc/main/jni -pthread -fPIC"
+       COMPILE="$COMMON_COMPILE -Isrc/main/jni -pthread -fPIC"
        LINK="-ldl -shared"
        [ "$IS_MAC" = "false" ] && LINK="$LINK -Wl,--no-undefined"
        [ "$IS_MAC" = "true" ] && COMPILE="$COMPILE -mmacosx-version-min=10.9"
@@ -322,6 +273,10 @@ else
        if [ "$3" = "true" ]; then
                $COMPILE $LINK -o liblightningjni_debug$LDK_TARGET_SUFFIX.so -g -fsanitize=address -shared-libasan -rdynamic -I"$1"/lightning-c-bindings/include/ $2 src/main/jni/bindings.c "$1"/lightning-c-bindings/target/$LDK_TARGET/debug/libldk.a -lm
        else
+               [ "$IS_MAC" = "false" ] && LINK="$LINK -Wl,--no-undefined -flto -Wl,-O3 -Wl,--lto-O3"
+               [ "$IS_MAC" = "false" ] && COMPILE="$COMPILE -flto"
+               [ "$IS_MAC" = "true" -a "$IS_APPLE_CLANG" = "false" ] && LINK="$LINK -flto -Wl,-O3 -Wl,--lto-O3"
+               [ "$IS_MAC" = "true" -a "$IS_APPLE_CLANG" = "false" ] && COMPILE="$COMPILE -flto"
                LDK_LIB="$1"/lightning-c-bindings/target/$LDK_TARGET/release/libldk.a
                if [ "$IS_MAC" = "false" -a "$4" = "false" ]; then
                        LINK="$LINK -Wl,--version-script=libcode.version -fuse-ld=lld"
@@ -365,9 +320,9 @@ else
                        popd
                        LDK_LIB="tmp/libldk.bc tmp/libldk.a"
                fi
-               $COMPILE -o bindings.o -c -flto -O3 -I"$1"/lightning-c-bindings/include/ $2 src/main/jni/bindings.c
-               $COMPILE $LINK -o liblightningjni_release$LDK_TARGET_SUFFIX.so -flto -Wl,--lto-O3 -Wl,-O3 -O3 -I"$1"/lightning-c-bindings/include/ $2 bindings.o $LDK_LIB -lm
-               llvm-strip liblightningjni_release$LDK_TARGET_SUFFIX.so
+               $COMPILE -o bindings.o -c -O3 -I"$1"/lightning-c-bindings/include/ $2 src/main/jni/bindings.c
+               $COMPILE $LINK -o liblightningjni_release$LDK_TARGET_SUFFIX.so -O3 -I"$1"/lightning-c-bindings/include/ $2 bindings.o $LDK_LIB -lm
+               [ "$IS_APPLE_CLANG" != "true" ] && llvm-strip liblightningjni_release$LDK_TARGET_SUFFIX.so
                if [ "$IS_MAC" = "false" -a "$4" = "false" ]; then
                        GLIBC_SYMBS="$(objdump -T liblightningjni_release$LDK_TARGET_SUFFIX.so | grep GLIBC_ | grep -v "GLIBC_2\.2\." | grep -v "GLIBC_2\.3\(\.\| \)" | grep -v "GLIBC_2.\(14\|17\) " || echo)"
                        if [ "$GLIBC_SYMBS" != "" ]; then
index a15991259093dca37b18c24ff2af5cc54581df7a..f5df004d80d3dd709c54366165a712ceb461337e 100644 (file)
@@ -5,6 +5,7 @@ import sys
 class Target(Enum):
     JAVA = 1,
     ANDROID = 2
+    MACOS = 3
 
 class Consts:
     def __init__(self, DEBUG: bool, target: Target, **kwargs):
@@ -193,7 +194,7 @@ void __attribute__((constructor)) spawn_stderr_redirection() {
         else:
             self.c_file_pfx = self.c_file_pfx + "#define DEBUG_PRINT(...) fprintf(stderr, __VA_ARGS__)\n"
 
-        if not DEBUG or sys.platform == "darwin":
+        if not DEBUG or self.target == Target.MACOS:
             self.c_file_pfx = self.c_file_pfx + """#define MALLOC(a, _) malloc(a)
 #define FREE(p) if ((uint64_t)(p) > 4096) { free(p); }
 #define CHECK_ACCESS(p)
@@ -218,7 +219,7 @@ void __attribute__((constructor)) debug_log_version() {
 }
 """
 
-            if sys.platform != "darwin":
+            if self.target != Target.MACOS:
                 self.c_file_pfx += """
 // Running a leak check across all the allocations and frees of the JDK is a mess,
 // so instead we implement our own naive leak checker here, relying on the -wrap
@@ -600,7 +601,7 @@ import javax.annotation.Nullable;
             res = res + "\t" + ty + "_clz = (*env)->FindClass(env, \"" + ty.replace("arr_of_", "[") + "\");\n"
             res = res + "\tCHECK(" + ty + "_clz != NULL);\n"
             res = res + "\t" + ty + "_clz = (*env)->NewGlobalRef(env, " + ty + "_clz);\n"
-        res = res + "\tString_clz = (*env)->FindClass(env, \"Ljava/lang/String;\");\n"
+        res = res + "\tString_clz = (*env)->FindClass(env, \"java/lang/String\");\n"
         res = res + "\tCHECK(String_clz != NULL);\n"
         res = res + "\tString_clz = (*env)->NewGlobalRef(env, String_clz);\n"
 
index 8e4d35a621af26f69fa600337808a8188edc4393..dec3d676c15ab6f54c44426160cb784c8073c129 100644 (file)
@@ -279,8 +279,13 @@ public class ChannelManagerConstructor {
 
         final IgnoringMessageHandler ignoring_handler = IgnoringMessageHandler.of();
         P2PGossipSync graph_msg_handler = P2PGossipSync.of(net_graph, Option_UtxoLookupZ.none(), logger);
+        RoutingMessageHandler routing_msg_handler;
+        if (use_p2p_graph_sync)
+            routing_msg_handler = graph_msg_handler.as_RoutingMessageHandler();
+        else
+            routing_msg_handler = ignoring_handler.as_RoutingMessageHandler();
         this.peer_manager = PeerManager.of(channel_manager.as_ChannelMessageHandler(),
-                ignoring_handler.as_RoutingMessageHandler(), ignoring_handler.as_OnionMessageHandler(),
+                routing_msg_handler, ignoring_handler.as_OnionMessageHandler(),
                 (int)(System.currentTimeMillis() / 1000), this.entropy_source.get_secure_random_bytes(),
                 logger, ignoring_handler.as_CustomMessageHandler(), this.node_signer);
 
@@ -292,9 +297,9 @@ public class ChannelManagerConstructor {
 
         GossipSync gossip_sync;
         if (use_p2p_graph_sync)
-            gossip_sync = GossipSync.none();
-        else
             gossip_sync = GossipSync.p2_p(graph_msg_handler);
+        else
+            gossip_sync = GossipSync.none();
 
         Option_WriteableScoreZ writeable_score = Option_WriteableScoreZ.some(scorer.as_WriteableScore());
 
index bacc1d12fa8baa46c7a7d166fa825d822c4ee677..d0acc48171541c95fe719275e826d37fab550dab 100644 (file)
@@ -3512,6 +3512,10 @@ public class bindings {
        public static native long COption_ScalarZ_none();
        // void COption_ScalarZ_free(struct LDKCOption_ScalarZ _res);
        public static native void COption_ScalarZ_free(long _res);
+       // uint64_t COption_ScalarZ_clone_ptr(LDKCOption_ScalarZ *NONNULL_PTR arg);
+       public static native long COption_ScalarZ_clone_ptr(long arg);
+       // struct LDKCOption_ScalarZ COption_ScalarZ_clone(const struct LDKCOption_ScalarZ *NONNULL_PTR orig);
+       public static native long COption_ScalarZ_clone(long orig);
        // struct LDKCResult_SharedSecretNoneZ CResult_SharedSecretNoneZ_ok(struct LDKThirtyTwoBytes o);
        public static native long CResult_SharedSecretNoneZ_ok(byte[] o);
        // struct LDKCResult_SharedSecretNoneZ CResult_SharedSecretNoneZ_err(void);
index 72bdae5a8e7c721d2917f73a5cba93bcebc6356e..84c36931fe6173a951df1d2af6256f498732bc39 100644 (file)
@@ -91,7 +91,7 @@ public class BackgroundProcessor extends CommonBase {
         * [`NetworkGraph::write`]: lightning::routing::gossip::NetworkGraph#impl-Writeable
         */
        public static BackgroundProcessor start(org.ldk.structs.Persister persister, org.ldk.structs.EventHandler event_handler, org.ldk.structs.ChainMonitor chain_monitor, org.ldk.structs.ChannelManager channel_manager, org.ldk.structs.GossipSync gossip_sync, org.ldk.structs.PeerManager peer_manager, org.ldk.structs.Logger logger, org.ldk.structs.Option_WriteableScoreZ scorer) {
-               long ret = bindings.BackgroundProcessor_start(persister == null ? 0 : persister.ptr, event_handler == null ? 0 : event_handler.ptr, chain_monitor == null ? 0 : chain_monitor.ptr, channel_manager == null ? 0 : channel_manager.ptr, gossip_sync.ptr, peer_manager == null ? 0 : peer_manager.ptr, logger == null ? 0 : logger.ptr, scorer.ptr);
+               long ret = bindings.BackgroundProcessor_start(persister.ptr, event_handler.ptr, chain_monitor == null ? 0 : chain_monitor.ptr, channel_manager == null ? 0 : channel_manager.ptr, gossip_sync.ptr, peer_manager == null ? 0 : peer_manager.ptr, logger.ptr, scorer.ptr);
                Reference.reachabilityFence(persister);
                Reference.reachabilityFence(event_handler);
                Reference.reachabilityFence(chain_monitor);
index 7a7999d038944f0ac29350a81f7193db4b2ec2dc..27a7a0e75a3a67f3548ceab023e3892c82eb9a90 100644 (file)
@@ -75,7 +75,7 @@ public class BlindedPath extends CommonBase {
         * Errors if less than two hops are provided or if `node_pk`(s) are invalid.
         */
        public static Result_BlindedPathNoneZ new_for_message(byte[][] node_pks, org.ldk.structs.EntropySource entropy_source) {
-               long ret = bindings.BlindedPath_new_for_message(node_pks != null ? Arrays.stream(node_pks).map(node_pks_conv_8 -> InternalUtils.check_arr_len(node_pks_conv_8, 33)).toArray(byte[][]::new) : null, entropy_source == null ? 0 : entropy_source.ptr);
+               long ret = bindings.BlindedPath_new_for_message(node_pks != null ? Arrays.stream(node_pks).map(node_pks_conv_8 -> InternalUtils.check_arr_len(node_pks_conv_8, 33)).toArray(byte[][]::new) : null, entropy_source.ptr);
                Reference.reachabilityFence(node_pks);
                Reference.reachabilityFence(entropy_source);
                if (ret >= 0 && ret <= 4096) { return null; }
index 52f04d5f48d0e6f8fc6a86d6be45eed24fbee59f..d816d8c43842ea06c4795c56fc4b6fbc7b448c95 100644 (file)
@@ -142,7 +142,7 @@ public class BuiltCommitmentTransaction extends CommonBase {
         * Signs the holder commitment transaction because we are about to broadcast it.
         */
        public byte[] sign_holder_commitment(byte[] funding_key, byte[] funding_redeemscript, long channel_value_satoshis, org.ldk.structs.EntropySource entropy_source) {
-               byte[] ret = bindings.BuiltCommitmentTransaction_sign_holder_commitment(this.ptr, InternalUtils.check_arr_len(funding_key, 32), funding_redeemscript, channel_value_satoshis, entropy_source == null ? 0 : entropy_source.ptr);
+               byte[] ret = bindings.BuiltCommitmentTransaction_sign_holder_commitment(this.ptr, InternalUtils.check_arr_len(funding_key, 32), funding_redeemscript, channel_value_satoshis, entropy_source.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(funding_key);
                Reference.reachabilityFence(funding_redeemscript);
index 9c83ff243ea5b77c52a8edb8ac0f6c602356133c..e7bfc524fe5fc91c3c15a37d0649bc072152ec56 100644 (file)
@@ -45,7 +45,7 @@ public class ChainMonitor extends CommonBase {
         * transactions relevant to the watched channels.
         */
        public static ChainMonitor of(org.ldk.structs.Option_FilterZ chain_source, org.ldk.structs.BroadcasterInterface broadcaster, org.ldk.structs.Logger logger, org.ldk.structs.FeeEstimator feeest, org.ldk.structs.Persist persister) {
-               long 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);
+               long ret = bindings.ChainMonitor_new(chain_source.ptr, broadcaster.ptr, logger.ptr, feeest.ptr, persister.ptr);
                Reference.reachabilityFence(chain_source);
                Reference.reachabilityFence(broadcaster);
                Reference.reachabilityFence(logger);
index dd34eb87ba0fee76d55749092c825019f64f6977..14f4b1e65ac543fc445d2c76a34e8401d86effe9 100644 (file)
@@ -89,7 +89,7 @@ public class ChannelManager extends CommonBase {
         * [`params.best_block.block_hash`]: chain::BestBlock::block_hash
         */
        public static ChannelManager of(org.ldk.structs.FeeEstimator fee_est, org.ldk.structs.Watch chain_monitor, org.ldk.structs.BroadcasterInterface tx_broadcaster, org.ldk.structs.Router router, org.ldk.structs.Logger logger, org.ldk.structs.EntropySource entropy_source, org.ldk.structs.NodeSigner node_signer, org.ldk.structs.SignerProvider signer_provider, org.ldk.structs.UserConfig config, org.ldk.structs.ChainParameters params) {
-               long 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, router == null ? 0 : router.ptr, logger == null ? 0 : logger.ptr, entropy_source == null ? 0 : entropy_source.ptr, node_signer == null ? 0 : node_signer.ptr, signer_provider == null ? 0 : signer_provider.ptr, config == null ? 0 : config.ptr, params == null ? 0 : params.ptr);
+               long ret = bindings.ChannelManager_new(fee_est.ptr, chain_monitor.ptr, tx_broadcaster.ptr, router.ptr, logger.ptr, entropy_source.ptr, node_signer.ptr, signer_provider.ptr, config == null ? 0 : config.ptr, params == null ? 0 : params.ptr);
                Reference.reachabilityFence(fee_est);
                Reference.reachabilityFence(chain_monitor);
                Reference.reachabilityFence(tx_broadcaster);
index d542693e1cc7735a95391c4eba4e136e978d2618..95703760703acfa5fad61a9b2ff879004aadc7ef 100644 (file)
@@ -67,7 +67,7 @@ public class ChannelManagerReadArgs extends CommonBase {
         * A cryptographically secure source of entropy.
         */
        public void set_entropy_source(org.ldk.structs.EntropySource val) {
-               bindings.ChannelManagerReadArgs_set_entropy_source(this.ptr, val == null ? 0 : val.ptr);
+               bindings.ChannelManagerReadArgs_set_entropy_source(this.ptr, val.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(val);
                if (this != null) { this.ptrs_to.add(val); };
@@ -89,7 +89,7 @@ public class ChannelManagerReadArgs extends CommonBase {
         * A signer that is able to perform node-scoped cryptographic operations.
         */
        public void set_node_signer(org.ldk.structs.NodeSigner val) {
-               bindings.ChannelManagerReadArgs_set_node_signer(this.ptr, val == null ? 0 : val.ptr);
+               bindings.ChannelManagerReadArgs_set_node_signer(this.ptr, val.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(val);
                if (this != null) { this.ptrs_to.add(val); };
@@ -115,7 +115,7 @@ public class ChannelManagerReadArgs extends CommonBase {
         * signing data.
         */
        public void set_signer_provider(org.ldk.structs.SignerProvider val) {
-               bindings.ChannelManagerReadArgs_set_signer_provider(this.ptr, val == null ? 0 : val.ptr);
+               bindings.ChannelManagerReadArgs_set_signer_provider(this.ptr, val.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(val);
                if (this != null) { this.ptrs_to.add(val); };
@@ -141,7 +141,7 @@ public class ChannelManagerReadArgs extends CommonBase {
         * No calls to the FeeEstimator will be made during deserialization.
         */
        public void set_fee_estimator(org.ldk.structs.FeeEstimator val) {
-               bindings.ChannelManagerReadArgs_set_fee_estimator(this.ptr, val == null ? 0 : val.ptr);
+               bindings.ChannelManagerReadArgs_set_fee_estimator(this.ptr, val.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(val);
                if (this != null) { this.ptrs_to.add(val); };
@@ -171,7 +171,7 @@ public class ChannelManagerReadArgs extends CommonBase {
         * chain::Watch after deserializing this ChannelManager.
         */
        public void set_chain_monitor(org.ldk.structs.Watch val) {
-               bindings.ChannelManagerReadArgs_set_chain_monitor(this.ptr, val == null ? 0 : val.ptr);
+               bindings.ChannelManagerReadArgs_set_chain_monitor(this.ptr, val.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(val);
                if (this != null) { this.ptrs_to.add(val); };
@@ -197,7 +197,7 @@ public class ChannelManagerReadArgs extends CommonBase {
         * force-closed during deserialization.
         */
        public void set_tx_broadcaster(org.ldk.structs.BroadcasterInterface val) {
-               bindings.ChannelManagerReadArgs_set_tx_broadcaster(this.ptr, val == null ? 0 : val.ptr);
+               bindings.ChannelManagerReadArgs_set_tx_broadcaster(this.ptr, val.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(val);
                if (this != null) { this.ptrs_to.add(val); };
@@ -225,7 +225,7 @@ public class ChannelManagerReadArgs extends CommonBase {
         * No calls to the router will be made during deserialization.
         */
        public void set_router(org.ldk.structs.Router val) {
-               bindings.ChannelManagerReadArgs_set_router(this.ptr, val == null ? 0 : val.ptr);
+               bindings.ChannelManagerReadArgs_set_router(this.ptr, val.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(val);
                if (this != null) { this.ptrs_to.add(val); };
@@ -249,7 +249,7 @@ public class ChannelManagerReadArgs extends CommonBase {
         * deserialization.
         */
        public void set_logger(org.ldk.structs.Logger val) {
-               bindings.ChannelManagerReadArgs_set_logger(this.ptr, val == null ? 0 : val.ptr);
+               bindings.ChannelManagerReadArgs_set_logger(this.ptr, val.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(val);
                if (this != null) { this.ptrs_to.add(val); };
@@ -285,7 +285,7 @@ public class ChannelManagerReadArgs extends CommonBase {
         * populate a HashMap directly from C.
         */
        public static ChannelManagerReadArgs of(org.ldk.structs.EntropySource entropy_source, org.ldk.structs.NodeSigner node_signer, org.ldk.structs.SignerProvider signer_provider, org.ldk.structs.FeeEstimator fee_estimator, org.ldk.structs.Watch chain_monitor, org.ldk.structs.BroadcasterInterface tx_broadcaster, org.ldk.structs.Router router, org.ldk.structs.Logger logger, org.ldk.structs.UserConfig default_config, ChannelMonitor[] channel_monitors) {
-               long ret = bindings.ChannelManagerReadArgs_new(entropy_source == null ? 0 : entropy_source.ptr, node_signer == null ? 0 : node_signer.ptr, signer_provider == null ? 0 : signer_provider.ptr, fee_estimator == null ? 0 : fee_estimator.ptr, chain_monitor == null ? 0 : chain_monitor.ptr, tx_broadcaster == null ? 0 : tx_broadcaster.ptr, router == null ? 0 : router.ptr, logger == null ? 0 : logger.ptr, default_config == null ? 0 : default_config.ptr, channel_monitors != null ? Arrays.stream(channel_monitors).mapToLong(channel_monitors_conv_16 -> channel_monitors_conv_16 == null ? 0 : channel_monitors_conv_16.ptr).toArray() : null);
+               long ret = bindings.ChannelManagerReadArgs_new(entropy_source.ptr, node_signer.ptr, signer_provider.ptr, fee_estimator.ptr, chain_monitor.ptr, tx_broadcaster.ptr, router.ptr, logger.ptr, default_config == null ? 0 : default_config.ptr, channel_monitors != null ? Arrays.stream(channel_monitors).mapToLong(channel_monitors_conv_16 -> channel_monitors_conv_16 == null ? 0 : channel_monitors_conv_16.ptr).toArray() : null);
                Reference.reachabilityFence(entropy_source);
                Reference.reachabilityFence(node_signer);
                Reference.reachabilityFence(signer_provider);
index 2f05f3c9d5872927bd17fe2d1d199364fcc92135..a505f8bd22548d6e1c123bcbc57871826ca598f9 100644 (file)
@@ -69,7 +69,7 @@ public class ChannelMonitor extends CommonBase {
         * panics if the given update is not the next update by update_id.
         */
        public Result_NoneNoneZ update_monitor(org.ldk.structs.ChannelMonitorUpdate updates, org.ldk.structs.BroadcasterInterface broadcaster, org.ldk.structs.FeeEstimator fee_estimator, org.ldk.structs.Logger logger) {
-               long ret = bindings.ChannelMonitor_update_monitor(this.ptr, updates == null ? 0 : updates.ptr, broadcaster == null ? 0 : broadcaster.ptr, fee_estimator == null ? 0 : fee_estimator.ptr, logger == null ? 0 : logger.ptr);
+               long ret = bindings.ChannelMonitor_update_monitor(this.ptr, updates == null ? 0 : updates.ptr, broadcaster.ptr, fee_estimator.ptr, logger.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(updates);
                Reference.reachabilityFence(broadcaster);
@@ -130,7 +130,7 @@ public class ChannelMonitor extends CommonBase {
         * have been registered.
         */
        public void load_outputs_to_watch(org.ldk.structs.Filter filter) {
-               bindings.ChannelMonitor_load_outputs_to_watch(this.ptr, filter == null ? 0 : filter.ptr);
+               bindings.ChannelMonitor_load_outputs_to_watch(this.ptr, filter.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(filter);
                if (this != null) { this.ptrs_to.add(filter); };
@@ -211,7 +211,7 @@ public class ChannelMonitor extends CommonBase {
         * [`ChannelMonitorUpdateStatus::PermanentFailure`]: super::ChannelMonitorUpdateStatus::PermanentFailure
         */
        public byte[][] get_latest_holder_commitment_txn(org.ldk.structs.Logger logger) {
-               byte[][] ret = bindings.ChannelMonitor_get_latest_holder_commitment_txn(this.ptr, logger == null ? 0 : logger.ptr);
+               byte[][] ret = bindings.ChannelMonitor_get_latest_holder_commitment_txn(this.ptr, logger.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(logger);
                if (this != null) { this.ptrs_to.add(logger); };
@@ -232,7 +232,7 @@ public class ChannelMonitor extends CommonBase {
         * [`get_outputs_to_watch`]: #method.get_outputs_to_watch
         */
        public TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ[] block_connected(byte[] header, TwoTuple_usizeTransactionZ[] txdata, int height, org.ldk.structs.BroadcasterInterface broadcaster, org.ldk.structs.FeeEstimator fee_estimator, org.ldk.structs.Logger logger) {
-               long[] ret = bindings.ChannelMonitor_block_connected(this.ptr, InternalUtils.check_arr_len(header, 80), txdata != null ? Arrays.stream(txdata).mapToLong(txdata_conv_28 -> txdata_conv_28 != null ? txdata_conv_28.ptr : 0).toArray() : null, height, broadcaster == null ? 0 : broadcaster.ptr, fee_estimator == null ? 0 : fee_estimator.ptr, logger == null ? 0 : logger.ptr);
+               long[] ret = bindings.ChannelMonitor_block_connected(this.ptr, InternalUtils.check_arr_len(header, 80), txdata != null ? Arrays.stream(txdata).mapToLong(txdata_conv_28 -> txdata_conv_28 != null ? txdata_conv_28.ptr : 0).toArray() : null, height, broadcaster.ptr, fee_estimator.ptr, logger.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(header);
                Reference.reachabilityFence(txdata);
@@ -259,7 +259,7 @@ public class ChannelMonitor extends CommonBase {
         * appropriately.
         */
        public void block_disconnected(byte[] header, int height, org.ldk.structs.BroadcasterInterface broadcaster, org.ldk.structs.FeeEstimator fee_estimator, org.ldk.structs.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);
+               bindings.ChannelMonitor_block_disconnected(this.ptr, InternalUtils.check_arr_len(header, 80), height, broadcaster.ptr, fee_estimator.ptr, logger.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(header);
                Reference.reachabilityFence(height);
@@ -281,7 +281,7 @@ public class ChannelMonitor extends CommonBase {
         * [`block_connected`]: Self::block_connected
         */
        public TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ[] transactions_confirmed(byte[] header, TwoTuple_usizeTransactionZ[] txdata, int height, org.ldk.structs.BroadcasterInterface broadcaster, org.ldk.structs.FeeEstimator fee_estimator, org.ldk.structs.Logger logger) {
-               long[] ret = bindings.ChannelMonitor_transactions_confirmed(this.ptr, InternalUtils.check_arr_len(header, 80), txdata != null ? Arrays.stream(txdata).mapToLong(txdata_conv_28 -> txdata_conv_28 != null ? txdata_conv_28.ptr : 0).toArray() : null, height, broadcaster == null ? 0 : broadcaster.ptr, fee_estimator == null ? 0 : fee_estimator.ptr, logger == null ? 0 : logger.ptr);
+               long[] ret = bindings.ChannelMonitor_transactions_confirmed(this.ptr, InternalUtils.check_arr_len(header, 80), txdata != null ? Arrays.stream(txdata).mapToLong(txdata_conv_28 -> txdata_conv_28 != null ? txdata_conv_28.ptr : 0).toArray() : null, height, broadcaster.ptr, fee_estimator.ptr, logger.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(header);
                Reference.reachabilityFence(txdata);
@@ -312,7 +312,7 @@ public class ChannelMonitor extends CommonBase {
         * [`block_disconnected`]: Self::block_disconnected
         */
        public void transaction_unconfirmed(byte[] txid, org.ldk.structs.BroadcasterInterface broadcaster, org.ldk.structs.FeeEstimator fee_estimator, org.ldk.structs.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);
+               bindings.ChannelMonitor_transaction_unconfirmed(this.ptr, InternalUtils.check_arr_len(txid, 32), broadcaster.ptr, fee_estimator.ptr, logger.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(txid);
                Reference.reachabilityFence(broadcaster);
@@ -333,7 +333,7 @@ public class ChannelMonitor extends CommonBase {
         * [`block_connected`]: Self::block_connected
         */
        public TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ[] best_block_updated(byte[] header, int height, org.ldk.structs.BroadcasterInterface broadcaster, org.ldk.structs.FeeEstimator fee_estimator, org.ldk.structs.Logger logger) {
-               long[] 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);
+               long[] ret = bindings.ChannelMonitor_best_block_updated(this.ptr, InternalUtils.check_arr_len(header, 80), height, broadcaster.ptr, fee_estimator.ptr, logger.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(header);
                Reference.reachabilityFence(height);
@@ -392,7 +392,7 @@ public class ChannelMonitor extends CommonBase {
         * connections, like on mobile.
         */
        public void rebroadcast_pending_claims(org.ldk.structs.BroadcasterInterface broadcaster, org.ldk.structs.FeeEstimator fee_estimator, org.ldk.structs.Logger logger) {
-               bindings.ChannelMonitor_rebroadcast_pending_claims(this.ptr, broadcaster == null ? 0 : broadcaster.ptr, fee_estimator == null ? 0 : fee_estimator.ptr, logger == null ? 0 : logger.ptr);
+               bindings.ChannelMonitor_rebroadcast_pending_claims(this.ptr, broadcaster.ptr, fee_estimator.ptr, logger.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(broadcaster);
                Reference.reachabilityFence(fee_estimator);
index 7425c2ebe65c4c4dfeb30a6c9ffd016fc7dfce3b..247de06e1614c244955ebfc47cb12fe900d81d2d 100644 (file)
@@ -95,7 +95,7 @@ public class CustomMessageHandler extends CommonBase {
         * to send.
         */
        public Result_NoneLightningErrorZ handle_custom_message(org.ldk.structs.Type msg, byte[] sender_node_id) {
-               long ret = bindings.CustomMessageHandler_handle_custom_message(this.ptr, msg == null ? 0 : msg.ptr, InternalUtils.check_arr_len(sender_node_id, 33));
+               long ret = bindings.CustomMessageHandler_handle_custom_message(this.ptr, msg.ptr, InternalUtils.check_arr_len(sender_node_id, 33));
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(msg);
                Reference.reachabilityFence(sender_node_id);
index 33d21a3007559cf6d703a5dd5a921b87b037572d..da87808f32e9bd4ac10b1309cc5c2b0eaecdd725 100644 (file)
@@ -79,7 +79,7 @@ public class CustomOnionMessageHandler extends CommonBase {
         * Called with the custom message that was received.
         */
        public void handle_custom_message(org.ldk.structs.CustomOnionMessageContents msg) {
-               bindings.CustomOnionMessageHandler_handle_custom_message(this.ptr, msg == null ? 0 : msg.ptr);
+               bindings.CustomOnionMessageHandler_handle_custom_message(this.ptr, msg.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(msg);
                if (this != null) { this.ptrs_to.add(msg); };
index 3f4919616c2f15a8abdd904d7c74dd189da6be65..aa5dcaeafa74ccd20a40a85b94ffe3cc91b2f4c2 100644 (file)
@@ -24,7 +24,7 @@ public class DefaultRouter extends CommonBase {
         * Creates a new router.
         */
        public static DefaultRouter of(org.ldk.structs.NetworkGraph network_graph, org.ldk.structs.Logger logger, byte[] random_seed_bytes, org.ldk.structs.LockableScore scorer) {
-               long ret = bindings.DefaultRouter_new(network_graph == null ? 0 : network_graph.ptr, logger == null ? 0 : logger.ptr, InternalUtils.check_arr_len(random_seed_bytes, 32), scorer == null ? 0 : scorer.ptr);
+               long ret = bindings.DefaultRouter_new(network_graph == null ? 0 : network_graph.ptr, logger.ptr, InternalUtils.check_arr_len(random_seed_bytes, 32), scorer.ptr);
                Reference.reachabilityFence(network_graph);
                Reference.reachabilityFence(logger);
                Reference.reachabilityFence(random_seed_bytes);
index db707f514b0df4da3a4718b487bd18973ec05640..a46ddd2ca1c8eb6ec4d8532a2f7aa210ac1a64f4 100644 (file)
@@ -98,7 +98,7 @@ public class EventsProvider extends CommonBase {
         * See the trait-level documentation for requirements.
         */
        public void process_pending_events(org.ldk.structs.EventHandler handler) {
-               bindings.EventsProvider_process_pending_events(this.ptr, handler == null ? 0 : handler.ptr);
+               bindings.EventsProvider_process_pending_events(this.ptr, handler.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(handler);
                if (this != null) { this.ptrs_to.add(handler); };
index 118a806bad299ab2e7390b2283439fe7530547d7..f80fb3a8dd8649dfb5a42d5f0881f3256cd5bc83 100644 (file)
@@ -57,7 +57,7 @@ public class FilesystemPersister extends CommonBase {
         * Read `ChannelMonitor`s from disk.
         */
        public Result_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ read_channelmonitors(org.ldk.structs.EntropySource entropy_source, org.ldk.structs.SignerProvider signer_provider) {
-               long ret = bindings.FilesystemPersister_read_channelmonitors(this.ptr, entropy_source == null ? 0 : entropy_source.ptr, signer_provider == null ? 0 : signer_provider.ptr);
+               long ret = bindings.FilesystemPersister_read_channelmonitors(this.ptr, entropy_source.ptr, signer_provider.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(entropy_source);
                Reference.reachabilityFence(signer_provider);
index 74c5a62a50adb33585bed1aba36530b262219602..8e7b97fbe5de8ee1cb5bf35e4e35a081c960639f 100644 (file)
@@ -45,7 +45,7 @@ public class Future extends CommonBase {
         * completed, the callback will be called immediately.
         */
        public void register_callback_fn(org.ldk.structs.FutureCallback callback) {
-               bindings.Future_register_callback_fn(this.ptr, callback == null ? 0 : callback.ptr);
+               bindings.Future_register_callback_fn(this.ptr, callback.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(callback);
                if (this != null) { this.ptrs_to.add(callback); };
index 5afb560503a00633b315e439fd9627dbddbaf5c8..d1761eb0c50ef3dff3d0716a1168f2e093b84acd 100644 (file)
@@ -373,7 +373,7 @@ public class InMemorySigner extends CommonBase {
         * Read a InMemorySigner from a byte array, created by InMemorySigner_write
         */
        public static Result_InMemorySignerDecodeErrorZ read(byte[] ser, org.ldk.structs.EntropySource arg) {
-               long ret = bindings.InMemorySigner_read(ser, arg == null ? 0 : arg.ptr);
+               long ret = bindings.InMemorySigner_read(ser, arg.ptr);
                Reference.reachabilityFence(ser);
                Reference.reachabilityFence(arg);
                if (ret >= 0 && ret <= 4096) { return null; }
index 206b6e54a021396999e048105ae5034b9de23311..a8cc6788bd2e48d7c11af3d0856bea5ba51e9410 100644 (file)
@@ -56,7 +56,7 @@ public class LockableScore extends CommonBase {
                        @Override public long lock() {
                                Score ret = arg.lock();
                                Reference.reachabilityFence(arg);
-                               long result = ret == null ? 0 : ret.ptr;
+                               long result = ret.ptr;
                                if (impl_holder.held != null) { impl_holder.held.ptrs_to.add(ret); };
                                return result;
                        }
index 20d74af36dd5fd3c5c19cf1e80214b61f52f60c1..e2d88b4afa648067e5a73cfa48c71a8b238972fb 100644 (file)
@@ -42,7 +42,7 @@ public class MessageHandler extends CommonBase {
         * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
         */
        public void set_chan_handler(org.ldk.structs.ChannelMessageHandler val) {
-               bindings.MessageHandler_set_chan_handler(this.ptr, val == null ? 0 : val.ptr);
+               bindings.MessageHandler_set_chan_handler(this.ptr, val.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(val);
                if (this != null) { this.ptrs_to.add(val); };
@@ -70,7 +70,7 @@ public class MessageHandler extends CommonBase {
         * [`P2PGossipSync`]: crate::routing::gossip::P2PGossipSync
         */
        public void set_route_handler(org.ldk.structs.RoutingMessageHandler val) {
-               bindings.MessageHandler_set_route_handler(this.ptr, val == null ? 0 : val.ptr);
+               bindings.MessageHandler_set_route_handler(this.ptr, val.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(val);
                if (this != null) { this.ptrs_to.add(val); };
@@ -94,7 +94,7 @@ public class MessageHandler extends CommonBase {
         * [`IgnoringMessageHandler`].
         */
        public void set_onion_message_handler(org.ldk.structs.OnionMessageHandler val) {
-               bindings.MessageHandler_set_onion_message_handler(this.ptr, val == null ? 0 : val.ptr);
+               bindings.MessageHandler_set_onion_message_handler(this.ptr, val.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(val);
                if (this != null) { this.ptrs_to.add(val); };
@@ -104,7 +104,7 @@ public class MessageHandler extends CommonBase {
         * Constructs a new MessageHandler given each field
         */
        public static MessageHandler of(org.ldk.structs.ChannelMessageHandler chan_handler_arg, org.ldk.structs.RoutingMessageHandler route_handler_arg, org.ldk.structs.OnionMessageHandler onion_message_handler_arg) {
-               long ret = bindings.MessageHandler_new(chan_handler_arg == null ? 0 : chan_handler_arg.ptr, route_handler_arg == null ? 0 : route_handler_arg.ptr, onion_message_handler_arg == null ? 0 : onion_message_handler_arg.ptr);
+               long ret = bindings.MessageHandler_new(chan_handler_arg.ptr, route_handler_arg.ptr, onion_message_handler_arg.ptr);
                Reference.reachabilityFence(chan_handler_arg);
                Reference.reachabilityFence(route_handler_arg);
                Reference.reachabilityFence(onion_message_handler_arg);
index 3a7f2bafda1727f9b91ea0b23d51372924107126..2f6ca6c641ab810ed5dd889df08bacfd9f1f7171 100644 (file)
@@ -59,7 +59,7 @@ public class MultiThreadedLockableScore extends CommonBase {
         * Creates a new [`MultiThreadedLockableScore`] given an underlying [`Score`].
         */
        public static MultiThreadedLockableScore of(org.ldk.structs.Score score) {
-               long ret = bindings.MultiThreadedLockableScore_new(score == null ? 0 : score.ptr);
+               long ret = bindings.MultiThreadedLockableScore_new(score.ptr);
                Reference.reachabilityFence(score);
                if (ret >= 0 && ret <= 4096) { return null; }
                org.ldk.structs.MultiThreadedLockableScore ret_hu_conv = null; if (ret < 0 || ret > 4096) { ret_hu_conv = new org.ldk.structs.MultiThreadedLockableScore(null, ret); }
index 42ebedb43d78eb982d91c998f988ce517709cee2..5ee9a791df5ec1c013be1ffa3025608c0f716a89 100644 (file)
@@ -44,7 +44,7 @@ public class NetworkGraph extends CommonBase {
         * Read a NetworkGraph from a byte array, created by NetworkGraph_write
         */
        public static Result_NetworkGraphDecodeErrorZ read(byte[] ser, org.ldk.structs.Logger arg) {
-               long ret = bindings.NetworkGraph_read(ser, arg == null ? 0 : arg.ptr);
+               long ret = bindings.NetworkGraph_read(ser, arg.ptr);
                Reference.reachabilityFence(ser);
                Reference.reachabilityFence(arg);
                if (ret >= 0 && ret <= 4096) { return null; }
@@ -57,7 +57,7 @@ public class NetworkGraph extends CommonBase {
         * Creates a new, empty, network graph.
         */
        public static NetworkGraph of(org.ldk.enums.Network network, org.ldk.structs.Logger logger) {
-               long ret = bindings.NetworkGraph_new(network, logger == null ? 0 : logger.ptr);
+               long ret = bindings.NetworkGraph_new(network, logger.ptr);
                Reference.reachabilityFence(network);
                Reference.reachabilityFence(logger);
                if (ret >= 0 && ret <= 4096) { return null; }
index f2aba0ee97faffbbfa935d1b787d5cffd98639b7..8bc1a7ed1f015ed5363f880530722896b45a1cca 100644 (file)
@@ -63,7 +63,7 @@ public class OnionMessageContents extends CommonBase {
         * Utility method to constructs a new Custom-variant OnionMessageContents
         */
        public static OnionMessageContents custom(org.ldk.structs.CustomOnionMessageContents a) {
-               long ret = bindings.OnionMessageContents_custom(a == null ? 0 : a.ptr);
+               long ret = bindings.OnionMessageContents_custom(a.ptr);
                Reference.reachabilityFence(a);
                if (ret >= 0 && ret <= 4096) { return null; }
                org.ldk.structs.OnionMessageContents ret_hu_conv = org.ldk.structs.OnionMessageContents.constr_from_ptr(ret);
index 2315e3bae777f1089bca3762fa0c3928cafd9cdf..26b85f0661f3e37008e6ec54c2aab638b70dc1e1 100644 (file)
@@ -97,7 +97,7 @@ public class OnionMessenger extends CommonBase {
         * their respective handlers.
         */
        public static OnionMessenger of(org.ldk.structs.EntropySource entropy_source, org.ldk.structs.NodeSigner node_signer, org.ldk.structs.Logger logger, org.ldk.structs.CustomOnionMessageHandler custom_handler) {
-               long ret = bindings.OnionMessenger_new(entropy_source == null ? 0 : entropy_source.ptr, node_signer == null ? 0 : node_signer.ptr, logger == null ? 0 : logger.ptr, custom_handler == null ? 0 : custom_handler.ptr);
+               long ret = bindings.OnionMessenger_new(entropy_source.ptr, node_signer.ptr, logger.ptr, custom_handler.ptr);
                Reference.reachabilityFence(entropy_source);
                Reference.reachabilityFence(node_signer);
                Reference.reachabilityFence(logger);
index a7254c11b12a522ba061dbca9c76f1c6d5a46cf4..e1a73abdcc48386d5025e1f6f9e3097e866a7d86 100644 (file)
@@ -55,7 +55,7 @@ public class Option_CustomOnionMessageContentsZ extends CommonBase {
         * Constructs a new COption_CustomOnionMessageContentsZ containing a crate::lightning::onion_message::packet::CustomOnionMessageContents
         */
        public static Option_CustomOnionMessageContentsZ some(org.ldk.structs.CustomOnionMessageContents o) {
-               long ret = bindings.COption_CustomOnionMessageContentsZ_some(o == null ? 0 : o.ptr);
+               long ret = bindings.COption_CustomOnionMessageContentsZ_some(o.ptr);
                Reference.reachabilityFence(o);
                if (ret >= 0 && ret <= 4096) { return null; }
                org.ldk.structs.Option_CustomOnionMessageContentsZ ret_hu_conv = org.ldk.structs.Option_CustomOnionMessageContentsZ.constr_from_ptr(ret);
index 279be2f20407482454fca3203082fa6afbd8607f..5c5a51ff5e6dbd73ab5c813b4ece055133721f12 100644 (file)
@@ -55,7 +55,7 @@ public class Option_FilterZ extends CommonBase {
         * Constructs a new COption_FilterZ containing a crate::lightning::chain::Filter
         */
        public static Option_FilterZ some(org.ldk.structs.Filter o) {
-               long ret = bindings.COption_FilterZ_some(o == null ? 0 : o.ptr);
+               long ret = bindings.COption_FilterZ_some(o.ptr);
                Reference.reachabilityFence(o);
                if (ret >= 0 && ret <= 4096) { return null; }
                org.ldk.structs.Option_FilterZ ret_hu_conv = org.ldk.structs.Option_FilterZ.constr_from_ptr(ret);
index eb553b93ecf136cdea082ec8d13d5cafc11867a0..78b28c876de1c4078c18260f4e8bac0455c131f2 100644 (file)
@@ -74,4 +74,23 @@ public class Option_ScalarZ extends CommonBase {
                return ret_hu_conv;
        }
 
+       long clone_ptr() {
+               long ret = bindings.COption_ScalarZ_clone_ptr(this.ptr);
+               Reference.reachabilityFence(this);
+               return ret;
+       }
+
+       /**
+        * Creates a new COption_ScalarZ which has the same data as `orig`
+        * but with all dynamically-allocated buffers duplicated in new buffers.
+        */
+       public Option_ScalarZ clone() {
+               long ret = bindings.COption_ScalarZ_clone(this.ptr);
+               Reference.reachabilityFence(this);
+               if (ret >= 0 && ret <= 4096) { return null; }
+               org.ldk.structs.Option_ScalarZ ret_hu_conv = org.ldk.structs.Option_ScalarZ.constr_from_ptr(ret);
+               if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(this); };
+               return ret_hu_conv;
+       }
+
 }
index e71c922411c8182c5d89719e5d77ffa8e7cf0555..fe1ec84680fdcae3b5290b4ec5ed95960d74935e 100644 (file)
@@ -55,7 +55,7 @@ public class Option_TypeZ extends CommonBase {
         * Constructs a new COption_TypeZ containing a crate::lightning::ln::wire::Type
         */
        public static Option_TypeZ some(org.ldk.structs.Type o) {
-               long ret = bindings.COption_TypeZ_some(o == null ? 0 : o.ptr);
+               long ret = bindings.COption_TypeZ_some(o.ptr);
                Reference.reachabilityFence(o);
                if (ret >= 0 && ret <= 4096) { return null; }
                org.ldk.structs.Option_TypeZ ret_hu_conv = org.ldk.structs.Option_TypeZ.constr_from_ptr(ret);
index 9326de4712d6c1e5c22438c19cc0dc6d37a38124..cad3befbc79cae85b3c9bb52da24ee67d2f579d4 100644 (file)
@@ -55,7 +55,7 @@ public class Option_UtxoLookupZ extends CommonBase {
         * Constructs a new COption_UtxoLookupZ containing a crate::lightning::routing::utxo::UtxoLookup
         */
        public static Option_UtxoLookupZ some(org.ldk.structs.UtxoLookup o) {
-               long ret = bindings.COption_UtxoLookupZ_some(o == null ? 0 : o.ptr);
+               long ret = bindings.COption_UtxoLookupZ_some(o.ptr);
                Reference.reachabilityFence(o);
                if (ret >= 0 && ret <= 4096) { return null; }
                org.ldk.structs.Option_UtxoLookupZ ret_hu_conv = org.ldk.structs.Option_UtxoLookupZ.constr_from_ptr(ret);
index 7ed1adf100d1f7835f830e86f4bbd6bdc660307a..08eb67c7cad6ffbeb05a587c0b3fa1bb27eec1f1 100644 (file)
@@ -55,7 +55,7 @@ public class Option_WriteableScoreZ extends CommonBase {
         * Constructs a new COption_WriteableScoreZ containing a crate::lightning::routing::scoring::WriteableScore
         */
        public static Option_WriteableScoreZ some(org.ldk.structs.WriteableScore o) {
-               long ret = bindings.COption_WriteableScoreZ_some(o == null ? 0 : o.ptr);
+               long ret = bindings.COption_WriteableScoreZ_some(o.ptr);
                Reference.reachabilityFence(o);
                if (ret >= 0 && ret <= 4096) { return null; }
                org.ldk.structs.Option_WriteableScoreZ ret_hu_conv = org.ldk.structs.Option_WriteableScoreZ.constr_from_ptr(ret);
index 0eb913815fe05314b5cdb009525e36e3619a5949..57544fdc719fac09cf70c9013c7b535c378632cf 100644 (file)
@@ -31,7 +31,7 @@ public class P2PGossipSync extends CommonBase {
         * correct, and the announcement is signed with channel owners' keys.
         */
        public static P2PGossipSync of(org.ldk.structs.NetworkGraph network_graph, org.ldk.structs.Option_UtxoLookupZ utxo_lookup, org.ldk.structs.Logger logger) {
-               long ret = bindings.P2PGossipSync_new(network_graph == null ? 0 : network_graph.ptr, utxo_lookup.ptr, logger == null ? 0 : logger.ptr);
+               long ret = bindings.P2PGossipSync_new(network_graph == null ? 0 : network_graph.ptr, utxo_lookup.ptr, logger.ptr);
                Reference.reachabilityFence(network_graph);
                Reference.reachabilityFence(utxo_lookup);
                Reference.reachabilityFence(logger);
index ce9d3159666f94ec8724a73c8153c1af3df4fe8c..5e9a79f89cae39b931f260b6a3963be7a1b380ac 100644 (file)
@@ -50,7 +50,7 @@ public class PeerManager extends CommonBase {
         * minute should suffice.
         */
        public static PeerManager of(ChannelMessageHandler message_handler_chan_handler_arg, RoutingMessageHandler message_handler_route_handler_arg, OnionMessageHandler message_handler_onion_message_handler_arg, int current_time, byte[] ephemeral_random_data, org.ldk.structs.Logger logger, org.ldk.structs.CustomMessageHandler custom_message_handler, org.ldk.structs.NodeSigner node_signer) {
-               long 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, message_handler_onion_message_handler_arg == null ? 0 : message_handler_onion_message_handler_arg.ptr), current_time, InternalUtils.check_arr_len(ephemeral_random_data, 32), logger == null ? 0 : logger.ptr, custom_message_handler == null ? 0 : custom_message_handler.ptr, node_signer == null ? 0 : node_signer.ptr);
+               long ret = bindings.PeerManager_new(bindings.MessageHandler_new(message_handler_chan_handler_arg.ptr, message_handler_route_handler_arg.ptr, message_handler_onion_message_handler_arg.ptr), current_time, InternalUtils.check_arr_len(ephemeral_random_data, 32), logger.ptr, custom_message_handler.ptr, node_signer.ptr);
                Reference.reachabilityFence(message_handler_chan_handler_arg);
                Reference.reachabilityFence(message_handler_route_handler_arg);
                Reference.reachabilityFence(message_handler_onion_message_handler_arg);
@@ -115,7 +115,7 @@ public class PeerManager extends CommonBase {
         * [`socket_disconnected`]: PeerManager::socket_disconnected
         */
        public Result_CVec_u8ZPeerHandleErrorZ new_outbound_connection(byte[] their_node_id, org.ldk.structs.SocketDescriptor descriptor, org.ldk.structs.Option_NetAddressZ remote_network_address) {
-               long ret = bindings.PeerManager_new_outbound_connection(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), descriptor == null ? 0 : descriptor.ptr, remote_network_address.ptr);
+               long ret = bindings.PeerManager_new_outbound_connection(this.ptr, InternalUtils.check_arr_len(their_node_id, 33), descriptor.ptr, remote_network_address.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(their_node_id);
                Reference.reachabilityFence(descriptor);
@@ -145,7 +145,7 @@ public class PeerManager extends CommonBase {
         * [`socket_disconnected`]: PeerManager::socket_disconnected
         */
        public Result_NonePeerHandleErrorZ new_inbound_connection(org.ldk.structs.SocketDescriptor descriptor, org.ldk.structs.Option_NetAddressZ remote_network_address) {
-               long ret = bindings.PeerManager_new_inbound_connection(this.ptr, descriptor == null ? 0 : descriptor.ptr, remote_network_address.ptr);
+               long ret = bindings.PeerManager_new_inbound_connection(this.ptr, descriptor.ptr, remote_network_address.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(descriptor);
                Reference.reachabilityFence(remote_network_address);
@@ -171,7 +171,7 @@ public class PeerManager extends CommonBase {
         * [`write_buffer_space_avail`]: PeerManager::write_buffer_space_avail
         */
        public Result_NonePeerHandleErrorZ write_buffer_space_avail(org.ldk.structs.SocketDescriptor descriptor) {
-               long ret = bindings.PeerManager_write_buffer_space_avail(this.ptr, descriptor == null ? 0 : descriptor.ptr);
+               long ret = bindings.PeerManager_write_buffer_space_avail(this.ptr, descriptor.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(descriptor);
                if (ret >= 0 && ret <= 4096) { return null; }
@@ -199,7 +199,7 @@ public class PeerManager extends CommonBase {
         * [`process_events`]: PeerManager::process_events
         */
        public Result_boolPeerHandleErrorZ read_event(org.ldk.structs.SocketDescriptor peer_descriptor, byte[] data) {
-               long ret = bindings.PeerManager_read_event(this.ptr, peer_descriptor == null ? 0 : peer_descriptor.ptr, data);
+               long ret = bindings.PeerManager_read_event(this.ptr, peer_descriptor.ptr, data);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(peer_descriptor);
                Reference.reachabilityFence(data);
@@ -236,7 +236,7 @@ public class PeerManager extends CommonBase {
         * Indicates that the given socket descriptor's connection is now closed.
         */
        public void socket_disconnected(org.ldk.structs.SocketDescriptor descriptor) {
-               bindings.PeerManager_socket_disconnected(this.ptr, descriptor == null ? 0 : descriptor.ptr);
+               bindings.PeerManager_socket_disconnected(this.ptr, descriptor.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(descriptor);
        }
index 3cdf7360d3957a82df5dec0de1826cf9444affd2..d735aa249efda015c14bf7c1eca665bac26930b9 100644 (file)
@@ -109,7 +109,7 @@ public class Persister extends CommonBase {
         * Persist the given [`WriteableScore`] to disk, returning an error if persistence failed.
         */
        public Result_NoneErrorZ persist_scorer(org.ldk.structs.WriteableScore scorer) {
-               long ret = bindings.Persister_persist_scorer(this.ptr, scorer == null ? 0 : scorer.ptr);
+               long ret = bindings.Persister_persist_scorer(this.ptr, scorer.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(scorer);
                if (ret >= 0 && ret <= 4096) { return null; }
index ecd6aafb856cf48762bf656d24904ce336aae467..db52ae427132951ca02be9558a733311368a2239 100644 (file)
@@ -60,7 +60,7 @@ public class ProbabilisticScorer extends CommonBase {
         * through a network graph.
         */
        public static ProbabilisticScorer of(org.ldk.structs.ProbabilisticScoringParameters params, org.ldk.structs.NetworkGraph network_graph, org.ldk.structs.Logger logger) {
-               long ret = bindings.ProbabilisticScorer_new(params == null ? 0 : params.ptr, network_graph == null ? 0 : network_graph.ptr, logger == null ? 0 : logger.ptr);
+               long ret = bindings.ProbabilisticScorer_new(params == null ? 0 : params.ptr, network_graph == null ? 0 : network_graph.ptr, logger.ptr);
                Reference.reachabilityFence(params);
                Reference.reachabilityFence(network_graph);
                Reference.reachabilityFence(logger);
@@ -211,7 +211,7 @@ public class ProbabilisticScorer extends CommonBase {
         * Read a ProbabilisticScorer from a byte array, created by ProbabilisticScorer_write
         */
        public static Result_ProbabilisticScorerDecodeErrorZ read(byte[] ser, org.ldk.structs.ProbabilisticScoringParameters arg_a, org.ldk.structs.NetworkGraph arg_b, org.ldk.structs.Logger arg_c) {
-               long ret = bindings.ProbabilisticScorer_read(ser, arg_a == null ? 0 : arg_a.ptr, arg_b == null ? 0 : arg_b.ptr, arg_c == null ? 0 : arg_c.ptr);
+               long ret = bindings.ProbabilisticScorer_read(ser, arg_a == null ? 0 : arg_a.ptr, arg_b == null ? 0 : arg_b.ptr, arg_c.ptr);
                Reference.reachabilityFence(ser);
                Reference.reachabilityFence(arg_a);
                Reference.reachabilityFence(arg_b);
index d9b85257633f46a0e62bd6c12f033c8e8851b7da..9af3bb6456b52e61e2bd8816d8750ef72797a5d7 100644 (file)
@@ -28,7 +28,7 @@ public class RapidGossipSync extends CommonBase {
         * Instantiate a new [`RapidGossipSync`] instance.
         */
        public static RapidGossipSync of(org.ldk.structs.NetworkGraph network_graph, org.ldk.structs.Logger logger) {
-               long ret = bindings.RapidGossipSync_new(network_graph == null ? 0 : network_graph.ptr, logger == null ? 0 : logger.ptr);
+               long ret = bindings.RapidGossipSync_new(network_graph == null ? 0 : network_graph.ptr, logger.ptr);
                Reference.reachabilityFence(network_graph);
                Reference.reachabilityFence(logger);
                if (ret >= 0 && ret <= 4096) { return null; }
index 5bc5b47370e7af2ddc4550c73f270c8fd958b628..b285d0c957a6445441889e327dd3c350a9510af9 100644 (file)
@@ -46,7 +46,7 @@ public class Result_NetworkGraphDecodeErrorZ extends CommonBase {
         * Creates a new CResult_NetworkGraphDecodeErrorZ in the success state.
         */
        public static Result_NetworkGraphDecodeErrorZ ok(Network o_network, Logger o_logger) {
-               long ret = bindings.CResult_NetworkGraphDecodeErrorZ_ok(bindings.NetworkGraph_new(o_network, o_logger == null ? 0 : o_logger.ptr));
+               long ret = bindings.CResult_NetworkGraphDecodeErrorZ_ok(bindings.NetworkGraph_new(o_network, o_logger.ptr));
                Reference.reachabilityFence(o_network);
                Reference.reachabilityFence(o_logger);
                if (ret >= 0 && ret <= 4096) { return null; }
index 3f13fb8c9584ac2f2672f1abaf02de1e5a355884..0ced81857064d884d5e7581755f200a550083a1d 100644 (file)
@@ -46,7 +46,7 @@ public class Result_ProbabilisticScorerDecodeErrorZ extends CommonBase {
         * Creates a new CResult_ProbabilisticScorerDecodeErrorZ in the success state.
         */
        public static Result_ProbabilisticScorerDecodeErrorZ ok(ProbabilisticScoringParameters o_params, NetworkGraph o_network_graph, Logger o_logger) {
-               long ret = bindings.CResult_ProbabilisticScorerDecodeErrorZ_ok(bindings.ProbabilisticScorer_new(o_params == null ? 0 : o_params.ptr, o_network_graph == null ? 0 : o_network_graph.ptr, o_logger == null ? 0 : o_logger.ptr));
+               long ret = bindings.CResult_ProbabilisticScorerDecodeErrorZ_ok(bindings.ProbabilisticScorer_new(o_params == null ? 0 : o_params.ptr, o_network_graph == null ? 0 : o_network_graph.ptr, o_logger.ptr));
                Reference.reachabilityFence(o_params);
                Reference.reachabilityFence(o_network_graph);
                Reference.reachabilityFence(o_logger);
index b3c4f4aa51a88e1b1ce8e1b745be83c1edb7f409..bad96df5735d3c3db43fe75b77ade52792bf532c 100644 (file)
@@ -46,7 +46,7 @@ public class Result_WriteableEcdsaChannelSignerDecodeErrorZ extends CommonBase {
         * Creates a new CResult_WriteableEcdsaChannelSignerDecodeErrorZ in the success state.
         */
        public static Result_WriteableEcdsaChannelSignerDecodeErrorZ ok(org.ldk.structs.WriteableEcdsaChannelSigner o) {
-               long ret = bindings.CResult_WriteableEcdsaChannelSignerDecodeErrorZ_ok(o == null ? 0 : o.ptr);
+               long ret = bindings.CResult_WriteableEcdsaChannelSignerDecodeErrorZ_ok(o.ptr);
                Reference.reachabilityFence(o);
                if (ret >= 0 && ret <= 4096) { return null; }
                Result_WriteableEcdsaChannelSignerDecodeErrorZ ret_hu_conv = Result_WriteableEcdsaChannelSignerDecodeErrorZ.constr_from_ptr(ret);
index ffc3dea9a577f5a4125f968f874410d1f6def9f3..c0dc28c713cab3225f0fdfbc0d8dc2e1e256b34a 100644 (file)
@@ -29,7 +29,7 @@ public class ScorerAccountingForInFlightHtlcs extends CommonBase {
         * Initialize a new `ScorerAccountingForInFlightHtlcs`.
         */
        public static ScorerAccountingForInFlightHtlcs of(org.ldk.structs.Score scorer, org.ldk.structs.InFlightHtlcs inflight_htlcs) {
-               long ret = bindings.ScorerAccountingForInFlightHtlcs_new(scorer == null ? 0 : scorer.ptr, inflight_htlcs == null ? 0 : inflight_htlcs.ptr);
+               long ret = bindings.ScorerAccountingForInFlightHtlcs_new(scorer.ptr, inflight_htlcs == null ? 0 : inflight_htlcs.ptr);
                Reference.reachabilityFence(scorer);
                Reference.reachabilityFence(inflight_htlcs);
                if (ret >= 0 && ret <= 4096) { return null; }
index 86a5cb7fd322d92a09dc50ee3f98ee7f8ea889dd..690e35c57c3f745f5240373a219b1dac2e6895cb 100644 (file)
@@ -100,7 +100,7 @@ public class SignerProvider extends CommonBase {
                        @Override public long derive_channel_signer(long channel_value_satoshis, byte[] channel_keys_id) {
                                WriteableEcdsaChannelSigner ret = arg.derive_channel_signer(channel_value_satoshis, channel_keys_id);
                                Reference.reachabilityFence(arg);
-                               long result = ret == null ? 0 : ret.clone_ptr();
+                               long result = ret.clone_ptr();
                                if (impl_holder.held != null) { impl_holder.held.ptrs_to.add(ret); };
                                return result;
                        }
index ae83aef96732a8d147b1e1d852190a6e205f69b3..181512a37d9bfdd0e3a0c444d8dc418687431731 100644 (file)
@@ -76,7 +76,7 @@ public class TrustedCommitmentTransaction extends CommonBase {
         * This function is only valid in the holder commitment context, it always uses EcdsaSighashType::All.
         */
        public Result_CVec_SignatureZNoneZ get_htlc_sigs(byte[] htlc_base_key, org.ldk.structs.DirectedChannelTransactionParameters channel_parameters, org.ldk.structs.EntropySource entropy_source) {
-               long ret = bindings.TrustedCommitmentTransaction_get_htlc_sigs(this.ptr, InternalUtils.check_arr_len(htlc_base_key, 32), channel_parameters == null ? 0 : channel_parameters.ptr, entropy_source == null ? 0 : entropy_source.ptr);
+               long ret = bindings.TrustedCommitmentTransaction_get_htlc_sigs(this.ptr, InternalUtils.check_arr_len(htlc_base_key, 32), channel_parameters == null ? 0 : channel_parameters.ptr, entropy_source.ptr);
                Reference.reachabilityFence(this);
                Reference.reachabilityFence(htlc_base_key);
                Reference.reachabilityFence(channel_parameters);
index 778492d163c928066f494201e579a3d7327282a9..e17ad1f163917feb6276fe2287ff2f88f725f698 100644 (file)
@@ -45,7 +45,7 @@ public class TwoTuple_BlockHashChannelManagerZ extends CommonBase {
         * Creates a new C2Tuple_BlockHashChannelManagerZ from the contained elements.
         */
        public static TwoTuple_BlockHashChannelManagerZ of(byte[] a, FeeEstimator b_fee_est, Watch b_chain_monitor, BroadcasterInterface b_tx_broadcaster, Router b_router, Logger b_logger, EntropySource b_entropy_source, NodeSigner b_node_signer, SignerProvider b_signer_provider, UserConfig b_config, ChainParameters b_params) {
-               long 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_router == null ? 0 : b_router.ptr, b_logger == null ? 0 : b_logger.ptr, b_entropy_source == null ? 0 : b_entropy_source.ptr, b_node_signer == null ? 0 : b_node_signer.ptr, b_signer_provider == null ? 0 : b_signer_provider.ptr, b_config == null ? 0 : b_config.ptr, b_params == null ? 0 : b_params.ptr));
+               long ret = bindings.C2Tuple_BlockHashChannelManagerZ_new(InternalUtils.check_arr_len(a, 32), bindings.ChannelManager_new(b_fee_est.ptr, b_chain_monitor.ptr, b_tx_broadcaster.ptr, b_router.ptr, b_logger.ptr, b_entropy_source.ptr, b_node_signer.ptr, b_signer_provider.ptr, b_config == null ? 0 : b_config.ptr, b_params == null ? 0 : b_params.ptr));
                Reference.reachabilityFence(a);
                Reference.reachabilityFence(b_fee_est);
                Reference.reachabilityFence(b_chain_monitor);
index f6326afc6e67c108cad84492485e5d562bf61613..49e053274eb6a6846171b3b86c4a9602bebba0ea 100644 (file)
@@ -64,7 +64,7 @@ public class TwoTuple_PublicKeyTypeZ extends CommonBase {
         * Creates a new C2Tuple_PublicKeyTypeZ from the contained elements.
         */
        public static TwoTuple_PublicKeyTypeZ of(byte[] a, org.ldk.structs.Type b) {
-               long ret = bindings.C2Tuple_PublicKeyTypeZ_new(InternalUtils.check_arr_len(a, 33), b == null ? 0 : b.ptr);
+               long ret = bindings.C2Tuple_PublicKeyTypeZ_new(InternalUtils.check_arr_len(a, 33), b.ptr);
                Reference.reachabilityFence(a);
                Reference.reachabilityFence(b);
                if (ret >= 0 && ret <= 4096) { return null; }
index 513b48b4191f11278915bf2a256aebadaa9fb610..0fc32fb5203f2c8038276c3b4c0434365b53b070 100644 (file)
@@ -116,7 +116,7 @@ public class UtilMethods {
         * Read a C2Tuple_BlockHashChannelMonitorZ from a byte array, created by C2Tuple_BlockHashChannelMonitorZ_write
         */
        public static Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ C2Tuple_BlockHashChannelMonitorZ_read(byte[] ser, org.ldk.structs.EntropySource arg_a, org.ldk.structs.SignerProvider arg_b) {
-               long ret = bindings.C2Tuple_BlockHashChannelMonitorZ_read(ser, arg_a == null ? 0 : arg_a.ptr, arg_b == null ? 0 : arg_b.ptr);
+               long ret = bindings.C2Tuple_BlockHashChannelMonitorZ_read(ser, arg_a.ptr, arg_b.ptr);
                Reference.reachabilityFence(ser);
                Reference.reachabilityFence(arg_a);
                Reference.reachabilityFence(arg_b);
@@ -145,7 +145,7 @@ public class UtilMethods {
         * Read a C2Tuple_BlockHashChannelManagerZ from a byte array, created by C2Tuple_BlockHashChannelManagerZ_write
         */
        public static Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ C2Tuple_BlockHashChannelManagerZ_read(byte[] ser, EntropySource arg_entropy_source, NodeSigner arg_node_signer, SignerProvider arg_signer_provider, FeeEstimator arg_fee_estimator, Watch arg_chain_monitor, BroadcasterInterface arg_tx_broadcaster, Router arg_router, Logger arg_logger, UserConfig arg_default_config, ChannelMonitor[] arg_channel_monitors) {
-               long ret = bindings.C2Tuple_BlockHashChannelManagerZ_read(ser, bindings.ChannelManagerReadArgs_new(arg_entropy_source == null ? 0 : arg_entropy_source.ptr, arg_node_signer == null ? 0 : arg_node_signer.ptr, arg_signer_provider == null ? 0 : arg_signer_provider.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_router == null ? 0 : arg_router.ptr, arg_logger == null ? 0 : arg_logger.ptr, arg_default_config == null ? 0 : arg_default_config.ptr, arg_channel_monitors != null ? Arrays.stream(arg_channel_monitors).mapToLong(arg_channel_monitors_conv_16 -> arg_channel_monitors_conv_16 == null ? 0 : arg_channel_monitors_conv_16.ptr).toArray() : null));
+               long ret = bindings.C2Tuple_BlockHashChannelManagerZ_read(ser, bindings.ChannelManagerReadArgs_new(arg_entropy_source.ptr, arg_node_signer.ptr, arg_signer_provider.ptr, arg_fee_estimator.ptr, arg_chain_monitor.ptr, arg_tx_broadcaster.ptr, arg_router.ptr, arg_logger.ptr, arg_default_config == null ? 0 : arg_default_config.ptr, arg_channel_monitors != null ? Arrays.stream(arg_channel_monitors).mapToLong(arg_channel_monitors_conv_16 -> arg_channel_monitors_conv_16 == null ? 0 : arg_channel_monitors_conv_16.ptr).toArray() : null));
                Reference.reachabilityFence(ser);
                Reference.reachabilityFence(arg_entropy_source);
                Reference.reachabilityFence(arg_node_signer);
@@ -190,7 +190,7 @@ public class UtilMethods {
         * [`NodeSigner::get_inbound_payment_key_material`]: crate::chain::keysinterface::NodeSigner::get_inbound_payment_key_material
         */
        public static Result_C2Tuple_PaymentHashPaymentSecretZNoneZ create(org.ldk.structs.ExpandedKey keys, org.ldk.structs.Option_u64Z min_value_msat, int invoice_expiry_delta_secs, org.ldk.structs.EntropySource entropy_source, long current_time, org.ldk.structs.Option_u16Z min_final_cltv_expiry_delta) {
-               long ret = bindings.create(keys == null ? 0 : keys.ptr, min_value_msat.ptr, invoice_expiry_delta_secs, entropy_source == null ? 0 : entropy_source.ptr, current_time, min_final_cltv_expiry_delta.ptr);
+               long ret = bindings.create(keys == null ? 0 : keys.ptr, min_value_msat.ptr, invoice_expiry_delta_secs, entropy_source.ptr, current_time, min_final_cltv_expiry_delta.ptr);
                Reference.reachabilityFence(keys);
                Reference.reachabilityFence(min_value_msat);
                Reference.reachabilityFence(invoice_expiry_delta_secs);
@@ -512,7 +512,7 @@ public class UtilMethods {
         * Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
         */
        public static Result_RouteLightningErrorZ find_route(byte[] our_node_pubkey, org.ldk.structs.RouteParameters route_params, org.ldk.structs.NetworkGraph network_graph, @Nullable ChannelDetails[] first_hops, org.ldk.structs.Logger logger, org.ldk.structs.Score scorer, byte[] random_seed_bytes) {
-               long ret = bindings.find_route(InternalUtils.check_arr_len(our_node_pubkey, 33), route_params == null ? 0 : route_params.ptr, network_graph == null ? 0 : network_graph.ptr, first_hops != null ? Arrays.stream(first_hops).mapToLong(first_hops_conv_16 -> first_hops_conv_16 == null ? 0 : first_hops_conv_16.ptr).toArray() : null, logger == null ? 0 : logger.ptr, scorer == null ? 0 : scorer.ptr, InternalUtils.check_arr_len(random_seed_bytes, 32));
+               long ret = bindings.find_route(InternalUtils.check_arr_len(our_node_pubkey, 33), route_params == null ? 0 : route_params.ptr, network_graph == null ? 0 : network_graph.ptr, first_hops != null ? Arrays.stream(first_hops).mapToLong(first_hops_conv_16 -> first_hops_conv_16 == null ? 0 : first_hops_conv_16.ptr).toArray() : null, logger.ptr, scorer.ptr, InternalUtils.check_arr_len(random_seed_bytes, 32));
                Reference.reachabilityFence(our_node_pubkey);
                Reference.reachabilityFence(route_params);
                Reference.reachabilityFence(network_graph);
@@ -537,7 +537,7 @@ public class UtilMethods {
         * Re-uses logic from `find_route`, so the restrictions described there also apply here.
         */
        public static Result_RouteLightningErrorZ build_route_from_hops(byte[] our_node_pubkey, byte[][] hops, org.ldk.structs.RouteParameters route_params, org.ldk.structs.NetworkGraph network_graph, org.ldk.structs.Logger logger, byte[] random_seed_bytes) {
-               long ret = bindings.build_route_from_hops(InternalUtils.check_arr_len(our_node_pubkey, 33), hops != null ? Arrays.stream(hops).map(hops_conv_8 -> InternalUtils.check_arr_len(hops_conv_8, 33)).toArray(byte[][]::new) : null, route_params == null ? 0 : route_params.ptr, network_graph == null ? 0 : network_graph.ptr, logger == null ? 0 : logger.ptr, InternalUtils.check_arr_len(random_seed_bytes, 32));
+               long ret = bindings.build_route_from_hops(InternalUtils.check_arr_len(our_node_pubkey, 33), hops != null ? Arrays.stream(hops).map(hops_conv_8 -> InternalUtils.check_arr_len(hops_conv_8, 33)).toArray(byte[][]::new) : null, route_params == null ? 0 : route_params.ptr, network_graph == null ? 0 : network_graph.ptr, logger.ptr, InternalUtils.check_arr_len(random_seed_bytes, 32));
                Reference.reachabilityFence(our_node_pubkey);
                Reference.reachabilityFence(hops);
                Reference.reachabilityFence(route_params);
@@ -741,7 +741,7 @@ public class UtilMethods {
         * Note that payment_hash (or a relevant inner pointer) may be NULL or all-0s to represent None
         */
        public static Result_InvoiceSignOrCreationErrorZ create_phantom_invoice(org.ldk.structs.Option_u64Z amt_msat, @Nullable byte[] payment_hash, java.lang.String description, int invoice_expiry_delta_secs, PhantomRouteHints[] phantom_route_hints, org.ldk.structs.EntropySource entropy_source, org.ldk.structs.NodeSigner node_signer, org.ldk.structs.Logger logger, org.ldk.enums.Currency network, org.ldk.structs.Option_u16Z min_final_cltv_expiry_delta, long duration_since_epoch) {
-               long ret = bindings.create_phantom_invoice(amt_msat.ptr, InternalUtils.check_arr_len(payment_hash, 32), description, invoice_expiry_delta_secs, phantom_route_hints != null ? Arrays.stream(phantom_route_hints).mapToLong(phantom_route_hints_conv_19 -> phantom_route_hints_conv_19 == null ? 0 : phantom_route_hints_conv_19.ptr).toArray() : null, entropy_source == null ? 0 : entropy_source.ptr, node_signer == null ? 0 : node_signer.ptr, logger == null ? 0 : logger.ptr, network, min_final_cltv_expiry_delta.ptr, duration_since_epoch);
+               long ret = bindings.create_phantom_invoice(amt_msat.ptr, InternalUtils.check_arr_len(payment_hash, 32), description, invoice_expiry_delta_secs, phantom_route_hints != null ? Arrays.stream(phantom_route_hints).mapToLong(phantom_route_hints_conv_19 -> phantom_route_hints_conv_19 == null ? 0 : phantom_route_hints_conv_19.ptr).toArray() : null, entropy_source.ptr, node_signer.ptr, logger.ptr, network, min_final_cltv_expiry_delta.ptr, duration_since_epoch);
                Reference.reachabilityFence(amt_msat);
                Reference.reachabilityFence(payment_hash);
                Reference.reachabilityFence(description);
@@ -805,7 +805,7 @@ public class UtilMethods {
         * Note that payment_hash (or a relevant inner pointer) may be NULL or all-0s to represent None
         */
        public static Result_InvoiceSignOrCreationErrorZ create_phantom_invoice_with_description_hash(org.ldk.structs.Option_u64Z amt_msat, @Nullable byte[] payment_hash, int invoice_expiry_delta_secs, org.ldk.structs.Sha256 description_hash, PhantomRouteHints[] phantom_route_hints, org.ldk.structs.EntropySource entropy_source, org.ldk.structs.NodeSigner node_signer, org.ldk.structs.Logger logger, org.ldk.enums.Currency network, org.ldk.structs.Option_u16Z min_final_cltv_expiry_delta, long duration_since_epoch) {
-               long ret = bindings.create_phantom_invoice_with_description_hash(amt_msat.ptr, InternalUtils.check_arr_len(payment_hash, 32), invoice_expiry_delta_secs, description_hash == null ? 0 : description_hash.ptr, phantom_route_hints != null ? Arrays.stream(phantom_route_hints).mapToLong(phantom_route_hints_conv_19 -> phantom_route_hints_conv_19 == null ? 0 : phantom_route_hints_conv_19.ptr).toArray() : null, entropy_source == null ? 0 : entropy_source.ptr, node_signer == null ? 0 : node_signer.ptr, logger == null ? 0 : logger.ptr, network, min_final_cltv_expiry_delta.ptr, duration_since_epoch);
+               long ret = bindings.create_phantom_invoice_with_description_hash(amt_msat.ptr, InternalUtils.check_arr_len(payment_hash, 32), invoice_expiry_delta_secs, description_hash == null ? 0 : description_hash.ptr, phantom_route_hints != null ? Arrays.stream(phantom_route_hints).mapToLong(phantom_route_hints_conv_19 -> phantom_route_hints_conv_19 == null ? 0 : phantom_route_hints_conv_19.ptr).toArray() : null, entropy_source.ptr, node_signer.ptr, logger.ptr, network, min_final_cltv_expiry_delta.ptr, duration_since_epoch);
                Reference.reachabilityFence(amt_msat);
                Reference.reachabilityFence(payment_hash);
                Reference.reachabilityFence(invoice_expiry_delta_secs);
@@ -847,7 +847,7 @@ public class UtilMethods {
         * [`MIN_FINAL_CLTV_EXPIRY_DETLA`]: lightning::ln::channelmanager::MIN_FINAL_CLTV_EXPIRY_DELTA
         */
        public static Result_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager(org.ldk.structs.ChannelManager channelmanager, org.ldk.structs.NodeSigner node_signer, org.ldk.structs.Logger logger, org.ldk.enums.Currency network, org.ldk.structs.Option_u64Z amt_msat, java.lang.String description, int invoice_expiry_delta_secs, org.ldk.structs.Option_u16Z min_final_cltv_expiry_delta) {
-               long ret = bindings.create_invoice_from_channelmanager(channelmanager == null ? 0 : channelmanager.ptr, node_signer == null ? 0 : node_signer.ptr, logger == null ? 0 : logger.ptr, network, amt_msat.ptr, description, invoice_expiry_delta_secs, min_final_cltv_expiry_delta.ptr);
+               long ret = bindings.create_invoice_from_channelmanager(channelmanager == null ? 0 : channelmanager.ptr, node_signer.ptr, logger.ptr, network, amt_msat.ptr, description, invoice_expiry_delta_secs, min_final_cltv_expiry_delta.ptr);
                Reference.reachabilityFence(channelmanager);
                Reference.reachabilityFence(node_signer);
                Reference.reachabilityFence(logger);
@@ -885,7 +885,7 @@ public class UtilMethods {
         * [`MIN_FINAL_CLTV_EXPIRY_DETLA`]: lightning::ln::channelmanager::MIN_FINAL_CLTV_EXPIRY_DELTA
         */
        public static Result_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager_with_description_hash(org.ldk.structs.ChannelManager channelmanager, org.ldk.structs.NodeSigner node_signer, org.ldk.structs.Logger logger, org.ldk.enums.Currency network, org.ldk.structs.Option_u64Z amt_msat, org.ldk.structs.Sha256 description_hash, int invoice_expiry_delta_secs, org.ldk.structs.Option_u16Z min_final_cltv_expiry_delta) {
-               long ret = bindings.create_invoice_from_channelmanager_with_description_hash(channelmanager == null ? 0 : channelmanager.ptr, node_signer == null ? 0 : node_signer.ptr, logger == null ? 0 : logger.ptr, network, amt_msat.ptr, description_hash == null ? 0 : description_hash.ptr, invoice_expiry_delta_secs, min_final_cltv_expiry_delta.ptr);
+               long ret = bindings.create_invoice_from_channelmanager_with_description_hash(channelmanager == null ? 0 : channelmanager.ptr, node_signer.ptr, logger.ptr, network, amt_msat.ptr, description_hash == null ? 0 : description_hash.ptr, invoice_expiry_delta_secs, min_final_cltv_expiry_delta.ptr);
                Reference.reachabilityFence(channelmanager);
                Reference.reachabilityFence(node_signer);
                Reference.reachabilityFence(logger);
@@ -911,7 +911,7 @@ public class UtilMethods {
         * available and the current time is supplied by the caller.
         */
        public static Result_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager_with_description_hash_and_duration_since_epoch(org.ldk.structs.ChannelManager channelmanager, org.ldk.structs.NodeSigner node_signer, org.ldk.structs.Logger logger, org.ldk.enums.Currency network, org.ldk.structs.Option_u64Z amt_msat, org.ldk.structs.Sha256 description_hash, long duration_since_epoch, int invoice_expiry_delta_secs, org.ldk.structs.Option_u16Z min_final_cltv_expiry_delta) {
-               long ret = bindings.create_invoice_from_channelmanager_with_description_hash_and_duration_since_epoch(channelmanager == null ? 0 : channelmanager.ptr, node_signer == null ? 0 : node_signer.ptr, logger == null ? 0 : logger.ptr, network, amt_msat.ptr, description_hash == null ? 0 : description_hash.ptr, duration_since_epoch, invoice_expiry_delta_secs, min_final_cltv_expiry_delta.ptr);
+               long ret = bindings.create_invoice_from_channelmanager_with_description_hash_and_duration_since_epoch(channelmanager == null ? 0 : channelmanager.ptr, node_signer.ptr, logger.ptr, network, amt_msat.ptr, description_hash == null ? 0 : description_hash.ptr, duration_since_epoch, invoice_expiry_delta_secs, min_final_cltv_expiry_delta.ptr);
                Reference.reachabilityFence(channelmanager);
                Reference.reachabilityFence(node_signer);
                Reference.reachabilityFence(logger);
@@ -938,7 +938,7 @@ public class UtilMethods {
         * available and the current time is supplied by the caller.
         */
        public static Result_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager_and_duration_since_epoch(org.ldk.structs.ChannelManager channelmanager, org.ldk.structs.NodeSigner node_signer, org.ldk.structs.Logger logger, org.ldk.enums.Currency network, org.ldk.structs.Option_u64Z amt_msat, java.lang.String description, long duration_since_epoch, int invoice_expiry_delta_secs, org.ldk.structs.Option_u16Z min_final_cltv_expiry_delta) {
-               long ret = bindings.create_invoice_from_channelmanager_and_duration_since_epoch(channelmanager == null ? 0 : channelmanager.ptr, node_signer == null ? 0 : node_signer.ptr, logger == null ? 0 : logger.ptr, network, amt_msat.ptr, description, duration_since_epoch, invoice_expiry_delta_secs, min_final_cltv_expiry_delta.ptr);
+               long ret = bindings.create_invoice_from_channelmanager_and_duration_since_epoch(channelmanager == null ? 0 : channelmanager.ptr, node_signer.ptr, logger.ptr, network, amt_msat.ptr, description, duration_since_epoch, invoice_expiry_delta_secs, min_final_cltv_expiry_delta.ptr);
                Reference.reachabilityFence(channelmanager);
                Reference.reachabilityFence(node_signer);
                Reference.reachabilityFence(logger);
@@ -965,7 +965,7 @@ public class UtilMethods {
         * the payment hash is also involved outside the scope of lightning.
         */
        public static Result_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager_and_duration_since_epoch_with_payment_hash(org.ldk.structs.ChannelManager channelmanager, org.ldk.structs.NodeSigner node_signer, org.ldk.structs.Logger logger, org.ldk.enums.Currency network, org.ldk.structs.Option_u64Z amt_msat, java.lang.String description, long duration_since_epoch, int invoice_expiry_delta_secs, byte[] payment_hash, org.ldk.structs.Option_u16Z min_final_cltv_expiry_delta) {
-               long ret = bindings.create_invoice_from_channelmanager_and_duration_since_epoch_with_payment_hash(channelmanager == null ? 0 : channelmanager.ptr, node_signer == null ? 0 : node_signer.ptr, logger == null ? 0 : logger.ptr, network, amt_msat.ptr, description, duration_since_epoch, invoice_expiry_delta_secs, InternalUtils.check_arr_len(payment_hash, 32), min_final_cltv_expiry_delta.ptr);
+               long ret = bindings.create_invoice_from_channelmanager_and_duration_since_epoch_with_payment_hash(channelmanager == null ? 0 : channelmanager.ptr, node_signer.ptr, logger.ptr, network, amt_msat.ptr, description, duration_since_epoch, invoice_expiry_delta_secs, InternalUtils.check_arr_len(payment_hash, 32), min_final_cltv_expiry_delta.ptr);
                Reference.reachabilityFence(channelmanager);
                Reference.reachabilityFence(node_signer);
                Reference.reachabilityFence(logger);
index b039192b94b3bc34fa4414a5af1077179e13a18d..72dd3c3171289ed72ca8e499c6257c4abc7a684b 100644 (file)
@@ -76,7 +76,7 @@ JNIEXPORT void Java_org_ldk_impl_bindings_init_1class_1cache(JNIEnv * env, jclas
        arr_of_B_clz = (*env)->FindClass(env, "[B");
        CHECK(arr_of_B_clz != NULL);
        arr_of_B_clz = (*env)->NewGlobalRef(env, arr_of_B_clz);
-       String_clz = (*env)->FindClass(env, "Ljava/lang/String;");
+       String_clz = (*env)->FindClass(env, "java/lang/String");
        CHECK(String_clz != NULL);
        String_clz = (*env)->NewGlobalRef(env, String_clz);
 }
@@ -8153,7 +8153,7 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_NodeSigner_1ecdh(JNIEnv *en
        void* tweak_ptr = untag_ptr(tweak);
        CHECK_ACCESS(tweak_ptr);
        LDKCOption_ScalarZ tweak_conv = *(LDKCOption_ScalarZ*)(tweak_ptr);
-       // WARNING: we may need a move here but no clone is available for LDKCOption_ScalarZ
+       tweak_conv = COption_ScalarZ_clone((LDKCOption_ScalarZ*)untag_ptr(tweak));
        LDKCResult_SharedSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SharedSecretNoneZ), "LDKCResult_SharedSecretNoneZ");
        *ret_conv = (this_arg_conv->ecdh)(this_arg_conv->this_arg, recipient_conv, other_key_ref, tweak_conv);
        return tag_ptr(ret_conv, true);
@@ -20929,6 +20929,26 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_COption_1ScalarZ_1free(JNIEnv
        COption_ScalarZ_free(_res_conv);
 }
 
+static inline uint64_t COption_ScalarZ_clone_ptr(LDKCOption_ScalarZ *NONNULL_PTR arg) {
+       LDKCOption_ScalarZ *ret_copy = MALLOC(sizeof(LDKCOption_ScalarZ), "LDKCOption_ScalarZ");
+       *ret_copy = COption_ScalarZ_clone(arg);
+       int64_t ret_ref = tag_ptr(ret_copy, true);
+       return ret_ref;
+}
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_COption_1ScalarZ_1clone_1ptr(JNIEnv *env, jclass clz, int64_t arg) {
+       LDKCOption_ScalarZ* arg_conv = (LDKCOption_ScalarZ*)untag_ptr(arg);
+       int64_t ret_conv = COption_ScalarZ_clone_ptr(arg_conv);
+       return ret_conv;
+}
+
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_COption_1ScalarZ_1clone(JNIEnv *env, jclass clz, int64_t orig) {
+       LDKCOption_ScalarZ* orig_conv = (LDKCOption_ScalarZ*)untag_ptr(orig);
+       LDKCOption_ScalarZ *ret_copy = MALLOC(sizeof(LDKCOption_ScalarZ), "LDKCOption_ScalarZ");
+       *ret_copy = COption_ScalarZ_clone(orig_conv);
+       int64_t ret_ref = tag_ptr(ret_copy, true);
+       return ret_ref;
+}
+
 JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1SharedSecretNoneZ_1ok(JNIEnv *env, jclass clz, int8_tArray o) {
        LDKThirtyTwoBytes o_ref;
        CHECK((*env)->GetArrayLength(env, o) == 32);
index 6a44bd7f87e91693ee122a7c76938e3726b06f99..dba7f31e131516b47d7051ae5c7dd48a08551a9f 100644 (file)
@@ -74,7 +74,7 @@ JNIEXPORT void Java_org_ldk_impl_bindings_init_1class_1cache(JNIEnv * env, jclas
        arr_of_B_clz = (*env)->FindClass(env, "[B");
        CHECK(arr_of_B_clz != NULL);
        arr_of_B_clz = (*env)->NewGlobalRef(env, arr_of_B_clz);
-       String_clz = (*env)->FindClass(env, "Ljava/lang/String;");
+       String_clz = (*env)->FindClass(env, "java/lang/String");
        CHECK(String_clz != NULL);
        String_clz = (*env)->NewGlobalRef(env, String_clz);
 }
@@ -8151,7 +8151,7 @@ JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_NodeSigner_1ecdh(JNIEnv *en
        void* tweak_ptr = untag_ptr(tweak);
        CHECK_ACCESS(tweak_ptr);
        LDKCOption_ScalarZ tweak_conv = *(LDKCOption_ScalarZ*)(tweak_ptr);
-       // WARNING: we may need a move here but no clone is available for LDKCOption_ScalarZ
+       tweak_conv = COption_ScalarZ_clone((LDKCOption_ScalarZ*)untag_ptr(tweak));
        LDKCResult_SharedSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SharedSecretNoneZ), "LDKCResult_SharedSecretNoneZ");
        *ret_conv = (this_arg_conv->ecdh)(this_arg_conv->this_arg, recipient_conv, other_key_ref, tweak_conv);
        return tag_ptr(ret_conv, true);
@@ -20927,6 +20927,26 @@ JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_COption_1ScalarZ_1free(JNIEnv
        COption_ScalarZ_free(_res_conv);
 }
 
+static inline uint64_t COption_ScalarZ_clone_ptr(LDKCOption_ScalarZ *NONNULL_PTR arg) {
+       LDKCOption_ScalarZ *ret_copy = MALLOC(sizeof(LDKCOption_ScalarZ), "LDKCOption_ScalarZ");
+       *ret_copy = COption_ScalarZ_clone(arg);
+       int64_t ret_ref = tag_ptr(ret_copy, true);
+       return ret_ref;
+}
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_COption_1ScalarZ_1clone_1ptr(JNIEnv *env, jclass clz, int64_t arg) {
+       LDKCOption_ScalarZ* arg_conv = (LDKCOption_ScalarZ*)untag_ptr(arg);
+       int64_t ret_conv = COption_ScalarZ_clone_ptr(arg_conv);
+       return ret_conv;
+}
+
+JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_COption_1ScalarZ_1clone(JNIEnv *env, jclass clz, int64_t orig) {
+       LDKCOption_ScalarZ* orig_conv = (LDKCOption_ScalarZ*)untag_ptr(orig);
+       LDKCOption_ScalarZ *ret_copy = MALLOC(sizeof(LDKCOption_ScalarZ), "LDKCOption_ScalarZ");
+       *ret_copy = COption_ScalarZ_clone(orig_conv);
+       int64_t ret_ref = tag_ptr(ret_copy, true);
+       return ret_ref;
+}
+
 JNIEXPORT int64_t JNICALL Java_org_ldk_impl_bindings_CResult_1SharedSecretNoneZ_1ok(JNIEnv *env, jclass clz, int8_tArray o) {
        LDKThirtyTwoBytes o_ref;
        CHECK((*env)->GetArrayLength(env, o) == 32);
index cdb12d6aca64972aa0bde4235b69114c0c0c69ba..0003f22af0f2f2529933d4be396ce01ac2bd872d 100644 (file)
@@ -8727,6 +8727,22 @@ JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_COption_1ScalarZ_1none
 JNIEXPORT void JNICALL Java_org_ldk_impl_bindings_COption_1ScalarZ_1free
   (JNIEnv *, jclass, jlong);
 
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    COption_ScalarZ_clone_ptr
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_COption_1ScalarZ_1clone_1ptr
+  (JNIEnv *, jclass, jlong);
+
+/*
+ * Class:     org_ldk_impl_bindings
+ * Method:    COption_ScalarZ_clone
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_org_ldk_impl_bindings_COption_1ScalarZ_1clone
+  (JNIEnv *, jclass, jlong);
+
 /*
  * Class:     org_ldk_impl_bindings
  * Method:    CResult_SharedSecretNoneZ_ok
index b0128a5b4b1ac50dc251711e09a599d0cf598d9b..5adc32ac3f55789ace20ad0a3524c91dd04fe15e 100644 (file)
@@ -189,6 +189,7 @@ class HumanObjectPeerTestInstance {
         NioPeerHandler nio_peer_handler;
         short nio_port;
         final byte seed;
+        final byte[] key_seed = new byte[32];
         final Logger logger;
         final FeeEstimator fee_estimator;
         final BroadcasterInterface tx_broadcaster;
@@ -213,6 +214,7 @@ class HumanObjectPeerTestInstance {
         final LinkedList<byte[]> received_custom_messages = new LinkedList<>();
         final LinkedList<byte[]> custom_messages_to_send = new LinkedList<>();
         ChannelManagerConstructor constructor = null;
+        long network_graph_persists = 0;
         GcCheck obj = new GcCheck();
 
         private ChannelMonitor test_mon_roundtrip(OutPoint expected_id, byte[] data) {
@@ -297,7 +299,6 @@ class HumanObjectPeerTestInstance {
                 chain_watch = chain_monitor.as_Watch();
             }
 
-            byte[] key_seed = new byte[32];
             for (byte i = 0; i < 32; i++) {
                 key_seed[i] = (byte) (i ^ seed);
             }
@@ -397,7 +398,7 @@ class HumanObjectPeerTestInstance {
                         }
                     }
                     @Override public void persist_manager(byte[] channel_manager_bytes) { assert channel_manager_bytes.length > 1; }
-                    @Override public void persist_network_graph(byte[] graph_bytes) { assert graph_bytes.length > 1; }
+                    @Override public void persist_network_graph(byte[] graph_bytes) { assert graph_bytes.length > 1; network_graph_persists += 1; }
                     @Override public void persist_scorer(byte[] scorer_bytes) { assert scorer_bytes.length > 1; }
                 }, !use_ignore_handler);
                 this.chan_manager = constructor.channel_manager;
@@ -493,7 +494,7 @@ class HumanObjectPeerTestInstance {
                             }
                         }
                         @Override public void persist_manager(byte[] channel_manager_bytes) { assert channel_manager_bytes.length > 1; }
-                        @Override public void persist_network_graph(byte[] graph_bytes) { assert graph_bytes.length > 1; }
+                        @Override public void persist_network_graph(byte[] graph_bytes) { assert graph_bytes.length > 1; network_graph_persists += 1; }
                         @Override public void persist_scorer(byte[] scorer_bytes) { assert scorer_bytes.length > 1; }
                     }, !use_ignore_handler);
                     this.chan_manager = constructor.channel_manager;
@@ -899,6 +900,22 @@ class HumanObjectPeerTestInstance {
         String description_string = raw_invoice_description.into_inner();
         assert description_string.equals("Invoice Description");
 
+        // Do a trivial test of constructing a phantom invoice
+        Result_InvoiceSignOrCreationErrorZ phantom_invoice = UtilMethods.create_phantom_invoice(
+                Option_u64Z.some(42000),
+                new byte[32], // TODO: This needs to be an option/null, not interpreting all-0s as None
+                "Phantom Invoice", 7200,
+                new PhantomRouteHints[]{ peer2.chan_manager.get_phantom_route_hints() },
+                peer2.entropy_source,
+                PhantomKeysManager.of(peer2.key_seed, 42, 42, new byte[32]).as_NodeSigner(),
+                peer2.logger, Currency.LDKCurrency_Bitcoin, Option_u16Z.none(),
+                System.currentTimeMillis() / 1000);
+        assert phantom_invoice.is_ok();
+        RouteHint[] hints = ((Result_InvoiceSignOrCreationErrorZ.Result_InvoiceSignOrCreationErrorZ_OK)phantom_invoice).res.route_hints();
+        assert hints.length == 1;
+        RouteHintHop[] val = hints[0].get_a();
+        assert hints[0].get_a().length == 1; // Our one channel is public so we should just have a single-hop hint
+
         if (!use_invoice_payer) {
             byte[] payment_hash = ((Result_InvoiceSignOrCreationErrorZ.Result_InvoiceSignOrCreationErrorZ_OK) invoice).res.payment_hash();
             byte[] payment_secret = ((Result_InvoiceSignOrCreationErrorZ.Result_InvoiceSignOrCreationErrorZ_OK) invoice).res.payment_secret();
@@ -940,9 +957,18 @@ class HumanObjectPeerTestInstance {
         }
 
         if (reload_peers) {
+            assert peer1.network_graph_persists == 0;
+            assert peer2.network_graph_persists == 0;
             if (use_chan_manager_constructor) {
                 peer1.constructor.interrupt();
                 peer2.constructor.interrupt();
+                if (!use_ignore_handler) {
+                    assert peer1.network_graph_persists >= 1;
+                    assert peer2.network_graph_persists >= 1;
+                } else {
+                    assert peer1.network_graph_persists == 0;
+                    assert peer2.network_graph_persists == 0;
+                }
             } else if (use_nio_peer_handler) {
                 peer1.nio_peer_handler.interrupt();
                 peer2.nio_peer_handler.interrupt();
@@ -1136,8 +1162,17 @@ class HumanObjectPeerTestInstance {
         state.peer2.get_monitor_events(0);
 
         if (use_chan_manager_constructor) {
+            assert state.peer1.network_graph_persists == 0;
+            assert state.peer2.network_graph_persists == 0;
             state.peer1.constructor.interrupt();
             state.peer2.constructor.interrupt();
+            if (!use_ignore_handler) {
+                assert state.peer1.network_graph_persists >= 1;
+                assert state.peer2.network_graph_persists >= 1;
+            } else {
+                assert state.peer1.network_graph_persists == 0;
+                assert state.peer2.network_graph_persists == 0;
+            }
         }
 
         t.interrupt();
index d357a2cf668acac44524c763517006b199e64d66..3ae6cadeb04bc24a0ded2fb4a66378e7edcdcfb0 100644 (file)
@@ -5920,7 +5920,7 @@ uint64_t  __attribute__((export_name("TS_NodeSigner_ecdh"))) TS_NodeSigner_ecdh(
        void* tweak_ptr = untag_ptr(tweak);
        CHECK_ACCESS(tweak_ptr);
        LDKCOption_ScalarZ tweak_conv = *(LDKCOption_ScalarZ*)(tweak_ptr);
-       // WARNING: we may need a move here but no clone is available for LDKCOption_ScalarZ
+       tweak_conv = COption_ScalarZ_clone((LDKCOption_ScalarZ*)untag_ptr(tweak));
        LDKCResult_SharedSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SharedSecretNoneZ), "LDKCResult_SharedSecretNoneZ");
        *ret_conv = (this_arg_conv->ecdh)(this_arg_conv->this_arg, recipient_conv, other_key_ref, tweak_conv);
        return tag_ptr(ret_conv, true);
@@ -16621,6 +16621,26 @@ void  __attribute__((export_name("TS_COption_ScalarZ_free"))) TS_COption_ScalarZ
        COption_ScalarZ_free(_res_conv);
 }
 
+static inline uint64_t COption_ScalarZ_clone_ptr(LDKCOption_ScalarZ *NONNULL_PTR arg) {
+       LDKCOption_ScalarZ *ret_copy = MALLOC(sizeof(LDKCOption_ScalarZ), "LDKCOption_ScalarZ");
+       *ret_copy = COption_ScalarZ_clone(arg);
+       uint64_t ret_ref = tag_ptr(ret_copy, true);
+       return ret_ref;
+}
+int64_t  __attribute__((export_name("TS_COption_ScalarZ_clone_ptr"))) TS_COption_ScalarZ_clone_ptr(uint64_t arg) {
+       LDKCOption_ScalarZ* arg_conv = (LDKCOption_ScalarZ*)untag_ptr(arg);
+       int64_t ret_conv = COption_ScalarZ_clone_ptr(arg_conv);
+       return ret_conv;
+}
+
+uint64_t  __attribute__((export_name("TS_COption_ScalarZ_clone"))) TS_COption_ScalarZ_clone(uint64_t orig) {
+       LDKCOption_ScalarZ* orig_conv = (LDKCOption_ScalarZ*)untag_ptr(orig);
+       LDKCOption_ScalarZ *ret_copy = MALLOC(sizeof(LDKCOption_ScalarZ), "LDKCOption_ScalarZ");
+       *ret_copy = COption_ScalarZ_clone(orig_conv);
+       uint64_t ret_ref = tag_ptr(ret_copy, true);
+       return ret_ref;
+}
+
 uint64_t  __attribute__((export_name("TS_CResult_SharedSecretNoneZ_ok"))) TS_CResult_SharedSecretNoneZ_ok(int8_tArray o) {
        LDKThirtyTwoBytes o_ref;
        CHECK(o->arr_len == 32);
index 13b1d657ea105c56f0fdc2162a8d741a6c236388..87eba6a89a98afe5090e814c25b99824332f9589 100644 (file)
@@ -5918,7 +5918,7 @@ uint64_t  __attribute__((export_name("TS_NodeSigner_ecdh"))) TS_NodeSigner_ecdh(
        void* tweak_ptr = untag_ptr(tweak);
        CHECK_ACCESS(tweak_ptr);
        LDKCOption_ScalarZ tweak_conv = *(LDKCOption_ScalarZ*)(tweak_ptr);
-       // WARNING: we may need a move here but no clone is available for LDKCOption_ScalarZ
+       tweak_conv = COption_ScalarZ_clone((LDKCOption_ScalarZ*)untag_ptr(tweak));
        LDKCResult_SharedSecretNoneZ* ret_conv = MALLOC(sizeof(LDKCResult_SharedSecretNoneZ), "LDKCResult_SharedSecretNoneZ");
        *ret_conv = (this_arg_conv->ecdh)(this_arg_conv->this_arg, recipient_conv, other_key_ref, tweak_conv);
        return tag_ptr(ret_conv, true);
@@ -16619,6 +16619,26 @@ void  __attribute__((export_name("TS_COption_ScalarZ_free"))) TS_COption_ScalarZ
        COption_ScalarZ_free(_res_conv);
 }
 
+static inline uint64_t COption_ScalarZ_clone_ptr(LDKCOption_ScalarZ *NONNULL_PTR arg) {
+       LDKCOption_ScalarZ *ret_copy = MALLOC(sizeof(LDKCOption_ScalarZ), "LDKCOption_ScalarZ");
+       *ret_copy = COption_ScalarZ_clone(arg);
+       uint64_t ret_ref = tag_ptr(ret_copy, true);
+       return ret_ref;
+}
+int64_t  __attribute__((export_name("TS_COption_ScalarZ_clone_ptr"))) TS_COption_ScalarZ_clone_ptr(uint64_t arg) {
+       LDKCOption_ScalarZ* arg_conv = (LDKCOption_ScalarZ*)untag_ptr(arg);
+       int64_t ret_conv = COption_ScalarZ_clone_ptr(arg_conv);
+       return ret_conv;
+}
+
+uint64_t  __attribute__((export_name("TS_COption_ScalarZ_clone"))) TS_COption_ScalarZ_clone(uint64_t orig) {
+       LDKCOption_ScalarZ* orig_conv = (LDKCOption_ScalarZ*)untag_ptr(orig);
+       LDKCOption_ScalarZ *ret_copy = MALLOC(sizeof(LDKCOption_ScalarZ), "LDKCOption_ScalarZ");
+       *ret_copy = COption_ScalarZ_clone(orig_conv);
+       uint64_t ret_ref = tag_ptr(ret_copy, true);
+       return ret_ref;
+}
+
 uint64_t  __attribute__((export_name("TS_CResult_SharedSecretNoneZ_ok"))) TS_CResult_SharedSecretNoneZ_ok(int8_tArray o) {
        LDKThirtyTwoBytes o_ref;
        CHECK(o->arr_len == 32);
index 00440c9d8a8948ea7a902796058530360704e229..68d39042cf788ef23a309b58fbe4580f932339d8 100644 (file)
@@ -12909,6 +12909,24 @@ export function COption_ScalarZ_free(_res: bigint): void {
        }
        const nativeResponseValue = wasm.TS_COption_ScalarZ_free(_res);
        // debug statements here
+}
+       // uint64_t COption_ScalarZ_clone_ptr(LDKCOption_ScalarZ *NONNULL_PTR arg);
+/* @internal */
+export function COption_ScalarZ_clone_ptr(arg: bigint): bigint {
+       if(!isWasmInitialized) {
+               throw new Error("initializeWasm() must be awaited first!");
+       }
+       const nativeResponseValue = wasm.TS_COption_ScalarZ_clone_ptr(arg);
+       return nativeResponseValue;
+}
+       // struct LDKCOption_ScalarZ COption_ScalarZ_clone(const struct LDKCOption_ScalarZ *NONNULL_PTR orig);
+/* @internal */
+export function COption_ScalarZ_clone(orig: bigint): bigint {
+       if(!isWasmInitialized) {
+               throw new Error("initializeWasm() must be awaited first!");
+       }
+       const nativeResponseValue = wasm.TS_COption_ScalarZ_clone(orig);
+       return nativeResponseValue;
 }
        // struct LDKCResult_SharedSecretNoneZ CResult_SharedSecretNoneZ_ok(struct LDKThirtyTwoBytes o);
 /* @internal */
index 8ae7ec755eaa88eb2f3fc35ad071527172916098..660d8ec26b1d0bbfb0e47f35a26a3b74ad5c1112 100644 (file)
@@ -487,7 +487,7 @@ export class BlindedPath extends CommonBase {
         * Errors if less than two hops are provided or if `node_pk`(s) are invalid.
         */
        public static constructor_new_for_message(node_pks: Uint8Array[], entropy_source: EntropySource): Result_BlindedPathNoneZ {
-               const ret: bigint = bindings.BlindedPath_new_for_message(bindings.encodeUint32Array(node_pks != null ? node_pks.map(node_pks_conv_12 => bindings.encodeUint8Array(bindings.check_arr_len(node_pks_conv_12, 33))) : null), entropy_source == null ? 0n : CommonBase.get_ptr_of(entropy_source));
+               const ret: bigint = bindings.BlindedPath_new_for_message(bindings.encodeUint32Array(node_pks != null ? node_pks.map(node_pks_conv_12 => bindings.encodeUint8Array(bindings.check_arr_len(node_pks_conv_12, 33))) : null), CommonBase.get_ptr_of(entropy_source));
                const ret_hu_conv: Result_BlindedPathNoneZ = Result_BlindedPathNoneZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, entropy_source);
                return ret_hu_conv;
index ae479503473466b3ef8a88655bd57a0d583bf1a4..c1818972e5b87da0ef7fad1755847fcb6ac26036 100644 (file)
@@ -550,7 +550,7 @@ export class BuiltCommitmentTransaction extends CommonBase {
         * Signs the holder commitment transaction because we are about to broadcast it.
         */
        public sign_holder_commitment(funding_key: Uint8Array, funding_redeemscript: Uint8Array, channel_value_satoshis: bigint, entropy_source: EntropySource): Uint8Array {
-               const ret: number = bindings.BuiltCommitmentTransaction_sign_holder_commitment(this.ptr, bindings.encodeUint8Array(bindings.check_arr_len(funding_key, 32)), bindings.encodeUint8Array(funding_redeemscript), channel_value_satoshis, entropy_source == null ? 0n : CommonBase.get_ptr_of(entropy_source));
+               const ret: number = bindings.BuiltCommitmentTransaction_sign_holder_commitment(this.ptr, bindings.encodeUint8Array(bindings.check_arr_len(funding_key, 32)), bindings.encodeUint8Array(funding_redeemscript), channel_value_satoshis, CommonBase.get_ptr_of(entropy_source));
                const ret_conv: Uint8Array = bindings.decodeUint8Array(ret);
                CommonBase.add_ref_from(this, entropy_source);
                return ret_conv;
index 21d62917be0cc0777f5c54fbdf4940a1e743a43c..976f7f95831d9e85f312e8c3c316b45778466a30 100644 (file)
@@ -470,7 +470,7 @@ export class ChainMonitor extends CommonBase {
         * transactions relevant to the watched channels.
         */
        public static constructor_new(chain_source: Option_FilterZ, broadcaster: BroadcasterInterface, logger: Logger, feeest: FeeEstimator, persister: Persist): ChainMonitor {
-               const ret: bigint = bindings.ChainMonitor_new(CommonBase.get_ptr_of(chain_source), broadcaster == null ? 0n : CommonBase.get_ptr_of(broadcaster), logger == null ? 0n : CommonBase.get_ptr_of(logger), feeest == null ? 0n : CommonBase.get_ptr_of(feeest), persister == null ? 0n : CommonBase.get_ptr_of(persister));
+               const ret: bigint = bindings.ChainMonitor_new(CommonBase.get_ptr_of(chain_source), CommonBase.get_ptr_of(broadcaster), CommonBase.get_ptr_of(logger), CommonBase.get_ptr_of(feeest), CommonBase.get_ptr_of(persister));
                const ret_hu_conv: ChainMonitor = new ChainMonitor(null, ret);
                CommonBase.add_ref_from(ret_hu_conv, ret_hu_conv);
                CommonBase.add_ref_from(ret_hu_conv, chain_source);
index fffe30efc9b434405685fa8e3e89a4f9678a48de..d2bf80d6b5396d5990acca08ff2496ebffd14f8e 100644 (file)
@@ -514,7 +514,7 @@ export class ChannelManager extends CommonBase {
         * [`params.best_block.block_hash`]: chain::BestBlock::block_hash
         */
        public static constructor_new(fee_est: FeeEstimator, chain_monitor: Watch, tx_broadcaster: BroadcasterInterface, router: Router, logger: Logger, entropy_source: EntropySource, node_signer: NodeSigner, signer_provider: SignerProvider, config: UserConfig, params: ChainParameters): ChannelManager {
-               const ret: bigint = bindings.ChannelManager_new(fee_est == null ? 0n : CommonBase.get_ptr_of(fee_est), chain_monitor == null ? 0n : CommonBase.get_ptr_of(chain_monitor), tx_broadcaster == null ? 0n : CommonBase.get_ptr_of(tx_broadcaster), router == null ? 0n : CommonBase.get_ptr_of(router), logger == null ? 0n : CommonBase.get_ptr_of(logger), entropy_source == null ? 0n : CommonBase.get_ptr_of(entropy_source), node_signer == null ? 0n : CommonBase.get_ptr_of(node_signer), signer_provider == null ? 0n : CommonBase.get_ptr_of(signer_provider), config == null ? 0n : CommonBase.get_ptr_of(config), params == null ? 0n : CommonBase.get_ptr_of(params));
+               const ret: bigint = bindings.ChannelManager_new(CommonBase.get_ptr_of(fee_est), CommonBase.get_ptr_of(chain_monitor), CommonBase.get_ptr_of(tx_broadcaster), CommonBase.get_ptr_of(router), CommonBase.get_ptr_of(logger), CommonBase.get_ptr_of(entropy_source), CommonBase.get_ptr_of(node_signer), CommonBase.get_ptr_of(signer_provider), config == null ? 0n : CommonBase.get_ptr_of(config), params == null ? 0n : CommonBase.get_ptr_of(params));
                const ret_hu_conv: ChannelManager = new ChannelManager(null, ret);
                CommonBase.add_ref_from(ret_hu_conv, ret_hu_conv);
                CommonBase.add_ref_from(ret_hu_conv, fee_est);
index cdabbbf5e587c1e74ba92e84341f93b67e5e83c7..cc327ff334aefa5205e3fedce4deac5445f0205d 100644 (file)
@@ -490,7 +490,7 @@ export class ChannelManagerReadArgs extends CommonBase {
         * A cryptographically secure source of entropy.
         */
        public set_entropy_source(val: EntropySource): void {
-               bindings.ChannelManagerReadArgs_set_entropy_source(this.ptr, val == null ? 0n : CommonBase.get_ptr_of(val));
+               bindings.ChannelManagerReadArgs_set_entropy_source(this.ptr, CommonBase.get_ptr_of(val));
                CommonBase.add_ref_from(this, val);
        }
 
@@ -508,7 +508,7 @@ export class ChannelManagerReadArgs extends CommonBase {
         * A signer that is able to perform node-scoped cryptographic operations.
         */
        public set_node_signer(val: NodeSigner): void {
-               bindings.ChannelManagerReadArgs_set_node_signer(this.ptr, val == null ? 0n : CommonBase.get_ptr_of(val));
+               bindings.ChannelManagerReadArgs_set_node_signer(this.ptr, CommonBase.get_ptr_of(val));
                CommonBase.add_ref_from(this, val);
        }
 
@@ -530,7 +530,7 @@ export class ChannelManagerReadArgs extends CommonBase {
         * signing data.
         */
        public set_signer_provider(val: SignerProvider): void {
-               bindings.ChannelManagerReadArgs_set_signer_provider(this.ptr, val == null ? 0n : CommonBase.get_ptr_of(val));
+               bindings.ChannelManagerReadArgs_set_signer_provider(this.ptr, CommonBase.get_ptr_of(val));
                CommonBase.add_ref_from(this, val);
        }
 
@@ -552,7 +552,7 @@ export class ChannelManagerReadArgs extends CommonBase {
         * No calls to the FeeEstimator will be made during deserialization.
         */
        public set_fee_estimator(val: FeeEstimator): void {
-               bindings.ChannelManagerReadArgs_set_fee_estimator(this.ptr, val == null ? 0n : CommonBase.get_ptr_of(val));
+               bindings.ChannelManagerReadArgs_set_fee_estimator(this.ptr, CommonBase.get_ptr_of(val));
                CommonBase.add_ref_from(this, val);
        }
 
@@ -578,7 +578,7 @@ export class ChannelManagerReadArgs extends CommonBase {
         * chain::Watch after deserializing this ChannelManager.
         */
        public set_chain_monitor(val: Watch): void {
-               bindings.ChannelManagerReadArgs_set_chain_monitor(this.ptr, val == null ? 0n : CommonBase.get_ptr_of(val));
+               bindings.ChannelManagerReadArgs_set_chain_monitor(this.ptr, CommonBase.get_ptr_of(val));
                CommonBase.add_ref_from(this, val);
        }
 
@@ -600,7 +600,7 @@ export class ChannelManagerReadArgs extends CommonBase {
         * force-closed during deserialization.
         */
        public set_tx_broadcaster(val: BroadcasterInterface): void {
-               bindings.ChannelManagerReadArgs_set_tx_broadcaster(this.ptr, val == null ? 0n : CommonBase.get_ptr_of(val));
+               bindings.ChannelManagerReadArgs_set_tx_broadcaster(this.ptr, CommonBase.get_ptr_of(val));
                CommonBase.add_ref_from(this, val);
        }
 
@@ -624,7 +624,7 @@ export class ChannelManagerReadArgs extends CommonBase {
         * No calls to the router will be made during deserialization.
         */
        public set_router(val: Router): void {
-               bindings.ChannelManagerReadArgs_set_router(this.ptr, val == null ? 0n : CommonBase.get_ptr_of(val));
+               bindings.ChannelManagerReadArgs_set_router(this.ptr, CommonBase.get_ptr_of(val));
                CommonBase.add_ref_from(this, val);
        }
 
@@ -644,7 +644,7 @@ export class ChannelManagerReadArgs extends CommonBase {
         * deserialization.
         */
        public set_logger(val: Logger): void {
-               bindings.ChannelManagerReadArgs_set_logger(this.ptr, val == null ? 0n : CommonBase.get_ptr_of(val));
+               bindings.ChannelManagerReadArgs_set_logger(this.ptr, CommonBase.get_ptr_of(val));
                CommonBase.add_ref_from(this, val);
        }
 
@@ -674,7 +674,7 @@ export class ChannelManagerReadArgs extends CommonBase {
         * populate a HashMap directly from C.
         */
        public static constructor_new(entropy_source: EntropySource, node_signer: NodeSigner, signer_provider: SignerProvider, fee_estimator: FeeEstimator, chain_monitor: Watch, tx_broadcaster: BroadcasterInterface, router: Router, logger: Logger, default_config: UserConfig, channel_monitors: ChannelMonitor[]): ChannelManagerReadArgs {
-               const ret: bigint = bindings.ChannelManagerReadArgs_new(entropy_source == null ? 0n : CommonBase.get_ptr_of(entropy_source), node_signer == null ? 0n : CommonBase.get_ptr_of(node_signer), signer_provider == null ? 0n : CommonBase.get_ptr_of(signer_provider), fee_estimator == null ? 0n : CommonBase.get_ptr_of(fee_estimator), chain_monitor == null ? 0n : CommonBase.get_ptr_of(chain_monitor), tx_broadcaster == null ? 0n : CommonBase.get_ptr_of(tx_broadcaster), router == null ? 0n : CommonBase.get_ptr_of(router), logger == null ? 0n : CommonBase.get_ptr_of(logger), default_config == null ? 0n : CommonBase.get_ptr_of(default_config), bindings.encodeUint64Array(channel_monitors != null ? channel_monitors.map(channel_monitors_conv_16 => channel_monitors_conv_16 == null ? 0n : CommonBase.get_ptr_of(channel_monitors_conv_16)) : null));
+               const ret: bigint = bindings.ChannelManagerReadArgs_new(CommonBase.get_ptr_of(entropy_source), CommonBase.get_ptr_of(node_signer), CommonBase.get_ptr_of(signer_provider), CommonBase.get_ptr_of(fee_estimator), CommonBase.get_ptr_of(chain_monitor), CommonBase.get_ptr_of(tx_broadcaster), CommonBase.get_ptr_of(router), CommonBase.get_ptr_of(logger), default_config == null ? 0n : CommonBase.get_ptr_of(default_config), bindings.encodeUint64Array(channel_monitors != null ? channel_monitors.map(channel_monitors_conv_16 => channel_monitors_conv_16 == null ? 0n : CommonBase.get_ptr_of(channel_monitors_conv_16)) : null));
                const ret_hu_conv: ChannelManagerReadArgs = new ChannelManagerReadArgs(null, ret);
                CommonBase.add_ref_from(ret_hu_conv, ret_hu_conv);
                CommonBase.add_ref_from(ret_hu_conv, entropy_source);
index d91243de7e92346ecac637ae51b9e2219a728ac4..19b048b1f719c37e1daae3c78c2edfbdc3b8e212 100644 (file)
@@ -491,7 +491,7 @@ export class ChannelMonitor extends CommonBase {
         * panics if the given update is not the next update by update_id.
         */
        public update_monitor(updates: ChannelMonitorUpdate, broadcaster: BroadcasterInterface, fee_estimator: FeeEstimator, logger: Logger): Result_NoneNoneZ {
-               const ret: bigint = bindings.ChannelMonitor_update_monitor(this.ptr, updates == null ? 0n : CommonBase.get_ptr_of(updates), broadcaster == null ? 0n : CommonBase.get_ptr_of(broadcaster), fee_estimator == null ? 0n : CommonBase.get_ptr_of(fee_estimator), logger == null ? 0n : CommonBase.get_ptr_of(logger));
+               const ret: bigint = bindings.ChannelMonitor_update_monitor(this.ptr, updates == null ? 0n : CommonBase.get_ptr_of(updates), CommonBase.get_ptr_of(broadcaster), CommonBase.get_ptr_of(fee_estimator), CommonBase.get_ptr_of(logger));
                const ret_hu_conv: Result_NoneNoneZ = Result_NoneNoneZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(this, updates);
                CommonBase.add_ref_from(this, broadcaster);
@@ -543,7 +543,7 @@ export class ChannelMonitor extends CommonBase {
         * have been registered.
         */
        public load_outputs_to_watch(filter: Filter): void {
-               bindings.ChannelMonitor_load_outputs_to_watch(this.ptr, filter == null ? 0n : CommonBase.get_ptr_of(filter));
+               bindings.ChannelMonitor_load_outputs_to_watch(this.ptr, CommonBase.get_ptr_of(filter));
                CommonBase.add_ref_from(this, filter);
        }
 
@@ -621,7 +621,7 @@ export class ChannelMonitor extends CommonBase {
         * [`ChannelMonitorUpdateStatus::PermanentFailure`]: super::ChannelMonitorUpdateStatus::PermanentFailure
         */
        public get_latest_holder_commitment_txn(logger: Logger): Uint8Array[] {
-               const ret: number = bindings.ChannelMonitor_get_latest_holder_commitment_txn(this.ptr, logger == null ? 0n : CommonBase.get_ptr_of(logger));
+               const ret: number = bindings.ChannelMonitor_get_latest_holder_commitment_txn(this.ptr, CommonBase.get_ptr_of(logger));
                const ret_conv_12_len: number = bindings.getArrayLength(ret);
                const ret_conv_12_arr: Uint8Array[] = new Array(ret_conv_12_len).fill(null);
                for (var m = 0; m < ret_conv_12_len; m++) {
@@ -648,7 +648,7 @@ export class ChannelMonitor extends CommonBase {
         * [`get_outputs_to_watch`]: #method.get_outputs_to_watch
         */
        public block_connected(header: Uint8Array, txdata: TwoTuple_usizeTransactionZ[], height: number, broadcaster: BroadcasterInterface, fee_estimator: FeeEstimator, logger: Logger): TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ[] {
-               const ret: number = bindings.ChannelMonitor_block_connected(this.ptr, bindings.encodeUint8Array(bindings.check_arr_len(header, 80)), bindings.encodeUint64Array(txdata != null ? txdata.map(txdata_conv_28 => txdata_conv_28 != null ? CommonBase.get_ptr_of(txdata_conv_28) : 0n) : null), height, broadcaster == null ? 0n : CommonBase.get_ptr_of(broadcaster), fee_estimator == null ? 0n : CommonBase.get_ptr_of(fee_estimator), logger == null ? 0n : CommonBase.get_ptr_of(logger));
+               const ret: number = bindings.ChannelMonitor_block_connected(this.ptr, bindings.encodeUint8Array(bindings.check_arr_len(header, 80)), bindings.encodeUint64Array(txdata != null ? txdata.map(txdata_conv_28 => txdata_conv_28 != null ? CommonBase.get_ptr_of(txdata_conv_28) : 0n) : null), height, CommonBase.get_ptr_of(broadcaster), CommonBase.get_ptr_of(fee_estimator), CommonBase.get_ptr_of(logger));
                const ret_conv_39_len: number = bindings.getArrayLength(ret);
                const ret_conv_39_arr: TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ[] = new Array(ret_conv_39_len).fill(null);
                for (var n = 0; n < ret_conv_39_len; n++) {
@@ -669,7 +669,7 @@ export class ChannelMonitor extends CommonBase {
         * appropriately.
         */
        public block_disconnected(header: Uint8Array, height: number, broadcaster: BroadcasterInterface, fee_estimator: FeeEstimator, logger: Logger): void {
-               bindings.ChannelMonitor_block_disconnected(this.ptr, bindings.encodeUint8Array(bindings.check_arr_len(header, 80)), height, broadcaster == null ? 0n : CommonBase.get_ptr_of(broadcaster), fee_estimator == null ? 0n : CommonBase.get_ptr_of(fee_estimator), logger == null ? 0n : CommonBase.get_ptr_of(logger));
+               bindings.ChannelMonitor_block_disconnected(this.ptr, bindings.encodeUint8Array(bindings.check_arr_len(header, 80)), height, CommonBase.get_ptr_of(broadcaster), CommonBase.get_ptr_of(fee_estimator), CommonBase.get_ptr_of(logger));
                CommonBase.add_ref_from(this, broadcaster);
                CommonBase.add_ref_from(this, fee_estimator);
                CommonBase.add_ref_from(this, logger);
@@ -685,7 +685,7 @@ export class ChannelMonitor extends CommonBase {
         * [`block_connected`]: Self::block_connected
         */
        public transactions_confirmed(header: Uint8Array, txdata: TwoTuple_usizeTransactionZ[], height: number, broadcaster: BroadcasterInterface, fee_estimator: FeeEstimator, logger: Logger): TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ[] {
-               const ret: number = bindings.ChannelMonitor_transactions_confirmed(this.ptr, bindings.encodeUint8Array(bindings.check_arr_len(header, 80)), bindings.encodeUint64Array(txdata != null ? txdata.map(txdata_conv_28 => txdata_conv_28 != null ? CommonBase.get_ptr_of(txdata_conv_28) : 0n) : null), height, broadcaster == null ? 0n : CommonBase.get_ptr_of(broadcaster), fee_estimator == null ? 0n : CommonBase.get_ptr_of(fee_estimator), logger == null ? 0n : CommonBase.get_ptr_of(logger));
+               const ret: number = bindings.ChannelMonitor_transactions_confirmed(this.ptr, bindings.encodeUint8Array(bindings.check_arr_len(header, 80)), bindings.encodeUint64Array(txdata != null ? txdata.map(txdata_conv_28 => txdata_conv_28 != null ? CommonBase.get_ptr_of(txdata_conv_28) : 0n) : null), height, CommonBase.get_ptr_of(broadcaster), CommonBase.get_ptr_of(fee_estimator), CommonBase.get_ptr_of(logger));
                const ret_conv_39_len: number = bindings.getArrayLength(ret);
                const ret_conv_39_arr: TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ[] = new Array(ret_conv_39_len).fill(null);
                for (var n = 0; n < ret_conv_39_len; n++) {
@@ -710,7 +710,7 @@ export class ChannelMonitor extends CommonBase {
         * [`block_disconnected`]: Self::block_disconnected
         */
        public transaction_unconfirmed(txid: Uint8Array, broadcaster: BroadcasterInterface, fee_estimator: FeeEstimator, logger: Logger): void {
-               bindings.ChannelMonitor_transaction_unconfirmed(this.ptr, bindings.encodeUint8Array(bindings.check_arr_len(txid, 32)), broadcaster == null ? 0n : CommonBase.get_ptr_of(broadcaster), fee_estimator == null ? 0n : CommonBase.get_ptr_of(fee_estimator), logger == null ? 0n : CommonBase.get_ptr_of(logger));
+               bindings.ChannelMonitor_transaction_unconfirmed(this.ptr, bindings.encodeUint8Array(bindings.check_arr_len(txid, 32)), CommonBase.get_ptr_of(broadcaster), CommonBase.get_ptr_of(fee_estimator), CommonBase.get_ptr_of(logger));
                CommonBase.add_ref_from(this, broadcaster);
                CommonBase.add_ref_from(this, fee_estimator);
                CommonBase.add_ref_from(this, logger);
@@ -726,7 +726,7 @@ export class ChannelMonitor extends CommonBase {
         * [`block_connected`]: Self::block_connected
         */
        public best_block_updated(header: Uint8Array, height: number, broadcaster: BroadcasterInterface, fee_estimator: FeeEstimator, logger: Logger): TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ[] {
-               const ret: number = bindings.ChannelMonitor_best_block_updated(this.ptr, bindings.encodeUint8Array(bindings.check_arr_len(header, 80)), height, broadcaster == null ? 0n : CommonBase.get_ptr_of(broadcaster), fee_estimator == null ? 0n : CommonBase.get_ptr_of(fee_estimator), logger == null ? 0n : CommonBase.get_ptr_of(logger));
+               const ret: number = bindings.ChannelMonitor_best_block_updated(this.ptr, bindings.encodeUint8Array(bindings.check_arr_len(header, 80)), height, CommonBase.get_ptr_of(broadcaster), CommonBase.get_ptr_of(fee_estimator), CommonBase.get_ptr_of(logger));
                const ret_conv_39_len: number = bindings.getArrayLength(ret);
                const ret_conv_39_arr: TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ[] = new Array(ret_conv_39_len).fill(null);
                for (var n = 0; n < ret_conv_39_len; n++) {
@@ -778,7 +778,7 @@ export class ChannelMonitor extends CommonBase {
         * connections, like on mobile.
         */
        public rebroadcast_pending_claims(broadcaster: BroadcasterInterface, fee_estimator: FeeEstimator, logger: Logger): void {
-               bindings.ChannelMonitor_rebroadcast_pending_claims(this.ptr, broadcaster == null ? 0n : CommonBase.get_ptr_of(broadcaster), fee_estimator == null ? 0n : CommonBase.get_ptr_of(fee_estimator), logger == null ? 0n : CommonBase.get_ptr_of(logger));
+               bindings.ChannelMonitor_rebroadcast_pending_claims(this.ptr, CommonBase.get_ptr_of(broadcaster), CommonBase.get_ptr_of(fee_estimator), CommonBase.get_ptr_of(logger));
                CommonBase.add_ref_from(this, broadcaster);
                CommonBase.add_ref_from(this, fee_estimator);
                CommonBase.add_ref_from(this, logger);
index cfcb5b50edb7d5f7e25c499783d621c11a6efa74..1ef53252daf9315a0adb95c502e354b81a4a4701 100644 (file)
@@ -513,7 +513,7 @@ export class CustomMessageHandler extends CommonBase {
         * to send.
         */
        public handle_custom_message(msg: Type, sender_node_id: Uint8Array): Result_NoneLightningErrorZ {
-               const ret: bigint = bindings.CustomMessageHandler_handle_custom_message(this.ptr, msg == null ? 0n : CommonBase.get_ptr_of(msg), bindings.encodeUint8Array(bindings.check_arr_len(sender_node_id, 33)));
+               const ret: bigint = bindings.CustomMessageHandler_handle_custom_message(this.ptr, CommonBase.get_ptr_of(msg), bindings.encodeUint8Array(bindings.check_arr_len(sender_node_id, 33)));
                const ret_hu_conv: Result_NoneLightningErrorZ = Result_NoneLightningErrorZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(this, msg);
                return ret_hu_conv;
index d1ed2219be06343c80d888970b9999d889743c68..d75cf8961a5de2484377240786c2151e3c8383e6 100644 (file)
@@ -506,7 +506,7 @@ export class CustomOnionMessageHandler extends CommonBase {
         * Called with the custom message that was received.
         */
        public handle_custom_message(msg: CustomOnionMessageContents): void {
-               bindings.CustomOnionMessageHandler_handle_custom_message(this.ptr, msg == null ? 0n : CommonBase.get_ptr_of(msg));
+               bindings.CustomOnionMessageHandler_handle_custom_message(this.ptr, CommonBase.get_ptr_of(msg));
                CommonBase.add_ref_from(this, msg);
        }
 
index 9588fc8262a767240cad3a8215dcc1abe2fb786a..d6fbb65b94ca6c03a83e050b7c41096dcdb8fe83 100644 (file)
@@ -449,7 +449,7 @@ export class DefaultRouter extends CommonBase {
         * Creates a new router.
         */
        public static constructor_new(network_graph: NetworkGraph, logger: Logger, random_seed_bytes: Uint8Array, scorer: LockableScore): DefaultRouter {
-               const ret: bigint = bindings.DefaultRouter_new(network_graph == null ? 0n : CommonBase.get_ptr_of(network_graph), logger == null ? 0n : CommonBase.get_ptr_of(logger), bindings.encodeUint8Array(bindings.check_arr_len(random_seed_bytes, 32)), scorer == null ? 0n : CommonBase.get_ptr_of(scorer));
+               const ret: bigint = bindings.DefaultRouter_new(network_graph == null ? 0n : CommonBase.get_ptr_of(network_graph), CommonBase.get_ptr_of(logger), bindings.encodeUint8Array(bindings.check_arr_len(random_seed_bytes, 32)), CommonBase.get_ptr_of(scorer));
                const ret_hu_conv: DefaultRouter = new DefaultRouter(null, ret);
                CommonBase.add_ref_from(ret_hu_conv, ret_hu_conv);
                CommonBase.add_ref_from(ret_hu_conv, network_graph);
index 9ae7274f0037a26e587745ccedb0479ad523e6d1..70765c6eb5c82e4c219e9a7cda591e6c822ebc34 100644 (file)
@@ -526,7 +526,7 @@ export class EventsProvider extends CommonBase {
         * See the trait-level documentation for requirements.
         */
        public process_pending_events(handler: EventHandler): void {
-               bindings.EventsProvider_process_pending_events(this.ptr, handler == null ? 0n : CommonBase.get_ptr_of(handler));
+               bindings.EventsProvider_process_pending_events(this.ptr, CommonBase.get_ptr_of(handler));
                CommonBase.add_ref_from(this, handler);
        }
 
index ea757c6802625212798736cafb5e4780c15f8ea5..2543184fed70d3548b9883ac35e54758e26e622c 100644 (file)
@@ -467,7 +467,7 @@ export class Future extends CommonBase {
         * completed, the callback will be called immediately.
         */
        public register_callback_fn(callback: FutureCallback): void {
-               bindings.Future_register_callback_fn(this.ptr, callback == null ? 0n : CommonBase.get_ptr_of(callback));
+               bindings.Future_register_callback_fn(this.ptr, CommonBase.get_ptr_of(callback));
                CommonBase.add_ref_from(this, callback);
        }
 
index 8df8e9b8b0ff92793e2a1bd813f270695b10fe93..1553dc707b1f4ebf3ca8a0f37a0b2b4027e3e9e5 100644 (file)
@@ -745,7 +745,7 @@ export class InMemorySigner extends CommonBase {
         * Read a InMemorySigner from a byte array, created by InMemorySigner_write
         */
        public static constructor_read(ser: Uint8Array, arg: EntropySource): Result_InMemorySignerDecodeErrorZ {
-               const ret: bigint = bindings.InMemorySigner_read(bindings.encodeUint8Array(ser), arg == null ? 0n : CommonBase.get_ptr_of(arg));
+               const ret: bigint = bindings.InMemorySigner_read(bindings.encodeUint8Array(ser), CommonBase.get_ptr_of(arg));
                const ret_hu_conv: Result_InMemorySignerDecodeErrorZ = Result_InMemorySignerDecodeErrorZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, arg);
                return ret_hu_conv;
index 2c952672b15998dc6a9ee7430dfdc1f158da28ed..7d39a67c05c7c33975e3d8cdafc9fc98ff3ce45d 100644 (file)
@@ -478,7 +478,7 @@ export class LockableScore extends CommonBase {
                let structImplementation = {
                        lock (): bigint {
                                const ret: Score = arg.lock();
-                               const result: bigint = ret == null ? 0n : CommonBase.get_ptr_of(ret);
+                               const result: bigint = CommonBase.get_ptr_of(ret);
                                CommonBase.add_ref_from(impl_holder.held, ret);
                                return result;
                        },
index 70dfcc072576612961850d8647edb1ee0b6174f9..194f296f465c77190f7262220aa612d40a65e844 100644 (file)
@@ -465,7 +465,7 @@ export class MessageHandler extends CommonBase {
         * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
         */
        public set_chan_handler(val: ChannelMessageHandler): void {
-               bindings.MessageHandler_set_chan_handler(this.ptr, val == null ? 0n : CommonBase.get_ptr_of(val));
+               bindings.MessageHandler_set_chan_handler(this.ptr, CommonBase.get_ptr_of(val));
                CommonBase.add_ref_from(this, val);
        }
 
@@ -489,7 +489,7 @@ export class MessageHandler extends CommonBase {
         * [`P2PGossipSync`]: crate::routing::gossip::P2PGossipSync
         */
        public set_route_handler(val: RoutingMessageHandler): void {
-               bindings.MessageHandler_set_route_handler(this.ptr, val == null ? 0n : CommonBase.get_ptr_of(val));
+               bindings.MessageHandler_set_route_handler(this.ptr, CommonBase.get_ptr_of(val));
                CommonBase.add_ref_from(this, val);
        }
 
@@ -509,7 +509,7 @@ export class MessageHandler extends CommonBase {
         * [`IgnoringMessageHandler`].
         */
        public set_onion_message_handler(val: OnionMessageHandler): void {
-               bindings.MessageHandler_set_onion_message_handler(this.ptr, val == null ? 0n : CommonBase.get_ptr_of(val));
+               bindings.MessageHandler_set_onion_message_handler(this.ptr, CommonBase.get_ptr_of(val));
                CommonBase.add_ref_from(this, val);
        }
 
@@ -517,7 +517,7 @@ export class MessageHandler extends CommonBase {
         * Constructs a new MessageHandler given each field
         */
        public static constructor_new(chan_handler_arg: ChannelMessageHandler, route_handler_arg: RoutingMessageHandler, onion_message_handler_arg: OnionMessageHandler): MessageHandler {
-               const ret: bigint = bindings.MessageHandler_new(chan_handler_arg == null ? 0n : CommonBase.get_ptr_of(chan_handler_arg), route_handler_arg == null ? 0n : CommonBase.get_ptr_of(route_handler_arg), onion_message_handler_arg == null ? 0n : CommonBase.get_ptr_of(onion_message_handler_arg));
+               const ret: bigint = bindings.MessageHandler_new(CommonBase.get_ptr_of(chan_handler_arg), CommonBase.get_ptr_of(route_handler_arg), CommonBase.get_ptr_of(onion_message_handler_arg));
                const ret_hu_conv: MessageHandler = new MessageHandler(null, ret);
                CommonBase.add_ref_from(ret_hu_conv, ret_hu_conv);
                CommonBase.add_ref_from(ret_hu_conv, chan_handler_arg);
index 3f282a5690cba68499069543cfd7f14667d9802d..9d78ecab11b9ea99c7386d99329313b0a9c13cd8 100644 (file)
@@ -480,7 +480,7 @@ export class MultiThreadedLockableScore extends CommonBase {
         * Creates a new [`MultiThreadedLockableScore`] given an underlying [`Score`].
         */
        public static constructor_new(score: Score): MultiThreadedLockableScore {
-               const ret: bigint = bindings.MultiThreadedLockableScore_new(score == null ? 0n : CommonBase.get_ptr_of(score));
+               const ret: bigint = bindings.MultiThreadedLockableScore_new(CommonBase.get_ptr_of(score));
                const ret_hu_conv: MultiThreadedLockableScore = new MultiThreadedLockableScore(null, ret);
                CommonBase.add_ref_from(ret_hu_conv, ret_hu_conv);
                CommonBase.add_ref_from(ret_hu_conv, score);
index f4cb414d763aa63e80d52e9a29ead30889477830..021d2a281349b7cb05c671e99dabb52ee9e1e2c7 100644 (file)
@@ -467,7 +467,7 @@ export class NetworkGraph extends CommonBase {
         * Read a NetworkGraph from a byte array, created by NetworkGraph_write
         */
        public static constructor_read(ser: Uint8Array, arg: Logger): Result_NetworkGraphDecodeErrorZ {
-               const ret: bigint = bindings.NetworkGraph_read(bindings.encodeUint8Array(ser), arg == null ? 0n : CommonBase.get_ptr_of(arg));
+               const ret: bigint = bindings.NetworkGraph_read(bindings.encodeUint8Array(ser), CommonBase.get_ptr_of(arg));
                const ret_hu_conv: Result_NetworkGraphDecodeErrorZ = Result_NetworkGraphDecodeErrorZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, arg);
                return ret_hu_conv;
@@ -477,7 +477,7 @@ export class NetworkGraph extends CommonBase {
         * Creates a new, empty, network graph.
         */
        public static constructor_new(network: Network, logger: Logger): NetworkGraph {
-               const ret: bigint = bindings.NetworkGraph_new(network, logger == null ? 0n : CommonBase.get_ptr_of(logger));
+               const ret: bigint = bindings.NetworkGraph_new(network, CommonBase.get_ptr_of(logger));
                const ret_hu_conv: NetworkGraph = new NetworkGraph(null, ret);
                CommonBase.add_ref_from(ret_hu_conv, ret_hu_conv);
                CommonBase.add_ref_from(ret_hu_conv, logger);
index 81b404175dcdb621ae39acfc0d8977b4ac83accc..d146a183c08a1aafec2041dfc168ae7ddbc71e7d 100644 (file)
@@ -470,7 +470,7 @@ export class OnionMessageContents extends CommonBase {
         * Utility method to constructs a new Custom-variant OnionMessageContents
         */
        public static constructor_custom(a: CustomOnionMessageContents): OnionMessageContents {
-               const ret: bigint = bindings.OnionMessageContents_custom(a == null ? 0n : CommonBase.get_ptr_of(a));
+               const ret: bigint = bindings.OnionMessageContents_custom(CommonBase.get_ptr_of(a));
                const ret_hu_conv: OnionMessageContents = OnionMessageContents.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, ret_hu_conv);
                CommonBase.add_ref_from(ret_hu_conv, a);
index d39533ade4abac9c529767ca977be81a08df4066..75872a8d13ea0067fe8417f437b6500d7844e611 100644 (file)
@@ -522,7 +522,7 @@ export class OnionMessenger extends CommonBase {
         * their respective handlers.
         */
        public static constructor_new(entropy_source: EntropySource, node_signer: NodeSigner, logger: Logger, custom_handler: CustomOnionMessageHandler): OnionMessenger {
-               const ret: bigint = bindings.OnionMessenger_new(entropy_source == null ? 0n : CommonBase.get_ptr_of(entropy_source), node_signer == null ? 0n : CommonBase.get_ptr_of(node_signer), logger == null ? 0n : CommonBase.get_ptr_of(logger), custom_handler == null ? 0n : CommonBase.get_ptr_of(custom_handler));
+               const ret: bigint = bindings.OnionMessenger_new(CommonBase.get_ptr_of(entropy_source), CommonBase.get_ptr_of(node_signer), CommonBase.get_ptr_of(logger), CommonBase.get_ptr_of(custom_handler));
                const ret_hu_conv: OnionMessenger = new OnionMessenger(null, ret);
                CommonBase.add_ref_from(ret_hu_conv, ret_hu_conv);
                CommonBase.add_ref_from(ret_hu_conv, entropy_source);
index 5792d75c01ff30680ea5b630cf6c610ab8eee2c4..afc6b9829d2d849ece24b820eb05113f90859811 100644 (file)
@@ -455,7 +455,7 @@ export class Option_CustomOnionMessageContentsZ extends CommonBase {
         * Constructs a new COption_CustomOnionMessageContentsZ containing a crate::lightning::onion_message::packet::CustomOnionMessageContents
         */
        public static constructor_some(o: CustomOnionMessageContents): Option_CustomOnionMessageContentsZ {
-               const ret: bigint = bindings.COption_CustomOnionMessageContentsZ_some(o == null ? 0n : CommonBase.get_ptr_of(o));
+               const ret: bigint = bindings.COption_CustomOnionMessageContentsZ_some(CommonBase.get_ptr_of(o));
                const ret_hu_conv: Option_CustomOnionMessageContentsZ = Option_CustomOnionMessageContentsZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, ret_hu_conv);
                CommonBase.add_ref_from(ret_hu_conv, o);
index d3a05cab1f59757165867bb743b68bc0cc2a5c56..15868a50df2a2ce1a5b2900889f95db28e4e68b6 100644 (file)
@@ -455,7 +455,7 @@ export class Option_FilterZ extends CommonBase {
         * Constructs a new COption_FilterZ containing a crate::lightning::chain::Filter
         */
        public static constructor_some(o: Filter): Option_FilterZ {
-               const ret: bigint = bindings.COption_FilterZ_some(o == null ? 0n : CommonBase.get_ptr_of(o));
+               const ret: bigint = bindings.COption_FilterZ_some(CommonBase.get_ptr_of(o));
                const ret_hu_conv: Option_FilterZ = Option_FilterZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, ret_hu_conv);
                CommonBase.add_ref_from(ret_hu_conv, o);
index 0d62930b4c390694c2a5094ce724cb7bc9b46cd9..921f6f0084f08b53ffab8c6085ba0d0c91495e92 100644 (file)
@@ -472,6 +472,22 @@ export class Option_ScalarZ extends CommonBase {
                return ret_hu_conv;
        }
 
+       public clone_ptr(): bigint {
+               const ret: bigint = bindings.COption_ScalarZ_clone_ptr(this.ptr);
+               return ret;
+       }
+
+       /**
+        * Creates a new COption_ScalarZ which has the same data as `orig`
+        * but with all dynamically-allocated buffers duplicated in new buffers.
+        */
+       public clone(): Option_ScalarZ {
+               const ret: bigint = bindings.COption_ScalarZ_clone(this.ptr);
+               const ret_hu_conv: Option_ScalarZ = Option_ScalarZ.constr_from_ptr(ret);
+               CommonBase.add_ref_from(ret_hu_conv, this);
+               return ret_hu_conv;
+       }
+
 }
 /** A Option_ScalarZ of type Some */
 export class Option_ScalarZ_Some extends Option_ScalarZ {
index c2d20648de59032622533b27812fdc12bbf86c7d..f7e0fcf33538bed4845e5ba160015354481ceb7b 100644 (file)
@@ -455,7 +455,7 @@ export class Option_TypeZ extends CommonBase {
         * Constructs a new COption_TypeZ containing a crate::lightning::ln::wire::Type
         */
        public static constructor_some(o: Type): Option_TypeZ {
-               const ret: bigint = bindings.COption_TypeZ_some(o == null ? 0n : CommonBase.get_ptr_of(o));
+               const ret: bigint = bindings.COption_TypeZ_some(CommonBase.get_ptr_of(o));
                const ret_hu_conv: Option_TypeZ = Option_TypeZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, ret_hu_conv);
                CommonBase.add_ref_from(ret_hu_conv, o);
index eab1f8c39b1156194100b328277ad4325dba0f89..83ca6d1234e84dd5b3a744a15d90e05c77e526ee 100644 (file)
@@ -455,7 +455,7 @@ export class Option_UtxoLookupZ extends CommonBase {
         * Constructs a new COption_UtxoLookupZ containing a crate::lightning::routing::utxo::UtxoLookup
         */
        public static constructor_some(o: UtxoLookup): Option_UtxoLookupZ {
-               const ret: bigint = bindings.COption_UtxoLookupZ_some(o == null ? 0n : CommonBase.get_ptr_of(o));
+               const ret: bigint = bindings.COption_UtxoLookupZ_some(CommonBase.get_ptr_of(o));
                const ret_hu_conv: Option_UtxoLookupZ = Option_UtxoLookupZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, ret_hu_conv);
                CommonBase.add_ref_from(ret_hu_conv, o);
index 2e980a11245bc969156610073a0027d6050986b1..362415d8e4dfd1570d7b51c8c2eb85b470b33db6 100644 (file)
@@ -456,7 +456,7 @@ export class P2PGossipSync extends CommonBase {
         * correct, and the announcement is signed with channel owners' keys.
         */
        public static constructor_new(network_graph: NetworkGraph, utxo_lookup: Option_UtxoLookupZ, logger: Logger): P2PGossipSync {
-               const ret: bigint = bindings.P2PGossipSync_new(network_graph == null ? 0n : CommonBase.get_ptr_of(network_graph), CommonBase.get_ptr_of(utxo_lookup), logger == null ? 0n : CommonBase.get_ptr_of(logger));
+               const ret: bigint = bindings.P2PGossipSync_new(network_graph == null ? 0n : CommonBase.get_ptr_of(network_graph), CommonBase.get_ptr_of(utxo_lookup), CommonBase.get_ptr_of(logger));
                const ret_hu_conv: P2PGossipSync = new P2PGossipSync(null, ret);
                CommonBase.add_ref_from(ret_hu_conv, ret_hu_conv);
                CommonBase.add_ref_from(ret_hu_conv, network_graph);
index 03ca6ad901a1bd566b5ee0dd2e46fa2dd163e967..d04377630bdc986d0c98bfbac92910c540d299f1 100644 (file)
@@ -475,7 +475,7 @@ export class PeerManager extends CommonBase {
         * minute should suffice.
         */
        public static constructor_new(message_handler_chan_handler_arg: ChannelMessageHandler, message_handler_route_handler_arg: RoutingMessageHandler, message_handler_onion_message_handler_arg: OnionMessageHandler, current_time: number, ephemeral_random_data: Uint8Array, logger: Logger, custom_message_handler: CustomMessageHandler, node_signer: NodeSigner): PeerManager {
-               const ret: bigint = bindings.PeerManager_new(bindings.MessageHandler_new(message_handler_chan_handler_arg == null ? 0n : CommonBase.get_ptr_of(message_handler_chan_handler_arg), message_handler_route_handler_arg == null ? 0n : CommonBase.get_ptr_of(message_handler_route_handler_arg), message_handler_onion_message_handler_arg == null ? 0n : CommonBase.get_ptr_of(message_handler_onion_message_handler_arg)), current_time, bindings.encodeUint8Array(bindings.check_arr_len(ephemeral_random_data, 32)), logger == null ? 0n : CommonBase.get_ptr_of(logger), custom_message_handler == null ? 0n : CommonBase.get_ptr_of(custom_message_handler), node_signer == null ? 0n : CommonBase.get_ptr_of(node_signer));
+               const ret: bigint = bindings.PeerManager_new(bindings.MessageHandler_new(CommonBase.get_ptr_of(message_handler_chan_handler_arg), CommonBase.get_ptr_of(message_handler_route_handler_arg), CommonBase.get_ptr_of(message_handler_onion_message_handler_arg)), current_time, bindings.encodeUint8Array(bindings.check_arr_len(ephemeral_random_data, 32)), CommonBase.get_ptr_of(logger), CommonBase.get_ptr_of(custom_message_handler), CommonBase.get_ptr_of(node_signer));
                const ret_hu_conv: PeerManager = new PeerManager(null, ret);
                CommonBase.add_ref_from(ret_hu_conv, ret_hu_conv);
                CommonBase.add_ref_from(ret_hu_conv, message_handler_chan_handler_arg);
@@ -531,7 +531,7 @@ export class PeerManager extends CommonBase {
         * [`socket_disconnected`]: PeerManager::socket_disconnected
         */
        public new_outbound_connection(their_node_id: Uint8Array, descriptor: SocketDescriptor, remote_network_address: Option_NetAddressZ): Result_CVec_u8ZPeerHandleErrorZ {
-               const ret: bigint = bindings.PeerManager_new_outbound_connection(this.ptr, bindings.encodeUint8Array(bindings.check_arr_len(their_node_id, 33)), descriptor == null ? 0n : CommonBase.get_ptr_of(descriptor), CommonBase.get_ptr_of(remote_network_address));
+               const ret: bigint = bindings.PeerManager_new_outbound_connection(this.ptr, bindings.encodeUint8Array(bindings.check_arr_len(their_node_id, 33)), CommonBase.get_ptr_of(descriptor), CommonBase.get_ptr_of(remote_network_address));
                const ret_hu_conv: Result_CVec_u8ZPeerHandleErrorZ = Result_CVec_u8ZPeerHandleErrorZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(this, descriptor);
                CommonBase.add_ref_from(this, remote_network_address);
@@ -556,7 +556,7 @@ export class PeerManager extends CommonBase {
         * [`socket_disconnected`]: PeerManager::socket_disconnected
         */
        public new_inbound_connection(descriptor: SocketDescriptor, remote_network_address: Option_NetAddressZ): Result_NonePeerHandleErrorZ {
-               const ret: bigint = bindings.PeerManager_new_inbound_connection(this.ptr, descriptor == null ? 0n : CommonBase.get_ptr_of(descriptor), CommonBase.get_ptr_of(remote_network_address));
+               const ret: bigint = bindings.PeerManager_new_inbound_connection(this.ptr, CommonBase.get_ptr_of(descriptor), CommonBase.get_ptr_of(remote_network_address));
                const ret_hu_conv: Result_NonePeerHandleErrorZ = Result_NonePeerHandleErrorZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(this, descriptor);
                CommonBase.add_ref_from(this, remote_network_address);
@@ -578,7 +578,7 @@ export class PeerManager extends CommonBase {
         * [`write_buffer_space_avail`]: PeerManager::write_buffer_space_avail
         */
        public write_buffer_space_avail(descriptor: SocketDescriptor): Result_NonePeerHandleErrorZ {
-               const ret: bigint = bindings.PeerManager_write_buffer_space_avail(this.ptr, descriptor == null ? 0n : CommonBase.get_ptr_of(descriptor));
+               const ret: bigint = bindings.PeerManager_write_buffer_space_avail(this.ptr, CommonBase.get_ptr_of(descriptor));
                const ret_hu_conv: Result_NonePeerHandleErrorZ = Result_NonePeerHandleErrorZ.constr_from_ptr(ret);
                return ret_hu_conv;
        }
@@ -603,7 +603,7 @@ export class PeerManager extends CommonBase {
         * [`process_events`]: PeerManager::process_events
         */
        public read_event(peer_descriptor: SocketDescriptor, data: Uint8Array): Result_boolPeerHandleErrorZ {
-               const ret: bigint = bindings.PeerManager_read_event(this.ptr, peer_descriptor == null ? 0n : CommonBase.get_ptr_of(peer_descriptor), bindings.encodeUint8Array(data));
+               const ret: bigint = bindings.PeerManager_read_event(this.ptr, CommonBase.get_ptr_of(peer_descriptor), bindings.encodeUint8Array(data));
                const ret_hu_conv: Result_boolPeerHandleErrorZ = Result_boolPeerHandleErrorZ.constr_from_ptr(ret);
                return ret_hu_conv;
        }
@@ -635,7 +635,7 @@ export class PeerManager extends CommonBase {
         * Indicates that the given socket descriptor's connection is now closed.
         */
        public socket_disconnected(descriptor: SocketDescriptor): void {
-               bindings.PeerManager_socket_disconnected(this.ptr, descriptor == null ? 0n : CommonBase.get_ptr_of(descriptor));
+               bindings.PeerManager_socket_disconnected(this.ptr, CommonBase.get_ptr_of(descriptor));
        }
 
        /**
index 9614d0f99f60d0e0aecc2313c74282bdfb8eaa61..dac356b41bed669dc958ad67343107f40c7c25e0 100644 (file)
@@ -527,7 +527,7 @@ export class Persister extends CommonBase {
         * Persist the given [`WriteableScore`] to disk, returning an error if persistence failed.
         */
        public persist_scorer(scorer: WriteableScore): Result_NoneErrorZ {
-               const ret: bigint = bindings.Persister_persist_scorer(this.ptr, scorer == null ? 0n : CommonBase.get_ptr_of(scorer));
+               const ret: bigint = bindings.Persister_persist_scorer(this.ptr, CommonBase.get_ptr_of(scorer));
                const ret_hu_conv: Result_NoneErrorZ = Result_NoneErrorZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(this, scorer);
                return ret_hu_conv;
index c82b2f46a719d4178508448c69c60239d6d40916..19697dab48d3039e843cde060885eb298b3e4c68 100644 (file)
@@ -485,7 +485,7 @@ export class ProbabilisticScorer extends CommonBase {
         * through a network graph.
         */
        public static constructor_new(params: ProbabilisticScoringParameters, network_graph: NetworkGraph, logger: Logger): ProbabilisticScorer {
-               const ret: bigint = bindings.ProbabilisticScorer_new(params == null ? 0n : CommonBase.get_ptr_of(params), network_graph == null ? 0n : CommonBase.get_ptr_of(network_graph), logger == null ? 0n : CommonBase.get_ptr_of(logger));
+               const ret: bigint = bindings.ProbabilisticScorer_new(params == null ? 0n : CommonBase.get_ptr_of(params), network_graph == null ? 0n : CommonBase.get_ptr_of(network_graph), CommonBase.get_ptr_of(logger));
                const ret_hu_conv: ProbabilisticScorer = new ProbabilisticScorer(null, ret);
                CommonBase.add_ref_from(ret_hu_conv, ret_hu_conv);
                CommonBase.add_ref_from(ret_hu_conv, params);
@@ -611,7 +611,7 @@ export class ProbabilisticScorer extends CommonBase {
         * Read a ProbabilisticScorer from a byte array, created by ProbabilisticScorer_write
         */
        public static constructor_read(ser: Uint8Array, arg_a: ProbabilisticScoringParameters, arg_b: NetworkGraph, arg_c: Logger): Result_ProbabilisticScorerDecodeErrorZ {
-               const ret: bigint = bindings.ProbabilisticScorer_read(bindings.encodeUint8Array(ser), arg_a == null ? 0n : CommonBase.get_ptr_of(arg_a), arg_b == null ? 0n : CommonBase.get_ptr_of(arg_b), arg_c == null ? 0n : CommonBase.get_ptr_of(arg_c));
+               const ret: bigint = bindings.ProbabilisticScorer_read(bindings.encodeUint8Array(ser), arg_a == null ? 0n : CommonBase.get_ptr_of(arg_a), arg_b == null ? 0n : CommonBase.get_ptr_of(arg_b), CommonBase.get_ptr_of(arg_c));
                const ret_hu_conv: Result_ProbabilisticScorerDecodeErrorZ = Result_ProbabilisticScorerDecodeErrorZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, arg_a);
                CommonBase.add_ref_from(ret_hu_conv, arg_b);
index 6f17e760c90faf1b3f387bd19d7bdeaa63caef32..974df8a7cadedc80c639ae6ee8e8640fa3242f5b 100644 (file)
@@ -453,7 +453,7 @@ export class RapidGossipSync extends CommonBase {
         * Instantiate a new [`RapidGossipSync`] instance.
         */
        public static constructor_new(network_graph: NetworkGraph, logger: Logger): RapidGossipSync {
-               const ret: bigint = bindings.RapidGossipSync_new(network_graph == null ? 0n : CommonBase.get_ptr_of(network_graph), logger == null ? 0n : CommonBase.get_ptr_of(logger));
+               const ret: bigint = bindings.RapidGossipSync_new(network_graph == null ? 0n : CommonBase.get_ptr_of(network_graph), CommonBase.get_ptr_of(logger));
                const ret_hu_conv: RapidGossipSync = new RapidGossipSync(null, ret);
                CommonBase.add_ref_from(ret_hu_conv, ret_hu_conv);
                CommonBase.add_ref_from(ret_hu_conv, network_graph);
index af3f33436ec4025a844e2be58bcdbfefe866603d..654a061370c185cd89e2cab031bbf216566b3ed3 100644 (file)
@@ -453,7 +453,7 @@ export class Result_NetworkGraphDecodeErrorZ extends CommonBase {
         * Creates a new CResult_NetworkGraphDecodeErrorZ in the success state.
         */
        public static constructor_ok(o_network: Network, o_logger: Logger): Result_NetworkGraphDecodeErrorZ {
-               const ret: bigint = bindings.CResult_NetworkGraphDecodeErrorZ_ok(bindings.NetworkGraph_new(o_network, o_logger == null ? 0n : CommonBase.get_ptr_of(o_logger)));
+               const ret: bigint = bindings.CResult_NetworkGraphDecodeErrorZ_ok(bindings.NetworkGraph_new(o_network, CommonBase.get_ptr_of(o_logger)));
                const ret_hu_conv: Result_NetworkGraphDecodeErrorZ = Result_NetworkGraphDecodeErrorZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, o_logger);
                return ret_hu_conv;
index 294fa36585c9153b5d3bdd45fa5f4c5638af4d48..077864a98e887f26605617d1c5c21b7aa3afe9a5 100644 (file)
@@ -453,7 +453,7 @@ export class Result_ProbabilisticScorerDecodeErrorZ extends CommonBase {
         * Creates a new CResult_ProbabilisticScorerDecodeErrorZ in the success state.
         */
        public static constructor_ok(o_params: ProbabilisticScoringParameters, o_network_graph: NetworkGraph, o_logger: Logger): Result_ProbabilisticScorerDecodeErrorZ {
-               const ret: bigint = bindings.CResult_ProbabilisticScorerDecodeErrorZ_ok(bindings.ProbabilisticScorer_new(o_params == null ? 0n : CommonBase.get_ptr_of(o_params), o_network_graph == null ? 0n : CommonBase.get_ptr_of(o_network_graph), o_logger == null ? 0n : CommonBase.get_ptr_of(o_logger)));
+               const ret: bigint = bindings.CResult_ProbabilisticScorerDecodeErrorZ_ok(bindings.ProbabilisticScorer_new(o_params == null ? 0n : CommonBase.get_ptr_of(o_params), o_network_graph == null ? 0n : CommonBase.get_ptr_of(o_network_graph), CommonBase.get_ptr_of(o_logger)));
                const ret_hu_conv: Result_ProbabilisticScorerDecodeErrorZ = Result_ProbabilisticScorerDecodeErrorZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, o_params);
                CommonBase.add_ref_from(ret_hu_conv, o_network_graph);
index 578664788d395c003a5572fd9bee0fa9e30ac08f..727c8a43f43647f504804e14d5858ce930ca3c4a 100644 (file)
@@ -453,7 +453,7 @@ export class Result_WriteableEcdsaChannelSignerDecodeErrorZ extends CommonBase {
         * Creates a new CResult_WriteableEcdsaChannelSignerDecodeErrorZ in the success state.
         */
        public static constructor_ok(o: WriteableEcdsaChannelSigner): Result_WriteableEcdsaChannelSignerDecodeErrorZ {
-               const ret: bigint = bindings.CResult_WriteableEcdsaChannelSignerDecodeErrorZ_ok(o == null ? 0n : CommonBase.get_ptr_of(o));
+               const ret: bigint = bindings.CResult_WriteableEcdsaChannelSignerDecodeErrorZ_ok(CommonBase.get_ptr_of(o));
                const ret_hu_conv: Result_WriteableEcdsaChannelSignerDecodeErrorZ = Result_WriteableEcdsaChannelSignerDecodeErrorZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, o);
                return ret_hu_conv;
index 5342e118245e84fc5a53529313fbb89f17a4a11e..7d07123fe66ea466f3b6c27659a8a7da12bc5c27 100644 (file)
@@ -454,7 +454,7 @@ export class ScorerAccountingForInFlightHtlcs extends CommonBase {
         * Initialize a new `ScorerAccountingForInFlightHtlcs`.
         */
        public static constructor_new(scorer: Score, inflight_htlcs: InFlightHtlcs): ScorerAccountingForInFlightHtlcs {
-               const ret: bigint = bindings.ScorerAccountingForInFlightHtlcs_new(scorer == null ? 0n : CommonBase.get_ptr_of(scorer), inflight_htlcs == null ? 0n : CommonBase.get_ptr_of(inflight_htlcs));
+               const ret: bigint = bindings.ScorerAccountingForInFlightHtlcs_new(CommonBase.get_ptr_of(scorer), inflight_htlcs == null ? 0n : CommonBase.get_ptr_of(inflight_htlcs));
                const ret_hu_conv: ScorerAccountingForInFlightHtlcs = new ScorerAccountingForInFlightHtlcs(null, ret);
                CommonBase.add_ref_from(ret_hu_conv, ret_hu_conv);
                CommonBase.add_ref_from(ret_hu_conv, scorer);
index 589265bf341d16beaa3f9cea5bc42d86bec1fba5..bef7d721932905219022a63c02b313b893bc7718 100644 (file)
@@ -518,7 +518,7 @@ export class SignerProvider extends CommonBase {
                        derive_channel_signer (channel_value_satoshis: bigint, channel_keys_id: number): bigint {
                                const channel_keys_id_conv: Uint8Array = bindings.decodeUint8Array(channel_keys_id);
                                const ret: WriteableEcdsaChannelSigner = arg.derive_channel_signer(channel_value_satoshis, channel_keys_id_conv);
-                               const result: bigint = ret == null ? 0n : ret.clone_ptr();
+                               const result: bigint = ret.clone_ptr();
                                CommonBase.add_ref_from(impl_holder.held, ret);
                                return result;
                        },
index c82844c317d9fe042985c2f279ea92bb91a9325f..11d024c6e6637c0bbbc8bc0075818e7e836143d0 100644 (file)
@@ -496,7 +496,7 @@ export class TrustedCommitmentTransaction extends CommonBase {
         * This function is only valid in the holder commitment context, it always uses EcdsaSighashType::All.
         */
        public get_htlc_sigs(htlc_base_key: Uint8Array, channel_parameters: DirectedChannelTransactionParameters, entropy_source: EntropySource): Result_CVec_SignatureZNoneZ {
-               const ret: bigint = bindings.TrustedCommitmentTransaction_get_htlc_sigs(this.ptr, bindings.encodeUint8Array(bindings.check_arr_len(htlc_base_key, 32)), channel_parameters == null ? 0n : CommonBase.get_ptr_of(channel_parameters), entropy_source == null ? 0n : CommonBase.get_ptr_of(entropy_source));
+               const ret: bigint = bindings.TrustedCommitmentTransaction_get_htlc_sigs(this.ptr, bindings.encodeUint8Array(bindings.check_arr_len(htlc_base_key, 32)), channel_parameters == null ? 0n : CommonBase.get_ptr_of(channel_parameters), CommonBase.get_ptr_of(entropy_source));
                const ret_hu_conv: Result_CVec_SignatureZNoneZ = Result_CVec_SignatureZNoneZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(this, channel_parameters);
                CommonBase.add_ref_from(this, entropy_source);
index 04087c1a2f22fcc3a9c4c803c6273ac0c2961c3c..2bf55516a9195602dfe905fca0db7d9a933f2fd2 100644 (file)
@@ -468,7 +468,7 @@ export class TwoTuple_BlockHashChannelManagerZ extends CommonBase {
         * Creates a new C2Tuple_BlockHashChannelManagerZ from the contained elements.
         */
        public static constructor_new(a: Uint8Array, b_fee_est: FeeEstimator, b_chain_monitor: Watch, b_tx_broadcaster: BroadcasterInterface, b_router: Router, b_logger: Logger, b_entropy_source: EntropySource, b_node_signer: NodeSigner, b_signer_provider: SignerProvider, b_config: UserConfig, b_params: ChainParameters): TwoTuple_BlockHashChannelManagerZ {
-               const ret: bigint = bindings.C2Tuple_BlockHashChannelManagerZ_new(bindings.encodeUint8Array(bindings.check_arr_len(a, 32)), bindings.ChannelManager_new(b_fee_est == null ? 0n : CommonBase.get_ptr_of(b_fee_est), b_chain_monitor == null ? 0n : CommonBase.get_ptr_of(b_chain_monitor), b_tx_broadcaster == null ? 0n : CommonBase.get_ptr_of(b_tx_broadcaster), b_router == null ? 0n : CommonBase.get_ptr_of(b_router), b_logger == null ? 0n : CommonBase.get_ptr_of(b_logger), b_entropy_source == null ? 0n : CommonBase.get_ptr_of(b_entropy_source), b_node_signer == null ? 0n : CommonBase.get_ptr_of(b_node_signer), b_signer_provider == null ? 0n : CommonBase.get_ptr_of(b_signer_provider), b_config == null ? 0n : CommonBase.get_ptr_of(b_config), b_params == null ? 0n : CommonBase.get_ptr_of(b_params)));
+               const ret: bigint = bindings.C2Tuple_BlockHashChannelManagerZ_new(bindings.encodeUint8Array(bindings.check_arr_len(a, 32)), bindings.ChannelManager_new(CommonBase.get_ptr_of(b_fee_est), CommonBase.get_ptr_of(b_chain_monitor), CommonBase.get_ptr_of(b_tx_broadcaster), CommonBase.get_ptr_of(b_router), CommonBase.get_ptr_of(b_logger), CommonBase.get_ptr_of(b_entropy_source), CommonBase.get_ptr_of(b_node_signer), CommonBase.get_ptr_of(b_signer_provider), b_config == null ? 0n : CommonBase.get_ptr_of(b_config), b_params == null ? 0n : CommonBase.get_ptr_of(b_params)));
                const ret_hu_conv: TwoTuple_BlockHashChannelManagerZ = new TwoTuple_BlockHashChannelManagerZ(null, ret);
                CommonBase.add_ref_from(ret_hu_conv, ret_hu_conv);
                CommonBase.add_ref_from(ret_hu_conv, b_fee_est);
index 7d0f6e5509dd929817499db9ab238a3af9b8f37b..749fc6a4c33ec2fa9fef66d00426e264155bff7d 100644 (file)
@@ -484,7 +484,7 @@ export class TwoTuple_PublicKeyTypeZ extends CommonBase {
         * Creates a new C2Tuple_PublicKeyTypeZ from the contained elements.
         */
        public static constructor_new(a: Uint8Array, b: Type): TwoTuple_PublicKeyTypeZ {
-               const ret: bigint = bindings.C2Tuple_PublicKeyTypeZ_new(bindings.encodeUint8Array(bindings.check_arr_len(a, 33)), b == null ? 0n : CommonBase.get_ptr_of(b));
+               const ret: bigint = bindings.C2Tuple_PublicKeyTypeZ_new(bindings.encodeUint8Array(bindings.check_arr_len(a, 33)), CommonBase.get_ptr_of(b));
                const ret_hu_conv: TwoTuple_PublicKeyTypeZ = new TwoTuple_PublicKeyTypeZ(null, ret);
                CommonBase.add_ref_from(ret_hu_conv, ret_hu_conv);
                CommonBase.add_ref_from(ret_hu_conv, b);
index 65a395af1a225b7d611c8dd16b685445faf72ad7..8221663466aa76cf95d97205b3e35ddef4766c5b 100644 (file)
@@ -532,7 +532,7 @@ export class UtilMethods extends CommonBase {
         * Read a C2Tuple_BlockHashChannelMonitorZ from a byte array, created by C2Tuple_BlockHashChannelMonitorZ_write
         */
        public static constructor_C2Tuple_BlockHashChannelMonitorZ_read(ser: Uint8Array, arg_a: EntropySource, arg_b: SignerProvider): Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
-               const ret: bigint = bindings.C2Tuple_BlockHashChannelMonitorZ_read(bindings.encodeUint8Array(ser), arg_a == null ? 0n : CommonBase.get_ptr_of(arg_a), arg_b == null ? 0n : CommonBase.get_ptr_of(arg_b));
+               const ret: bigint = bindings.C2Tuple_BlockHashChannelMonitorZ_read(bindings.encodeUint8Array(ser), CommonBase.get_ptr_of(arg_a), CommonBase.get_ptr_of(arg_b));
                const ret_hu_conv: Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ = Result_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, arg_a);
                CommonBase.add_ref_from(ret_hu_conv, arg_b);
@@ -555,7 +555,7 @@ export class UtilMethods extends CommonBase {
         * Read a C2Tuple_BlockHashChannelManagerZ from a byte array, created by C2Tuple_BlockHashChannelManagerZ_write
         */
        public static constructor_C2Tuple_BlockHashChannelManagerZ_read(ser: Uint8Array, arg_entropy_source: EntropySource, arg_node_signer: NodeSigner, arg_signer_provider: SignerProvider, arg_fee_estimator: FeeEstimator, arg_chain_monitor: Watch, arg_tx_broadcaster: BroadcasterInterface, arg_router: Router, arg_logger: Logger, arg_default_config: UserConfig, arg_channel_monitors: ChannelMonitor[]): Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
-               const ret: bigint = bindings.C2Tuple_BlockHashChannelManagerZ_read(bindings.encodeUint8Array(ser), bindings.ChannelManagerReadArgs_new(arg_entropy_source == null ? 0n : CommonBase.get_ptr_of(arg_entropy_source), arg_node_signer == null ? 0n : CommonBase.get_ptr_of(arg_node_signer), arg_signer_provider == null ? 0n : CommonBase.get_ptr_of(arg_signer_provider), arg_fee_estimator == null ? 0n : CommonBase.get_ptr_of(arg_fee_estimator), arg_chain_monitor == null ? 0n : CommonBase.get_ptr_of(arg_chain_monitor), arg_tx_broadcaster == null ? 0n : CommonBase.get_ptr_of(arg_tx_broadcaster), arg_router == null ? 0n : CommonBase.get_ptr_of(arg_router), arg_logger == null ? 0n : CommonBase.get_ptr_of(arg_logger), arg_default_config == null ? 0n : CommonBase.get_ptr_of(arg_default_config), bindings.encodeUint64Array(arg_channel_monitors != null ? arg_channel_monitors.map(arg_channel_monitors_conv_16 => arg_channel_monitors_conv_16 == null ? 0n : CommonBase.get_ptr_of(arg_channel_monitors_conv_16)) : null)));
+               const ret: bigint = bindings.C2Tuple_BlockHashChannelManagerZ_read(bindings.encodeUint8Array(ser), bindings.ChannelManagerReadArgs_new(CommonBase.get_ptr_of(arg_entropy_source), CommonBase.get_ptr_of(arg_node_signer), CommonBase.get_ptr_of(arg_signer_provider), CommonBase.get_ptr_of(arg_fee_estimator), CommonBase.get_ptr_of(arg_chain_monitor), CommonBase.get_ptr_of(arg_tx_broadcaster), CommonBase.get_ptr_of(arg_router), CommonBase.get_ptr_of(arg_logger), arg_default_config == null ? 0n : CommonBase.get_ptr_of(arg_default_config), bindings.encodeUint64Array(arg_channel_monitors != null ? arg_channel_monitors.map(arg_channel_monitors_conv_16 => arg_channel_monitors_conv_16 == null ? 0n : CommonBase.get_ptr_of(arg_channel_monitors_conv_16)) : null)));
                const ret_hu_conv: Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ = Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, arg_entropy_source);
                CommonBase.add_ref_from(ret_hu_conv, arg_node_signer);
@@ -588,7 +588,7 @@ export class UtilMethods extends CommonBase {
         * [`NodeSigner::get_inbound_payment_key_material`]: crate::chain::keysinterface::NodeSigner::get_inbound_payment_key_material
         */
        public static constructor_create(keys: ExpandedKey, min_value_msat: Option_u64Z, invoice_expiry_delta_secs: number, entropy_source: EntropySource, current_time: bigint, min_final_cltv_expiry_delta: Option_u16Z): Result_C2Tuple_PaymentHashPaymentSecretZNoneZ {
-               const ret: bigint = bindings.create(keys == null ? 0n : CommonBase.get_ptr_of(keys), CommonBase.get_ptr_of(min_value_msat), invoice_expiry_delta_secs, entropy_source == null ? 0n : CommonBase.get_ptr_of(entropy_source), current_time, CommonBase.get_ptr_of(min_final_cltv_expiry_delta));
+               const ret: bigint = bindings.create(keys == null ? 0n : CommonBase.get_ptr_of(keys), CommonBase.get_ptr_of(min_value_msat), invoice_expiry_delta_secs, CommonBase.get_ptr_of(entropy_source), current_time, CommonBase.get_ptr_of(min_final_cltv_expiry_delta));
                const ret_hu_conv: Result_C2Tuple_PaymentHashPaymentSecretZNoneZ = Result_C2Tuple_PaymentHashPaymentSecretZNoneZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, keys);
                CommonBase.add_ref_from(ret_hu_conv, min_value_msat);
@@ -861,7 +861,7 @@ export class UtilMethods extends CommonBase {
         * Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
         */
        public static constructor_find_route(our_node_pubkey: Uint8Array, route_params: RouteParameters, network_graph: NetworkGraph, first_hops: ChannelDetails[]|null, logger: Logger, scorer: Score, random_seed_bytes: Uint8Array): Result_RouteLightningErrorZ {
-               const ret: bigint = bindings.find_route(bindings.encodeUint8Array(bindings.check_arr_len(our_node_pubkey, 33)), route_params == null ? 0n : CommonBase.get_ptr_of(route_params), network_graph == null ? 0n : CommonBase.get_ptr_of(network_graph), bindings.encodeUint64Array(first_hops != null ? first_hops.map(first_hops_conv_16 => first_hops_conv_16 == null ? 0n : CommonBase.get_ptr_of(first_hops_conv_16)) : null), logger == null ? 0n : CommonBase.get_ptr_of(logger), scorer == null ? 0n : CommonBase.get_ptr_of(scorer), bindings.encodeUint8Array(bindings.check_arr_len(random_seed_bytes, 32)));
+               const ret: bigint = bindings.find_route(bindings.encodeUint8Array(bindings.check_arr_len(our_node_pubkey, 33)), route_params == null ? 0n : CommonBase.get_ptr_of(route_params), network_graph == null ? 0n : CommonBase.get_ptr_of(network_graph), bindings.encodeUint64Array(first_hops != null ? first_hops.map(first_hops_conv_16 => first_hops_conv_16 == null ? 0n : CommonBase.get_ptr_of(first_hops_conv_16)) : null), CommonBase.get_ptr_of(logger), CommonBase.get_ptr_of(scorer), bindings.encodeUint8Array(bindings.check_arr_len(random_seed_bytes, 32)));
                const ret_hu_conv: Result_RouteLightningErrorZ = Result_RouteLightningErrorZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, route_params);
                CommonBase.add_ref_from(ret_hu_conv, network_graph);
@@ -878,7 +878,7 @@ export class UtilMethods extends CommonBase {
         * Re-uses logic from `find_route`, so the restrictions described there also apply here.
         */
        public static constructor_build_route_from_hops(our_node_pubkey: Uint8Array, hops: Uint8Array[], route_params: RouteParameters, network_graph: NetworkGraph, logger: Logger, random_seed_bytes: Uint8Array): Result_RouteLightningErrorZ {
-               const ret: bigint = bindings.build_route_from_hops(bindings.encodeUint8Array(bindings.check_arr_len(our_node_pubkey, 33)), bindings.encodeUint32Array(hops != null ? hops.map(hops_conv_12 => bindings.encodeUint8Array(bindings.check_arr_len(hops_conv_12, 33))) : null), route_params == null ? 0n : CommonBase.get_ptr_of(route_params), network_graph == null ? 0n : CommonBase.get_ptr_of(network_graph), logger == null ? 0n : CommonBase.get_ptr_of(logger), bindings.encodeUint8Array(bindings.check_arr_len(random_seed_bytes, 32)));
+               const ret: bigint = bindings.build_route_from_hops(bindings.encodeUint8Array(bindings.check_arr_len(our_node_pubkey, 33)), bindings.encodeUint32Array(hops != null ? hops.map(hops_conv_12 => bindings.encodeUint8Array(bindings.check_arr_len(hops_conv_12, 33))) : null), route_params == null ? 0n : CommonBase.get_ptr_of(route_params), network_graph == null ? 0n : CommonBase.get_ptr_of(network_graph), CommonBase.get_ptr_of(logger), bindings.encodeUint8Array(bindings.check_arr_len(random_seed_bytes, 32)));
                const ret_hu_conv: Result_RouteLightningErrorZ = Result_RouteLightningErrorZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, route_params);
                CommonBase.add_ref_from(ret_hu_conv, network_graph);
@@ -1047,7 +1047,7 @@ export class UtilMethods extends CommonBase {
         * Note that payment_hash (or a relevant inner pointer) may be NULL or all-0s to represent None
         */
        public static constructor_create_phantom_invoice(amt_msat: Option_u64Z, payment_hash: Uint8Array|null, description: string, invoice_expiry_delta_secs: number, phantom_route_hints: PhantomRouteHints[], entropy_source: EntropySource, node_signer: NodeSigner, logger: Logger, network: Currency, min_final_cltv_expiry_delta: Option_u16Z, duration_since_epoch: bigint): Result_InvoiceSignOrCreationErrorZ {
-               const ret: bigint = bindings.create_phantom_invoice(CommonBase.get_ptr_of(amt_msat), bindings.encodeUint8Array(bindings.check_arr_len(payment_hash, 32)), bindings.encodeString(description), invoice_expiry_delta_secs, bindings.encodeUint64Array(phantom_route_hints != null ? phantom_route_hints.map(phantom_route_hints_conv_19 => phantom_route_hints_conv_19 == null ? 0n : CommonBase.get_ptr_of(phantom_route_hints_conv_19)) : null), entropy_source == null ? 0n : CommonBase.get_ptr_of(entropy_source), node_signer == null ? 0n : CommonBase.get_ptr_of(node_signer), logger == null ? 0n : CommonBase.get_ptr_of(logger), network, CommonBase.get_ptr_of(min_final_cltv_expiry_delta), duration_since_epoch);
+               const ret: bigint = bindings.create_phantom_invoice(CommonBase.get_ptr_of(amt_msat), bindings.encodeUint8Array(bindings.check_arr_len(payment_hash, 32)), bindings.encodeString(description), invoice_expiry_delta_secs, bindings.encodeUint64Array(phantom_route_hints != null ? phantom_route_hints.map(phantom_route_hints_conv_19 => phantom_route_hints_conv_19 == null ? 0n : CommonBase.get_ptr_of(phantom_route_hints_conv_19)) : null), CommonBase.get_ptr_of(entropy_source), CommonBase.get_ptr_of(node_signer), CommonBase.get_ptr_of(logger), network, CommonBase.get_ptr_of(min_final_cltv_expiry_delta), duration_since_epoch);
                const ret_hu_conv: Result_InvoiceSignOrCreationErrorZ = Result_InvoiceSignOrCreationErrorZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, amt_msat);
                phantom_route_hints.forEach((phantom_route_hints_conv_19: PhantomRouteHints) => { CommonBase.add_ref_from(ret_hu_conv, phantom_route_hints_conv_19); });
@@ -1099,7 +1099,7 @@ export class UtilMethods extends CommonBase {
         * Note that payment_hash (or a relevant inner pointer) may be NULL or all-0s to represent None
         */
        public static constructor_create_phantom_invoice_with_description_hash(amt_msat: Option_u64Z, payment_hash: Uint8Array|null, invoice_expiry_delta_secs: number, description_hash: Sha256, phantom_route_hints: PhantomRouteHints[], entropy_source: EntropySource, node_signer: NodeSigner, logger: Logger, network: Currency, min_final_cltv_expiry_delta: Option_u16Z, duration_since_epoch: bigint): Result_InvoiceSignOrCreationErrorZ {
-               const ret: bigint = bindings.create_phantom_invoice_with_description_hash(CommonBase.get_ptr_of(amt_msat), bindings.encodeUint8Array(bindings.check_arr_len(payment_hash, 32)), invoice_expiry_delta_secs, description_hash == null ? 0n : CommonBase.get_ptr_of(description_hash), bindings.encodeUint64Array(phantom_route_hints != null ? phantom_route_hints.map(phantom_route_hints_conv_19 => phantom_route_hints_conv_19 == null ? 0n : CommonBase.get_ptr_of(phantom_route_hints_conv_19)) : null), entropy_source == null ? 0n : CommonBase.get_ptr_of(entropy_source), node_signer == null ? 0n : CommonBase.get_ptr_of(node_signer), logger == null ? 0n : CommonBase.get_ptr_of(logger), network, CommonBase.get_ptr_of(min_final_cltv_expiry_delta), duration_since_epoch);
+               const ret: bigint = bindings.create_phantom_invoice_with_description_hash(CommonBase.get_ptr_of(amt_msat), bindings.encodeUint8Array(bindings.check_arr_len(payment_hash, 32)), invoice_expiry_delta_secs, description_hash == null ? 0n : CommonBase.get_ptr_of(description_hash), bindings.encodeUint64Array(phantom_route_hints != null ? phantom_route_hints.map(phantom_route_hints_conv_19 => phantom_route_hints_conv_19 == null ? 0n : CommonBase.get_ptr_of(phantom_route_hints_conv_19)) : null), CommonBase.get_ptr_of(entropy_source), CommonBase.get_ptr_of(node_signer), CommonBase.get_ptr_of(logger), network, CommonBase.get_ptr_of(min_final_cltv_expiry_delta), duration_since_epoch);
                const ret_hu_conv: Result_InvoiceSignOrCreationErrorZ = Result_InvoiceSignOrCreationErrorZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, amt_msat);
                CommonBase.add_ref_from(ret_hu_conv, description_hash);
@@ -1117,7 +1117,7 @@ export class UtilMethods extends CommonBase {
         * available and the current time is supplied by the caller.
         */
        public static constructor_create_invoice_from_channelmanager_with_description_hash_and_duration_since_epoch(channelmanager: ChannelManager, node_signer: NodeSigner, logger: Logger, network: Currency, amt_msat: Option_u64Z, description_hash: Sha256, duration_since_epoch: bigint, invoice_expiry_delta_secs: number, min_final_cltv_expiry_delta: Option_u16Z): Result_InvoiceSignOrCreationErrorZ {
-               const ret: bigint = bindings.create_invoice_from_channelmanager_with_description_hash_and_duration_since_epoch(channelmanager == null ? 0n : CommonBase.get_ptr_of(channelmanager), node_signer == null ? 0n : CommonBase.get_ptr_of(node_signer), logger == null ? 0n : CommonBase.get_ptr_of(logger), network, CommonBase.get_ptr_of(amt_msat), description_hash == null ? 0n : CommonBase.get_ptr_of(description_hash), duration_since_epoch, invoice_expiry_delta_secs, CommonBase.get_ptr_of(min_final_cltv_expiry_delta));
+               const ret: bigint = bindings.create_invoice_from_channelmanager_with_description_hash_and_duration_since_epoch(channelmanager == null ? 0n : CommonBase.get_ptr_of(channelmanager), CommonBase.get_ptr_of(node_signer), CommonBase.get_ptr_of(logger), network, CommonBase.get_ptr_of(amt_msat), description_hash == null ? 0n : CommonBase.get_ptr_of(description_hash), duration_since_epoch, invoice_expiry_delta_secs, CommonBase.get_ptr_of(min_final_cltv_expiry_delta));
                const ret_hu_conv: Result_InvoiceSignOrCreationErrorZ = Result_InvoiceSignOrCreationErrorZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, channelmanager);
                CommonBase.add_ref_from(ret_hu_conv, node_signer);
@@ -1134,7 +1134,7 @@ export class UtilMethods extends CommonBase {
         * available and the current time is supplied by the caller.
         */
        public static constructor_create_invoice_from_channelmanager_and_duration_since_epoch(channelmanager: ChannelManager, node_signer: NodeSigner, logger: Logger, network: Currency, amt_msat: Option_u64Z, description: string, duration_since_epoch: bigint, invoice_expiry_delta_secs: number, min_final_cltv_expiry_delta: Option_u16Z): Result_InvoiceSignOrCreationErrorZ {
-               const ret: bigint = bindings.create_invoice_from_channelmanager_and_duration_since_epoch(channelmanager == null ? 0n : CommonBase.get_ptr_of(channelmanager), node_signer == null ? 0n : CommonBase.get_ptr_of(node_signer), logger == null ? 0n : CommonBase.get_ptr_of(logger), network, CommonBase.get_ptr_of(amt_msat), bindings.encodeString(description), duration_since_epoch, invoice_expiry_delta_secs, CommonBase.get_ptr_of(min_final_cltv_expiry_delta));
+               const ret: bigint = bindings.create_invoice_from_channelmanager_and_duration_since_epoch(channelmanager == null ? 0n : CommonBase.get_ptr_of(channelmanager), CommonBase.get_ptr_of(node_signer), CommonBase.get_ptr_of(logger), network, CommonBase.get_ptr_of(amt_msat), bindings.encodeString(description), duration_since_epoch, invoice_expiry_delta_secs, CommonBase.get_ptr_of(min_final_cltv_expiry_delta));
                const ret_hu_conv: Result_InvoiceSignOrCreationErrorZ = Result_InvoiceSignOrCreationErrorZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, channelmanager);
                CommonBase.add_ref_from(ret_hu_conv, node_signer);
@@ -1151,7 +1151,7 @@ export class UtilMethods extends CommonBase {
         * the payment hash is also involved outside the scope of lightning.
         */
        public static constructor_create_invoice_from_channelmanager_and_duration_since_epoch_with_payment_hash(channelmanager: ChannelManager, node_signer: NodeSigner, logger: Logger, network: Currency, amt_msat: Option_u64Z, description: string, duration_since_epoch: bigint, invoice_expiry_delta_secs: number, payment_hash: Uint8Array, min_final_cltv_expiry_delta: Option_u16Z): Result_InvoiceSignOrCreationErrorZ {
-               const ret: bigint = bindings.create_invoice_from_channelmanager_and_duration_since_epoch_with_payment_hash(channelmanager == null ? 0n : CommonBase.get_ptr_of(channelmanager), node_signer == null ? 0n : CommonBase.get_ptr_of(node_signer), logger == null ? 0n : CommonBase.get_ptr_of(logger), network, CommonBase.get_ptr_of(amt_msat), bindings.encodeString(description), duration_since_epoch, invoice_expiry_delta_secs, bindings.encodeUint8Array(bindings.check_arr_len(payment_hash, 32)), CommonBase.get_ptr_of(min_final_cltv_expiry_delta));
+               const ret: bigint = bindings.create_invoice_from_channelmanager_and_duration_since_epoch_with_payment_hash(channelmanager == null ? 0n : CommonBase.get_ptr_of(channelmanager), CommonBase.get_ptr_of(node_signer), CommonBase.get_ptr_of(logger), network, CommonBase.get_ptr_of(amt_msat), bindings.encodeString(description), duration_since_epoch, invoice_expiry_delta_secs, bindings.encodeUint8Array(bindings.check_arr_len(payment_hash, 32)), CommonBase.get_ptr_of(min_final_cltv_expiry_delta));
                const ret_hu_conv: Result_InvoiceSignOrCreationErrorZ = Result_InvoiceSignOrCreationErrorZ.constr_from_ptr(ret);
                CommonBase.add_ref_from(ret_hu_conv, channelmanager);
                CommonBase.add_ref_from(ret_hu_conv, node_signer);