diff --git a/.dockerignore b/.dockerignore index 51cee13c3..005f64cc4 100644 --- a/.dockerignore +++ b/.dockerignore @@ -6,6 +6,10 @@ tests venv tools +lnbits/static/css/* +lnbits/static/bundle.js +lnbits/static/bundle.css + *.md *.log diff --git a/.env.example b/.env.example index 6ef60bc1c..ec980775f 100644 --- a/.env.example +++ b/.env.example @@ -34,19 +34,23 @@ LNBITS_SITE_DESCRIPTION="Some description about your service, will display if ti LNBITS_THEME_OPTIONS="classic, bitcoin, freedom, mint, autumn, monochrome, salvador" # LNBITS_CUSTOM_LOGO="https://lnbits.com/assets/images/logo/logo.svg" -# Choose from LNPayWallet, OpenNodeWallet, LntxbotWallet, -# LndRestWallet, CLightningWallet, LNbitsWallet, SparkWallet, FakeWallet, EclairWallet +# Choose from LNPayWallet, OpenNodeWallet, LntxbotWallet, ClicheWallet +# LndRestWallet, CoreLightningWallet, LNbitsWallet, SparkWallet, FakeWallet, EclairWallet LNBITS_BACKEND_WALLET_CLASS=VoidWallet # VoidWallet is just a fallback that works without any actual Lightning capabilities, # just so you can see the UI before dealing with this file. # Set one of these blocks depending on the wallet kind you chose above: + +# ClicheWallet +CLICHE_ENDPOINT=ws://127.0.0.1:12000 + # SparkWallet SPARK_URL=http://localhost:9737/rpc SPARK_TOKEN=myaccesstoken -# CLightningWallet -CLIGHTNING_RPC="/home/bob/.lightning/bitcoin/lightning-rpc" +# CoreLightningWallet +CORELIGHTNING_RPC="/home/bob/.lightning/bitcoin/lightning-rpc" # LnbitsWallet LNBITS_ENDPOINT=https://legend.lnbits.com diff --git a/.github/workflows/formatting.yml b/.github/workflows/formatting.yml index 23d7ae3e7..e106ace30 100644 --- a/.github/workflows/formatting.yml +++ b/.github/workflows/formatting.yml @@ -7,30 +7,19 @@ on: branches: [ main ] jobs: - black: + checks: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - run: sudo apt-get install python3-venv - - run: python3 -m venv venv - - run: ./venv/bin/pip install black - - run: make checkblack - isort: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 + - uses: abatilo/actions-poetry@v2.1.3 + - name: Install packages + run: poetry install + - name: Check black + run: make checkblack + - name: Check isort + run: make checkisort - uses: actions/setup-node@v3 - - run: sudo apt-get install python3-venv - - run: python3 -m venv venv - - run: ./venv/bin/pip install isort - - run: make checkisort - - prettier: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - - run: sudo apt-get install python3-venv - - run: python3 -m venv venv - - run: npm install prettier - - run: ./node_modules/.bin/prettier --check lnbits/static/js/*.js lnbits/core/static/js/*.js lnbits/extensions/*/templates/*/*.html ./lnbits/core/templates/core/*.html lnbits/templates/*.html lnbits/extensions/*/static/js/*.js + - name: Check prettier + run: | + npm install prettier + make checkprettier diff --git a/.github/workflows/migrations.yml b/.github/workflows/migrations.yml index 08557bc1e..8e72cf624 100644 --- a/.github/workflows/migrations.yml +++ b/.github/workflows/migrations.yml @@ -22,22 +22,17 @@ jobs: --health-retries 5 strategy: matrix: - python-version: [3.8] + python-version: [3.9] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} + - uses: abatilo/actions-poetry@v2.1.3 - name: Install dependencies - env: - VIRTUAL_ENV: ./venv - PATH: ${{ env.VIRTUAL_ENV }}/bin:${{ env.PATH }} run: | - python -m venv ${{ env.VIRTUAL_ENV }} - ./venv/bin/python -m pip install --upgrade pip - ./venv/bin/pip install -r requirements.txt - ./venv/bin/pip install pytest pytest-asyncio pytest-cov requests mock + poetry install sudo apt install unzip - name: Run migrations run: | @@ -45,7 +40,7 @@ jobs: mkdir -p ./data export LNBITS_DATA_FOLDER="./data" unzip tests/data/mock_data.zip -d ./data - timeout 5s ./venv/bin/uvicorn lnbits.__main__:app --host 0.0.0.0 --port 5001 || code=$?; if [[ $code -ne 124 && $code -ne 0 ]]; then exit $code; fi + timeout 5s poetry run lnbits --host 0.0.0.0 --port 5001 || code=$?; if [[ $code -ne 124 && $code -ne 0 ]]; then exit $code; fi export LNBITS_DATABASE_URL="postgres://postgres:postgres@0.0.0.0:5432/postgres" - timeout 5s ./venv/bin/uvicorn lnbits.__main__:app --host 0.0.0.0 --port 5001 || code=$?; if [[ $code -ne 124 && $code -ne 0 ]]; then exit $code; fi - ./venv/bin/python tools/conv.py + timeout 5s poetry run lnbits --host 0.0.0.0 --port 5001 || code=$?; if [[ $code -ne 124 && $code -ne 0 ]]; then exit $code; fi + poetry run python tools/conv.py diff --git a/.github/workflows/mypy.yml b/.github/workflows/mypy.yml index 71713d88f..616017316 100644 --- a/.github/workflows/mypy.yml +++ b/.github/workflows/mypy.yml @@ -5,9 +5,18 @@ on: [push, pull_request] jobs: check: runs-on: ubuntu-latest + strategy: + matrix: + python-version: [3.9] steps: - - uses: actions/checkout@v1 - - uses: jpetrucciani/mypy-check@master + - uses: actions/checkout@v2 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 with: - mypy_flags: '--install-types --non-interactive' - path: 'lnbits' + python-version: ${{ matrix.python-version }} + - uses: abatilo/actions-poetry@v2.1.3 + - name: Install dependencies + run: | + poetry install + - name: Run tests + run: poetry run mypy diff --git a/.github/workflows/regtest.yml b/.github/workflows/regtest.yml index 0d9afdac7..fcd3c164f 100644 --- a/.github/workflows/regtest.yml +++ b/.github/workflows/regtest.yml @@ -7,13 +7,14 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [3.8] + python-version: [3.9] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} + - uses: abatilo/actions-poetry@v2.1.3 - name: Setup Regtest run: | git clone https://github.com/lnbits/legend-regtest-enviroment.git docker @@ -22,15 +23,8 @@ jobs: ./tests sudo chmod -R a+rwx . - name: Install dependencies - env: - VIRTUAL_ENV: ./venv - PATH: ${{ env.VIRTUAL_ENV }}/bin:${{ env.PATH }} run: | - python -m venv ${{ env.VIRTUAL_ENV }} - ./venv/bin/python -m pip install --upgrade pip - ./venv/bin/pip install -r requirements.txt - ./venv/bin/pip install pylightning - ./venv/bin/pip install pytest pytest-asyncio pytest-cov requests mock + poetry install - name: Run tests env: PYTHONUNBUFFERED: 1 @@ -43,7 +37,11 @@ jobs: run: | sudo chmod -R a+rwx . && rm -rf ./data && mkdir -p ./data make test-real-wallet - CLightningWallet: + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v3 + with: + file: ./coverage.xml + LndWallet: runs-on: ubuntu-latest strategy: matrix: @@ -54,6 +52,7 @@ jobs: uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} + - uses: abatilo/actions-poetry@v2.1.3 - name: Setup Regtest run: | git clone https://github.com/lnbits/legend-regtest-enviroment.git docker @@ -62,22 +61,60 @@ jobs: ./tests sudo chmod -R a+rwx . - name: Install dependencies - env: - VIRTUAL_ENV: ./venv - PATH: ${{ env.VIRTUAL_ENV }}/bin:${{ env.PATH }} run: | - python -m venv ${{ env.VIRTUAL_ENV }} - ./venv/bin/python -m pip install --upgrade pip - ./venv/bin/pip install -r requirements.txt - ./venv/bin/pip install pylightning - ./venv/bin/pip install pytest pytest-asyncio pytest-cov requests mock + poetry install + poetry add grpcio protobuf - name: Run tests env: PYTHONUNBUFFERED: 1 PORT: 5123 LNBITS_DATA_FOLDER: ./data - LNBITS_BACKEND_WALLET_CLASS: CLightningWallet - CLIGHTNING_RPC: ./docker/data/clightning-1/regtest/lightning-rpc + LNBITS_BACKEND_WALLET_CLASS: LndWallet + LND_GRPC_ENDPOINT: localhost + LND_GRPC_PORT: 10009 + LND_GRPC_CERT: docker/data/lnd-1/tls.cert + LND_GRPC_MACAROON: docker/data/lnd-1/data/chain/bitcoin/regtest/admin.macaroon + run: | + sudo chmod -R a+rwx . && rm -rf ./data && mkdir -p ./data + make test-real-wallet + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v3 + with: + file: ./coverage.xml + CoreLightningWallet: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [3.9] + steps: + - uses: actions/checkout@v2 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - uses: abatilo/actions-poetry@v2.1.3 + - name: Setup Regtest + run: | + git clone https://github.com/lnbits/legend-regtest-enviroment.git docker + cd docker + chmod +x ./tests + ./tests + sudo chmod -R a+rwx . + - name: Install dependencies + run: | + poetry install + poetry add pyln-client + - name: Run tests + env: + PYTHONUNBUFFERED: 1 + PORT: 5123 + LNBITS_DATA_FOLDER: ./data + LNBITS_BACKEND_WALLET_CLASS: CoreLightningWallet + CORELIGHTNING_RPC: ./docker/data/clightning-1/regtest/lightning-rpc run: | sudo chmod -R a+rwx . && rm -rf ./data && mkdir -p ./data make test-real-wallet + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v3 + with: + file: ./coverage.xml diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 15a2388a9..298d7ff04 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [3.7, 3.8, 3.9] + python-version: [3.9] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} @@ -23,9 +23,29 @@ jobs: ./venv/bin/python -m pip install --upgrade pip ./venv/bin/pip install -r requirements.txt ./venv/bin/pip install pytest pytest-asyncio pytest-cov requests mock + - name: Run tests + run: make test-venv + sqlite: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [3.9] + steps: + - uses: actions/checkout@v2 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - uses: abatilo/actions-poetry@v2.1.3 + - name: Install dependencies + env: + VIRTUAL_ENV: ./venv + PATH: ${{ env.VIRTUAL_ENV }}/bin:${{ env.PATH }} + run: | + poetry install - name: Run tests run: make test - venv-postgres: + postgres: runs-on: ubuntu-latest services: postgres: @@ -44,22 +64,17 @@ jobs: --health-retries 5 strategy: matrix: - python-version: [3.8] + python-version: [3.9] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} + - uses: abatilo/actions-poetry@v2.1.3 - name: Install dependencies - env: - VIRTUAL_ENV: ./venv - PATH: ${{ env.VIRTUAL_ENV }}/bin:${{ env.PATH }} run: | - python -m venv ${{ env.VIRTUAL_ENV }} - ./venv/bin/python -m pip install --upgrade pip - ./venv/bin/pip install -r requirements.txt - ./venv/bin/pip install pytest pytest-asyncio pytest-cov requests mock + poetry install - name: Run tests env: LNBITS_DATABASE_URL: postgres://postgres:postgres@0.0.0.0:5432/postgres @@ -68,68 +83,3 @@ jobs: uses: codecov/codecov-action@v3 with: file: ./coverage.xml - poetry-sqlite: - runs-on: ubuntu-latest - strategy: - matrix: - python-version: [3.9] - steps: - - uses: actions/checkout@v2 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - env: - VIRTUAL_ENV: ./venv - PATH: ${{ env.VIRTUAL_ENV }}/bin:${{ env.PATH }} - run: | - python -m venv ${{ env.VIRTUAL_ENV }} - ./venv/bin/python -m pip install --upgrade pip - ./venv/bin/pip install -r requirements.txt - ./venv/bin/pip install pytest pytest-asyncio pytest-cov requests mock - - name: Run tests - run: make test - poetry-postgres: - runs-on: ubuntu-latest - services: - postgres: - image: postgres:latest - env: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - POSTGRES_DB: postgres - ports: - # maps tcp port 5432 on service container to the host - - 5432:5432 - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - strategy: - matrix: - python-version: [3.9] - steps: - - uses: actions/checkout@v2 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - env: - VIRTUAL_ENV: ./venv - PATH: ${{ env.VIRTUAL_ENV }}/bin:${{ env.PATH }} - run: | - python -m venv ${{ env.VIRTUAL_ENV }} - ./venv/bin/python -m pip install --upgrade pip - ./venv/bin/pip install -r requirements.txt - ./venv/bin/pip install pytest pytest-asyncio pytest-cov requests mock - - name: Run tests - env: - LNBITS_DATABASE_URL: postgres://postgres:postgres@0.0.0.0:5432/postgres - run: make test - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v3 - with: - file: ./coverage.xml \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index f9eb1dd1c..c4fcb9596 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,45 +1,12 @@ -# Build image -FROM python:3.7-slim as builder - -# Setup virtualenv -ENV VIRTUAL_ENV=/opt/venv -RUN python -m venv $VIRTUAL_ENV -ENV PATH="$VIRTUAL_ENV/bin:$PATH" - -# Install build deps +FROM python:3.9-slim RUN apt-get update -RUN apt-get install -y --no-install-recommends build-essential pkg-config libpq-dev -RUN python -m pip install --upgrade pip -RUN pip install wheel - -# Install runtime deps -COPY requirements.txt /tmp/requirements.txt -RUN pip install -r /tmp/requirements.txt - -# Install c-lightning specific deps -RUN pip install pylightning - -# Install LND specific deps -RUN pip install lndgrpc - -# Production image -FROM python:3.7-slim as lnbits - -# Run as non-root -USER 1000:1000 - -# Copy over virtualenv -ENV VIRTUAL_ENV="/opt/venv" -COPY --from=builder --chown=1000:1000 $VIRTUAL_ENV $VIRTUAL_ENV -ENV PATH="$VIRTUAL_ENV/bin:$PATH" - -# Copy in app source +RUN apt-get install -y curl +RUN curl -sSL https://install.python-poetry.org | python3 - +ENV PATH="/root/.local/bin:$PATH" WORKDIR /app -COPY --chown=1000:1000 lnbits /app/lnbits - -ENV LNBITS_PORT="5000" -ENV LNBITS_HOST="0.0.0.0" - +COPY . . +RUN poetry config virtualenvs.create false +RUN poetry install --no-dev --no-root +RUN poetry run python build.py EXPOSE 5000 - -CMD ["sh", "-c", "uvicorn lnbits.__main__:app --port $LNBITS_PORT --host $LNBITS_HOST"] +CMD ["poetry", "run", "lnbits", "--port", "5000", "--host", "0.0.0.0"] diff --git a/Makefile b/Makefile index 2873ae774..d91d0421d 100644 --- a/Makefile +++ b/Makefile @@ -4,58 +4,47 @@ all: format check requirements.txt format: prettier isort black -check: mypy checkprettier checkblack +check: mypy checkprettier checkisort checkblack prettier: $(shell find lnbits -name "*.js" -name ".html") - ./node_modules/.bin/prettier --write lnbits/static/js/*.js lnbits/core/static/js/*.js lnbits/extensions/*/templates/*/*.html ./lnbits/core/templates/core/*.html lnbits/templates/*.html lnbits/extensions/*/static/js/*.js + ./node_modules/.bin/prettier --write lnbits/static/js/*.js lnbits/core/static/js/*.js lnbits/extensions/*/templates/*/*.html ./lnbits/core/templates/core/*.html lnbits/templates/*.html lnbits/extensions/*/static/js/*.js lnbits/extensions/*/static/components/*/*.js lnbits/extensions/*/static/components/*/*.html -black: $(shell find lnbits -name "*.py") - ./venv/bin/black lnbits +black: + poetry run black . -mypy: $(shell find lnbits -name "*.py") - ./venv/bin/mypy lnbits - ./venv/bin/mypy lnbits/core - ./venv/bin/mypy lnbits/extensions/* +mypy: + poetry run mypy -isort: $(shell find lnbits -name "*.py") - ./venv/bin/isort --profile black lnbits +isort: + poetry run isort . checkprettier: $(shell find lnbits -name "*.js" -name ".html") - ./node_modules/.bin/prettier --check lnbits/static/js/*.js lnbits/core/static/js/*.js lnbits/extensions/*/templates/*/*.html ./lnbits/core/templates/core/*.html lnbits/templates/*.html lnbits/extensions/*/static/js/*.js + ./node_modules/.bin/prettier --check lnbits/static/js/*.js lnbits/core/static/js/*.js lnbits/extensions/*/templates/*/*.html ./lnbits/core/templates/core/*.html lnbits/templates/*.html lnbits/extensions/*/static/js/*.js lnbits/extensions/*/static/components/*/*.js lnbits/extensions/*/static/components/*/*.html -checkblack: $(shell find lnbits -name "*.py") - ./venv/bin/black --check lnbits +checkblack: + poetry run black --check . -checkisort: $(shell find lnbits -name "*.py") - ./venv/bin/isort --profile black --check-only lnbits - -Pipfile.lock: Pipfile - ./venv/bin/pipenv lock - -requirements.txt: Pipfile.lock - cat Pipfile.lock | jq -r '.default | map_values(.version) | to_entries | map("\(.key)\(.value)") | join("\n")' > requirements.txt +checkisort: + poetry run isort --check-only . test: - mkdir -p ./tests/data LNBITS_BACKEND_WALLET_CLASS="FakeWallet" \ FAKE_WALLET_SECRET="ToTheMoon1" \ LNBITS_DATA_FOLDER="./tests/data" \ PYTHONUNBUFFERED=1 \ - ./venv/bin/pytest --durations=1 -s --cov=lnbits --cov-report=xml tests + poetry run pytest test-real-wallet: - mkdir -p ./tests/data LNBITS_DATA_FOLDER="./tests/data" \ PYTHONUNBUFFERED=1 \ - ./venv/bin/pytest --durations=1 -s --cov=lnbits --cov-report=xml tests + poetry run pytest -test-pipenv: - mkdir -p ./tests/data +test-venv: LNBITS_BACKEND_WALLET_CLASS="FakeWallet" \ FAKE_WALLET_SECRET="ToTheMoon1" \ LNBITS_DATA_FOLDER="./tests/data" \ PYTHONUNBUFFERED=1 \ - pipenv run pytest --durations=1 -s --cov=lnbits --cov-report=xml tests + ./venv/bin/pytest --durations=1 -s --cov=lnbits --cov-report=xml tests bak: # LNBITS_DATABASE_URL=postgres://postgres:postgres@0.0.0.0:5432/postgres diff --git a/README.md b/README.md index 5c6b702a9..a22c857c5 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ LNbits is a very simple Python server that sits on top of any funding source, an LNbits can run on top of any lightning-network funding source, currently there is support for LND, c-lightning, Spark, LNpay, OpenNode, lntxbot, with more being added regularly. -See [lnbits.org](https://lnbits.org) for more detailed documentation. +See [legend.lnbits.org](https://legend.lnbits.org) for more detailed documentation. Checkout the LNbits [YouTube](https://www.youtube.com/playlist?list=PLPj3KCksGbSYG0ciIQUWJru1dWstPHshe) video series. @@ -54,7 +54,7 @@ LNURL has a fallback scheme, so if scanned by a regular QR code reader it can de ![lnurl fallback](https://i.imgur.com/CPBKHIv.png) Using **lnbits.com/?lightning="LNURL-withdraw"** will trigger a withdraw that builds an LNbits wallet. -Example use would be an ATM, which utilises LNURL, if the user scans the QR with a regular QR code scanner app, they will stilll be able to access the funds. +Example use would be an ATM, which utilises LNURL, if the user scans the QR with a regular QR code scanner app, they will still be able to access the funds. ![lnurl ATM](https://i.imgur.com/Gi6bn3L.jpg) @@ -70,7 +70,7 @@ Wallets can be easily generated and given out to people at events (one click mul If you like this project and might even use or extend it, why not [send some tip love](https://legend.lnbits.com/paywall/GAqKguK5S8f6w5VNjS9DfK)! -[docs]: https://lnbits.org/ +[docs]: https://legend.lnbits.org/ [docs-badge]: https://img.shields.io/badge/docs-lnbits.org-673ab7.svg [github-mypy]: https://github.com/lnbits/lnbits/actions?query=workflow%3Amypy [github-mypy-badge]: https://github.com/lnbits/lnbits/workflows/mypy/badge.svg diff --git a/build.py b/build.py index 5cc8b7de1..2bc3e50cb 100644 --- a/build.py +++ b/build.py @@ -1,13 +1,14 @@ -import warnings -import subprocess import glob import os +import subprocess +import warnings from os import path -from typing import Any, List, NamedTuple, Optional from pathlib import Path +from typing import Any, List, NamedTuple, Optional LNBITS_PATH = path.dirname(path.realpath(__file__)) + "/lnbits" + def get_js_vendored(prefer_minified: bool = False) -> List[str]: paths = get_vendored(".js", prefer_minified) @@ -71,6 +72,7 @@ def get_vendored(ext: str, prefer_minified: bool = False) -> List[str]: def url_for_vendored(abspath: str) -> str: return "/" + os.path.relpath(abspath, LNBITS_PATH) + def transpile_scss(): with warnings.catch_warnings(): warnings.simplefilter("ignore") @@ -80,6 +82,7 @@ def transpile_scss(): with open(os.path.join(LNBITS_PATH, "static/css/base.css"), "w") as css: css.write(compile_string(scss.read())) + def bundle_vendored(): for getfiles, outputpath in [ (get_js_vendored, os.path.join(LNBITS_PATH, "static/bundle.js")), @@ -96,15 +99,7 @@ def bundle_vendored(): def build(): transpile_scss() bundle_vendored() -# root = Path("lnbits/static/foo") -# root.mkdir(parents=True) -# root.joinpath("example.css").write_text("") + if __name__ == "__main__": - build() - -#def build(setup_kwargs): -# """Build """ -# transpile_scss() -# bundle_vendored() -# subprocess.run(["ls", "-la", "./lnbits/static"]) + build() diff --git a/docs/CNAME b/docs/CNAME index 1b08f7544..9981b1103 100644 --- a/docs/CNAME +++ b/docs/CNAME @@ -1 +1 @@ -lnbits.org \ No newline at end of file +legend.lnbits.org \ No newline at end of file diff --git a/docs/_config.yml b/docs/_config.yml index b4e4adbee..74e65187e 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -3,7 +3,7 @@ title: "LNbits docs" remote_theme: pmarsceill/just-the-docs logo: "/logos/lnbits-full.png" search_enabled: true -url: https://lnbits.org +url: https://legend.lnbits.org aux_links: "LNbits on GitHub": - "//github.com/lnbits/lnbits" diff --git a/docs/devs/api.md b/docs/devs/api.md index a0938d626..a8217b9c6 100644 --- a/docs/devs/api.md +++ b/docs/devs/api.md @@ -9,4 +9,4 @@ nav_order: 3 API reference ============= -Coming soon... +[Swagger Docs](https://legend.lnbits.org/devs/swagger.html) diff --git a/docs/devs/development.md b/docs/devs/development.md index f53b94bce..74a664055 100644 --- a/docs/devs/development.md +++ b/docs/devs/development.md @@ -17,10 +17,26 @@ Tests This project has unit tests that help prevent regressions. Before you can run the tests, you must install a few dependencies: ```bash -./venv/bin/pip install pytest pytest-asyncio pytest-cov requests mock +poetry install +npm i ``` Then to run the tests: ```bash make test ``` + +Run formatting: +```bash +make format +``` + +Run mypy checks: +```bash +poetry run mypy +``` + +Run everything: +```bash +make all +``` diff --git a/docs/devs/extensions.md b/docs/devs/extensions.md index 8c9a30a40..0ceb9cb3f 100644 --- a/docs/devs/extensions.md +++ b/docs/devs/extensions.md @@ -28,17 +28,24 @@ Going over the example extension's structure: Adding new dependencies ----------------------- -If for some reason your extensions needs a new python package to work, you can add a new package using Pipenv: +If for some reason your extensions needs a new python package to work, you can add a new package using `venv`, or `poerty`: ```sh -$ pipenv install new_package_name +$ poetry add +# or +$ ./venv/bin/pip install ``` -This will create a new entry in the `Pipenv` file. **But we need an extra step to make sure LNbits doesn't break in production.** -All tests and deployments should run against the `requirements.txt` file so every time a new package is added -it is necessary to run the Pipenv `lock` command and manually update the requirements file: +Dependencies need to be added to `pyproject.toml` and `requirements.txt`, then tested by running on `venv` and `poetry`. +`nix` compatability can be tested with `nix build .#checks.x86_64-linux.vmTest`. -```sh -$ pipenv lock -r -``` + +SQLite to PostgreSQL migration +----------------------- + +LNbits currently supports SQLite and PostgreSQL databases. There is a migration script `tools/conv.py` that helps users migrate from SQLite to PostgreSQL. This script also copies all extension databases to the new backend. + +### Adding mock data to `mock_data.zip` + +`mock_data.zip` contains a few lines of sample SQLite data and is used in automated GitHub test to see whether your migration in `conv.py` works. Run your extension and save a few lines of data into a SQLite `your_extension.sqlite3` file. Unzip `tests/data/mock_data.zip`, add `your_extension.sqlite3` and zip it again. Add the updated `mock_data.zip` to your PR. \ No newline at end of file diff --git a/docs/devs/installation.md b/docs/devs/installation.md deleted file mode 100644 index b807ce34e..000000000 --- a/docs/devs/installation.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: default -parent: For developers -title: Installation -nav_order: 1 ---- - -# Installation - -This guide has been moved to the [installation guide](../guide/installation.md). -To install the developer packages for running tests etc before pr'ing, use `./venv/bin/pip install pytest pytest-asyncio pytest-cov requests mock black mypy isort`. - -## Notes: - -* We recommend using Caddy for a reverse-proxy if you want to serve your install through a domain, alternatively you can use [ngrok](https://ngrok.com/). -* Screen works well if you want LNbits to continue running when you close your terminal session. diff --git a/docs/devs/swagger.html b/docs/devs/swagger.html new file mode 100644 index 000000000..c787eb2b9 --- /dev/null +++ b/docs/devs/swagger.html @@ -0,0 +1,29 @@ + + + + + + My New API + + +
+ + + diff --git a/docs/guide/installation.md b/docs/guide/installation.md index 0232346fb..d9b8d5d27 100644 --- a/docs/guide/installation.md +++ b/docs/guide/installation.md @@ -4,8 +4,6 @@ title: Basic installation nav_order: 2 --- - - # Basic installation You can choose between four package managers, `poetry`, `nix` and `venv`. @@ -18,16 +16,26 @@ By default, LNbits will use SQLite as its database. You can also use PostgreSQL git clone https://github.com/lnbits/lnbits-legend.git cd lnbits-legend/ +# for making sure python 3.9 is installed, skip if installed +sudo apt update +sudo apt install software-properties-common +sudo add-apt-repository ppa:deadsnakes/ppa +sudo apt install python3.9 + curl -sSL https://install.python-poetry.org | python3 - -poetry install +export PATH="/home/ubuntu/.local/bin:$PATH" # or whatever is suggested in the poetry install notes printed to terminal +poetry env use python3.9 +poetry install --no-dev -# You may need to install python 3.9, update your python following this guide https://linuxize.com/post/how-to-install-python-3-9-on-ubuntu-20-04/ +mkdir data +cp .env.example .env +sudo nano .env # set funding source - mkdir data && cp .env.example .env -``` + +``` #### Running the server - + ```sh poetry run lnbits # To change port/host pass 'poetry run lnbits --port 9000 --host 0.0.0.0' @@ -41,7 +49,7 @@ cd lnbits-legend/ # Modern debian distros usually include Nix, however you can install with: # 'sh <(curl -L https://nixos.org/nix/install) --daemon', or use setup here https://nixos.org/download.html#nix-verify-installation -nix build .#lnbits +nix build .#lnbits mkdir data ``` @@ -74,20 +82,31 @@ mkdir data && cp .env.example .env ./venv/bin/uvicorn lnbits.__main__:app --port 5000 ``` -If you want to host LNbits on the internet, run with the option `--host 0.0.0.0`. +If you want to host LNbits on the internet, run with the option `--host 0.0.0.0`. + +## Option 4: Docker + +```sh +git clone https://github.com/lnbits/lnbits-legend.git +cd lnbits-legend +docker build -t lnbits-legend . +cp .env.example .env +mkdir data +docker run --detach --publish 5000:5000 --name lnbits-legend --volume ${PWD}/.env:/app/.env --volume ${PWD}/data/:/app/data lnbits-legend +``` ### Troubleshooting -Problems installing? These commands have helped us install LNbits. +Problems installing? These commands have helped us install LNbits. ```sh sudo apt install pkg-config libffi-dev libpq-dev # if the secp256k1 build fails: # if you used venv -./venv/bin/pip install setuptools wheel +./venv/bin/pip install setuptools wheel # if you used poetry -poetry add setuptools wheel +poetry add setuptools wheel # build essentials for debian/ubuntu sudo apt install python3-dev gcc build-essential ``` @@ -122,13 +141,13 @@ LNBITS_DATABASE_URL="postgres://postgres:postgres@localhost/lnbits" # Using LNbits -Now you can visit your LNbits at http://localhost:5000/. +Now you can visit your LNbits at http://localhost:5000/. -Now modify the `.env` file with any settings you prefer and add a proper [funding source](./wallets.md) by modifying the value of `LNBITS_BACKEND_WALLET_CLASS` and providing the extra information and credentials related to the chosen funding source. +Now modify the `.env` file with any settings you prefer and add a proper [funding source](./wallets.md) by modifying the value of `LNBITS_BACKEND_WALLET_CLASS` and providing the extra information and credentials related to the chosen funding source. Then you can restart it and it will be using the new settings. -You might also need to install additional packages or perform additional setup steps, depending on the chosen backend. See [the short guide](./wallets.md) on each different funding source. +You might also need to install additional packages or perform additional setup steps, depending on the chosen backend. See [the short guide](./wallets.md) on each different funding source. Take a look at [Polar](https://lightningpolar.com/) for an excellent way of spinning up a Lightning Network dev environment. @@ -170,21 +189,21 @@ Systemd is great for taking care of your LNbits instance. It will start it on bo Description=LNbits # you can uncomment these lines if you know what you're doing # it will make sure that lnbits starts after lnd (replace with your own backend service) -#Wants=lnd.service -#After=lnd.service +#Wants=lnd.service +#After=lnd.service [Service] # replace with the absolute path of your lnbits installation -WorkingDirectory=/home/bitcoin/lnbits +WorkingDirectory=/home/bitcoin/lnbits # same here -ExecStart=/home/bitcoin/lnbits/venv/bin/uvicorn lnbits.__main__:app --port 5000 +ExecStart=/home/bitcoin/lnbits/venv/bin/uvicorn lnbits.__main__:app --port 5000 # replace with the user that you're running lnbits on -User=bitcoin +User=bitcoin Restart=always TimeoutSec=120 RestartSec=30 # this makes sure that you receive logs in real time -Environment=PYTHONUNBUFFERED=1 +Environment=PYTHONUNBUFFERED=1 [Install] WantedBy=multi-user.target @@ -198,12 +217,12 @@ sudo systemctl start lnbits.service ``` ## Using https without reverse proxy -The most common way of using LNbits via https is to use a reverse proxy such as Caddy, nginx, or ngriok. However, you can also run LNbits via https without additional software. This is useful for development purposes or if you want to use LNbits in your local network. +The most common way of using LNbits via https is to use a reverse proxy such as Caddy, nginx, or ngriok. However, you can also run LNbits via https without additional software. This is useful for development purposes or if you want to use LNbits in your local network. We have to create a self-signed certificate using `mkcert`. Note that this certiciate is not "trusted" by most browsers but that's fine (since you know that you have created it) and encryption is always better than clear text. #### Install mkcert -You can find the install instructions for `mkcert` [here](https://github.com/FiloSottile/mkcert). +You can find the install instructions for `mkcert` [here](https://github.com/FiloSottile/mkcert). Install mkcert on Ubuntu: ```sh @@ -213,16 +232,22 @@ chmod +x mkcert-v*-linux-amd64 sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcert ``` #### Create certificate -To create a certificate, first `cd` into your lnbits folder and execute the following command ([more info](https://kifarunix.com/how-to-create-self-signed-ssl-certificate-with-mkcert-on-ubuntu-18-04/)) +To create a certificate, first `cd` into your LNbits folder and execute the following command on Linux: +```sh +openssl req -new -newkey rsa:4096 -x509 -sha256 -days 3650 -nodes -out cert.pem -keyout key.pem +``` +This will create two new files (`key.pem` and `cert.pem `). + +Alternatively, you can use mkcert ([more info](https://kifarunix.com/how-to-create-self-signed-ssl-certificate-with-mkcert-on-ubuntu-18-04/)): ```sh # add your local IP (192.x.x.x) as well if you want to use it in your local network -mkcert localhost 127.0.0.1 ::1 +mkcert localhost 127.0.0.1 ::1 ``` -This will create two new files (`localhost-key.pem` and `localhost.pem `) which you can then pass to uvicorn when you start LNbits: +You can then pass the certificate files to uvicorn when you start LNbits: ```sh -./venv/bin/uvicorn lnbits.__main__:app --host 0.0.0.0 --port 5000 --ssl-keyfile ./localhost-key.pem --ssl-certfile ./localhost.pem +./venv/bin/uvicorn lnbits.__main__:app --host 0.0.0.0 --port 5000 --ssl-keyfile ./key.pem --ssl-certfile ./cert.pem ``` @@ -235,9 +260,9 @@ If you want to run LNbits on your Umbrel but want it to be reached through clear To install using docker you first need to build the docker image as: ``` -git clone https://github.com/lnbits/lnbits.git -cd lnbits/ # ${PWD} referred as -docker build -t lnbits . +git clone https://github.com/lnbits/lnbits-legend.git +cd lnbits-legend +docker build -t lnbits-legend . ``` You can launch the docker in a different directory, but make sure to copy `.env.example` from lnbits there @@ -248,17 +273,15 @@ cp /.env.example .env and change the configuration in `.env` as required. -Then create the data directory for the user ID 1000, which is the user that runs the lnbits within the docker container. - +Then create the data directory ``` mkdir data -sudo chown 1000:1000 ./data/ ``` Then the image can be run as: ``` -docker run --detach --publish 5000:5000 --name lnbits --volume ${PWD}/.env:/app/.env --volume ${PWD}/data/:/app/data lnbits +docker run --detach --publish 5000:5000 --name lnbits-legend -e "LNBITS_BACKEND_WALLET_CLASS='FakeWallet'" --volume ${PWD}/.env:/app/.env --volume ${PWD}/data/:/app/data lnbits-legend ``` Finally you can access your lnbits on your machine at port 5000. diff --git a/docs/guide/wallets.md b/docs/guide/wallets.md index dfea66aa2..592c29ef1 100644 --- a/docs/guide/wallets.md +++ b/docs/guide/wallets.md @@ -8,18 +8,17 @@ nav_order: 3 Backend wallets =============== -LNbits can run on top of many lightning-network funding sources. Currently there is support for -CLightning, LND, LNbits, LNPay, lntxbot and OpenNode, with more being added regularily. +LNbits can run on top of many lightning-network funding sources. Currently there is support for CoreLightning, LND, LNbits, LNPay, lntxbot and OpenNode, with more being added regularly. A backend wallet can be configured using the following LNbits environment variables: -### CLightning +### CoreLightning Using this wallet requires the installation of the `pylightning` Python package. -- `LNBITS_BACKEND_WALLET_CLASS`: **CLightningWallet** -- `CLIGHTNING_RPC`: /file/path/lightning-rpc +- `LNBITS_BACKEND_WALLET_CLASS`: **CoreLightningWallet** +- `CORELIGHTNING_RPC`: /file/path/lightning-rpc ### Spark (c-lightning) @@ -27,6 +26,17 @@ Using this wallet requires the installation of the `pylightning` Python package. - `SPARK_URL`: http://10.147.17.230:9737/rpc - `SPARK_TOKEN`: secret_access_key +### LND (REST) + +- `LNBITS_BACKEND_WALLET_CLASS`: **LndRestWallet** +- `LND_REST_ENDPOINT`: http://10.147.17.230:8080/ +- `LND_REST_CERT`: /file/path/tls.cert +- `LND_REST_MACAROON`: /file/path/admin.macaroon or Bech64/Hex + +or + +- `LND_REST_MACAROON_ENCRYPTED`: eNcRyPtEdMaCaRoOn + ### LND (gRPC) Using this wallet requires the installation of the `grpcio` and `protobuf` Python packages. @@ -43,17 +53,6 @@ You can also use an AES-encrypted macaroon (more info) instead by using To encrypt your macaroon, run `./venv/bin/python lnbits/wallets/macaroon/macaroon.py`. -### LND (REST) - -- `LNBITS_BACKEND_WALLET_CLASS`: **LndRestWallet** -- `LND_REST_ENDPOINT`: http://10.147.17.230:8080/ -- `LND_REST_CERT`: /file/path/tls.cert -- `LND_REST_MACAROON`: /file/path/admin.macaroon or Bech64/Hex - -or - -- `LND_REST_MACAROON_ENCRYPTED`: eNcRyPtEdMaCaRoOn - ### LNbits - `LNBITS_BACKEND_WALLET_CLASS`: **LNbitsWallet** diff --git a/lnbits/core/crud.py b/lnbits/core/crud.py index db802d7bb..f150270a8 100644 --- a/lnbits/core/crud.py +++ b/lnbits/core/crud.py @@ -4,6 +4,8 @@ from typing import Any, Dict, List, Optional from urllib.parse import urlparse from uuid import uuid4 +from loguru import logger + from lnbits import bolt11 from lnbits.db import COCKROACH, POSTGRES, Connection from lnbits.settings import DEFAULT_WALLET_NAME, LNBITS_ADMIN_USERS @@ -334,7 +336,7 @@ async def delete_expired_invoices( expiration_date = datetime.datetime.fromtimestamp(invoice.date + invoice.expiry) if expiration_date > datetime.datetime.utcnow(): continue - + logger.debug(f"Deleting expired invoice: {invoice.payment_hash}") await (conn or db).execute( """ DELETE FROM apipayments diff --git a/lnbits/core/models.py b/lnbits/core/models.py index 0f7eba737..c019d941d 100644 --- a/lnbits/core/models.py +++ b/lnbits/core/models.py @@ -141,19 +141,25 @@ class Payment(BaseModel): if self.is_uncheckable: return + logger.debug( + f"Checking {'outgoing' if self.is_out else 'incoming'} pending payment {self.checking_id}" + ) + if self.is_out: status = await WALLET.get_payment_status(self.checking_id) else: status = await WALLET.get_invoice_status(self.checking_id) + logger.debug(f"Status: {status}") + if self.is_out and status.failed: logger.info( - f" - deleting outgoing failed payment {self.checking_id}: {status}" + f"Deleting outgoing failed payment {self.checking_id}: {status}" ) await self.delete() elif not status.pending: logger.info( - f" - marking '{'in' if self.is_in else 'out'}' {self.checking_id} as not pending anymore: {status}" + f"Marking '{'in' if self.is_in else 'out'}' {self.checking_id} as not pending anymore: {status}" ) await self.set_pending(status.pending) diff --git a/lnbits/core/services.py b/lnbits/core/services.py index b9aec8997..678c89e30 100644 --- a/lnbits/core/services.py +++ b/lnbits/core/services.py @@ -182,7 +182,7 @@ async def pay_invoice( payment_request, fee_reserve_msat ) logger.debug(f"backend: pay_invoice finished {temp_id}") - if payment.checking_id: + if payment.ok and payment.checking_id: logger.debug(f"creating final payment {payment.checking_id}") async with db.connect() as conn: await create_payment( @@ -196,7 +196,7 @@ async def pay_invoice( logger.debug(f"deleting temporary payment {temp_id}") await delete_payment(temp_id, conn=conn) else: - logger.debug(f"backend payment failed, no checking_id {temp_id}") + logger.debug(f"backend payment failed") async with db.connect() as conn: logger.debug(f"deleting temporary payment {temp_id}") await delete_payment(temp_id, conn=conn) @@ -337,13 +337,16 @@ async def perform_lnurlauth( ) -async def check_invoice_status( +async def check_transaction_status( wallet_id: str, payment_hash: str, conn: Optional[Connection] = None ) -> PaymentStatus: payment = await get_wallet_payment(wallet_id, payment_hash, conn=conn) if not payment: return PaymentStatus(None) - status = await WALLET.get_invoice_status(payment.checking_id) + if payment.is_out: + status = await WALLET.get_payment_status(payment.checking_id) + else: + status = await WALLET.get_invoice_status(payment.checking_id) if not payment.pending: return status if payment.is_out and status.failed: diff --git a/lnbits/core/templates/core/wallet.html b/lnbits/core/templates/core/wallet.html index acfcf7004..78f33f3a0 100644 --- a/lnbits/core/templates/core/wallet.html +++ b/lnbits/core/templates/core/wallet.html @@ -689,7 +689,7 @@ diff --git a/lnbits/core/views/api.py b/lnbits/core/views/api.py index e54e30fac..ac61e52fd 100644 --- a/lnbits/core/views/api.py +++ b/lnbits/core/views/api.py @@ -48,7 +48,7 @@ from ..crud import ( from ..services import ( InvoiceFailure, PaymentFailure, - check_invoice_status, + check_transaction_status, create_invoice, pay_invoice, perform_lnurlauth, @@ -123,7 +123,7 @@ async def api_payments( offset=offset, ) for payment in pendingPayments: - await check_invoice_status( + await check_transaction_status( wallet_id=payment.wallet_id, payment_hash=payment.payment_hash ) return await get_payments( @@ -184,10 +184,7 @@ async def api_payments_create_invoice(data: CreateInvoiceData, wallet: Wallet): lnurl_response: Union[None, bool, str] = None if data.lnurl_callback: - if "lnurl_balance_check" in data: - assert ( - data.lnurl_balance_check is not None - ), "lnurl_balance_check is required" + if data.lnurl_balance_check is not None: await save_balance_check(wallet.id, data.lnurl_balance_check) async with httpx.AsyncClient() as client: @@ -245,8 +242,6 @@ async def api_payments_pay_invoice(bolt11: str, wallet: Wallet): @core_app.post( "/api/v1/payments", - # deprecated=True, - # description="DEPRECATED. Use /api/v2/TBD and /api/v2/TBD instead", status_code=HTTPStatus.CREATED, ) async def api_payments_create( @@ -407,7 +402,7 @@ async def api_payment(payment_hash, X_Api_Key: Optional[str] = Header(None)): raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail="Payment does not exist." ) - await check_invoice_status(payment.wallet_id, payment_hash) + await check_transaction_status(payment.wallet_id, payment_hash) payment = await get_standalone_payment( payment_hash, wallet_id=wallet.id if wallet else None ) diff --git a/lnbits/core/views/generic.py b/lnbits/core/views/generic.py index 21572b285..31a7b0300 100644 --- a/lnbits/core/views/generic.py +++ b/lnbits/core/views/generic.py @@ -148,7 +148,9 @@ async def wallet( status_code=status.HTTP_307_TEMPORARY_REDIRECT, ) - logger.debug(f"Access wallet {wallet_name}{'of user '+ user.id if user else ''}") + logger.debug( + f"Access {'user '+ user.id + ' ' if user else ''} {'wallet ' + wallet_name if wallet_name else ''}" + ) userwallet = user.get_wallet(wallet_id) # type: ignore if not userwallet: return template_renderer().TemplateResponse( diff --git a/lnbits/extensions/copilot/lnurl.py b/lnbits/extensions/copilot/lnurl.py index 69777c9fb..2fc3e1768 100644 --- a/lnbits/extensions/copilot/lnurl.py +++ b/lnbits/extensions/copilot/lnurl.py @@ -73,11 +73,9 @@ async def lnurl_callback( wallet_id=cp.wallet, amount=int(amount_received / 1000), memo=cp.lnurl_title, - description_hash=hashlib.sha256( - ( - LnurlPayMetadata(json.dumps([["text/plain", str(cp.lnurl_title)]])) - ).encode("utf-8") - ).digest(), + description_hash=( + LnurlPayMetadata(json.dumps([["text/plain", str(cp.lnurl_title)]])) + ).encode("utf-8"), extra={"tag": "copilot", "copilotid": cp.id, "comment": comment}, ) payResponse = {"pr": payment_request, "routes": []} diff --git a/lnbits/extensions/livestream/lnurl.py b/lnbits/extensions/livestream/lnurl.py index 861955de3..72cc1dbbe 100644 --- a/lnbits/extensions/livestream/lnurl.py +++ b/lnbits/extensions/livestream/lnurl.py @@ -90,9 +90,7 @@ async def lnurl_callback( wallet_id=ls.wallet, amount=int(amount_received / 1000), memo=await track.fullname(), - description_hash=hashlib.sha256( - (await track.lnurlpay_metadata()).encode("utf-8") - ).digest(), + description_hash=(await track.lnurlpay_metadata()).encode("utf-8"), extra={"tag": "livestream", "track": track.id, "comment": comment}, ) diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py index e6a1ff486..49fd30e02 100644 --- a/lnbits/extensions/lnaddress/lnurl.py +++ b/lnbits/extensions/lnaddress/lnurl.py @@ -70,11 +70,9 @@ async def lnurl_callback(address_id, amount: int = Query(...)): json={ "out": False, "amount": int(amount_received / 1000), - "description_hash": hashlib.sha256( - (await address.lnurlpay_metadata(domain=domain.domain)).encode( - "utf-8" - ) - ).hexdigest(), + "description_hash": ( + await address.lnurlpay_metadata(domain=domain.domain) + ).encode("utf-8"), "extra": {"tag": f"Payment to {address.username}@{domain.domain}"}, }, timeout=40, diff --git a/lnbits/extensions/lnaddress/views_api.py b/lnbits/extensions/lnaddress/views_api.py index b1f1f0049..8f403a381 100644 --- a/lnbits/extensions/lnaddress/views_api.py +++ b/lnbits/extensions/lnaddress/views_api.py @@ -6,7 +6,7 @@ from fastapi.params import Depends, Query from starlette.exceptions import HTTPException from lnbits.core.crud import get_user -from lnbits.core.services import check_invoice_status, create_invoice +from lnbits.core.services import check_transaction_status, create_invoice from lnbits.decorators import WalletTypeInfo, get_key_type from lnbits.extensions.lnaddress.models import CreateAddress, CreateDomain @@ -229,7 +229,7 @@ async def api_address_send_address(payment_hash): address = await get_address(payment_hash) domain = await get_domain(address.domain) try: - status = await check_invoice_status(domain.wallet, payment_hash) + status = await check_transaction_status(domain.wallet, payment_hash) is_paid = not status.pending except Exception as e: return {"paid": False, "error": str(e)} diff --git a/lnbits/extensions/lnticket/templates/lnticket/index.html b/lnbits/extensions/lnticket/templates/lnticket/index.html index 6dafb4c23..9329be7b2 100644 --- a/lnbits/extensions/lnticket/templates/lnticket/index.html +++ b/lnbits/extensions/lnticket/templates/lnticket/index.html @@ -281,7 +281,13 @@ {% endraw %} - + @@ -371,6 +377,9 @@ } }, methods: { + resetForm() { + this.formDialog.data = {flatrate: false} + }, getTickets: function () { var self = this @@ -463,7 +472,7 @@ .then(function (response) { self.forms.push(mapLNTicket(response.data)) self.formDialog.show = false - self.formDialog.data = {} + self.resetForm() }) .catch(function (error) { LNbits.utils.notifyApiError(error) @@ -497,7 +506,7 @@ }) self.forms.push(mapLNTicket(response.data)) self.formDialog.show = false - self.formDialog.data = {} + self.resetForm() }) .catch(function (error) { LNbits.utils.notifyApiError(error) diff --git a/lnbits/extensions/lnurldevice/lnurl.py b/lnbits/extensions/lnurldevice/lnurl.py index 5e25dadbe..d8bd2e019 100644 --- a/lnbits/extensions/lnurldevice/lnurl.py +++ b/lnbits/extensions/lnurldevice/lnurl.py @@ -205,9 +205,7 @@ async def lnurl_callback( wallet_id=device.wallet, amount=lnurldevicepayment.sats / 1000, memo=device.title, - description_hash=hashlib.sha256( - (await device.lnurlpay_metadata()).encode("utf-8") - ).digest(), + description_hash=(await device.lnurlpay_metadata()).encode("utf-8"), extra={"tag": "PoS"}, ) lnurldevicepayment = await update_lnurldevicepayment( diff --git a/lnbits/extensions/lnurlp/lnurl.py b/lnbits/extensions/lnurlp/lnurl.py index 2ba49e856..55f6807db 100644 --- a/lnbits/extensions/lnurlp/lnurl.py +++ b/lnbits/extensions/lnurlp/lnurl.py @@ -87,9 +87,7 @@ async def api_lnurl_callback(request: Request, link_id): wallet_id=link.wallet, amount=int(amount_received / 1000), memo=link.description, - description_hash=hashlib.sha256( - link.lnurlpay_metadata.encode("utf-8") - ).digest(), + description_hash=link.lnurlpay_metadata.encode("utf-8"), extra={ "tag": "lnurlp", "link": link.id, diff --git a/lnbits/extensions/lnurlp/views_api.py b/lnbits/extensions/lnurlp/views_api.py index 8d4569da9..97e8fd4c4 100644 --- a/lnbits/extensions/lnurlp/views_api.py +++ b/lnbits/extensions/lnurlp/views_api.py @@ -96,7 +96,7 @@ async def api_link_create_or_update( data.min *= data.fiat_base_multiplier data.max *= data.fiat_base_multiplier - if "success_url" in data and data.success_url[:8] != "https://": + if data.success_url is not None and data.success_url.startswith("https://"): raise HTTPException( detail="Success URL must be secure https://...", status_code=HTTPStatus.BAD_REQUEST, diff --git a/lnbits/extensions/offlineshop/lnurl.py b/lnbits/extensions/offlineshop/lnurl.py index 0bf779e47..5a2a0bcd2 100644 --- a/lnbits/extensions/offlineshop/lnurl.py +++ b/lnbits/extensions/offlineshop/lnurl.py @@ -73,9 +73,7 @@ async def lnurl_callback(request: Request, item_id: int): wallet_id=shop.wallet, amount=int(amount_received / 1000), memo=item.name, - description_hash=hashlib.sha256( - (await item.lnurlpay_metadata()).encode("utf-8") - ).digest(), + description_hash=(await item.lnurlpay_metadata()).encode("utf-8"), extra={"tag": "offlineshop", "item": item.id}, ) except Exception as exc: diff --git a/lnbits/extensions/paywall/views_api.py b/lnbits/extensions/paywall/views_api.py index 8052c63ba..d2d498536 100644 --- a/lnbits/extensions/paywall/views_api.py +++ b/lnbits/extensions/paywall/views_api.py @@ -4,7 +4,7 @@ from fastapi import Depends, Query from starlette.exceptions import HTTPException from lnbits.core.crud import get_user, get_wallet -from lnbits.core.services import check_invoice_status, create_invoice +from lnbits.core.services import check_transaction_status, create_invoice from lnbits.decorators import WalletTypeInfo, get_key_type from . import paywall_ext @@ -87,7 +87,7 @@ async def api_paywal_check_invoice( status_code=HTTPStatus.NOT_FOUND, detail="Paywall does not exist." ) try: - status = await check_invoice_status(paywall.wallet, payment_hash) + status = await check_transaction_status(paywall.wallet, payment_hash) is_paid = not status.pending except Exception: return {"paid": False} diff --git a/lnbits/extensions/satsdice/lnurl.py b/lnbits/extensions/satsdice/lnurl.py index 03d20502a..73c5e5540 100644 --- a/lnbits/extensions/satsdice/lnurl.py +++ b/lnbits/extensions/satsdice/lnurl.py @@ -77,9 +77,7 @@ async def api_lnurlp_callback( wallet_id=link.wallet, amount=int(amount_received / 1000), memo="Satsdice bet", - description_hash=hashlib.sha256( - link.lnurlpay_metadata.encode("utf-8") - ).digest(), + description_hash=link.lnurlpay_metadata.encode("utf-8"), extra={"tag": "satsdice", "link": link.id, "comment": "comment"}, ) diff --git a/lnbits/extensions/satsdice/templates/satsdice/index.html b/lnbits/extensions/satsdice/templates/satsdice/index.html index eb52b6b26..004e9ccbc 100644 --- a/lnbits/extensions/satsdice/templates/satsdice/index.html +++ b/lnbits/extensions/satsdice/templates/satsdice/index.html @@ -421,7 +421,13 @@ this.formDialog = { show: false, fixedAmount: true, - data: {} + data: { + haircut: 0, + min_bet: 10, + max_bet: 1000, + currency: 'satoshis', + comment_chars: 0 + } } }, updatePayLink(wallet, data) { diff --git a/lnbits/extensions/satspay/__init__.py b/lnbits/extensions/satspay/__init__.py index f33f3aa52..37245c21d 100644 --- a/lnbits/extensions/satspay/__init__.py +++ b/lnbits/extensions/satspay/__init__.py @@ -1,6 +1,7 @@ import asyncio from fastapi import APIRouter +from fastapi.staticfiles import StaticFiles from lnbits.db import Database from lnbits.helpers import template_renderer @@ -11,6 +12,14 @@ db = Database("ext_satspay") satspay_ext: APIRouter = APIRouter(prefix="/satspay", tags=["satspay"]) +satspay_static_files = [ + { + "path": "/satspay/static", + "app": StaticFiles(directory="lnbits/extensions/satspay/static"), + "name": "satspay_static", + } +] + def satspay_renderer(): return template_renderer(["lnbits/extensions/satspay/templates"]) diff --git a/lnbits/extensions/satspay/crud.py b/lnbits/extensions/satspay/crud.py index 9deb32154..47d7a4a8d 100644 --- a/lnbits/extensions/satspay/crud.py +++ b/lnbits/extensions/satspay/crud.py @@ -6,7 +6,7 @@ from lnbits.core.services import create_invoice from lnbits.core.views.api import api_payment from lnbits.helpers import urlsafe_short_hash -from ..watchonly.crud import get_fresh_address, get_mempool, get_watch_wallet +from ..watchonly.crud import get_config, get_fresh_address # from lnbits.db import open_ext_db from . import db @@ -18,7 +18,6 @@ from .models import Charges, CreateCharge async def create_charge(user: str, data: CreateCharge) -> Charges: charge_id = urlsafe_short_hash() if data.onchainwallet: - wallet = await get_watch_wallet(data.onchainwallet) onchain = await get_fresh_address(data.onchainwallet) onchainaddress = onchain.address else: @@ -89,7 +88,8 @@ async def get_charge(charge_id: str) -> Charges: async def get_charges(user: str) -> List[Charges]: rows = await db.fetchall( - """SELECT * FROM satspay.charges WHERE "user" = ?""", (user,) + """SELECT * FROM satspay.charges WHERE "user" = ? ORDER BY "timestamp" DESC """, + (user,), ) return [Charges.from_row(row) for row in rows] @@ -102,14 +102,16 @@ async def check_address_balance(charge_id: str) -> List[Charges]: charge = await get_charge(charge_id) if not charge.paid: if charge.onchainaddress: - mempool = await get_mempool(charge.user) + config = await get_config(charge.user) try: async with httpx.AsyncClient() as client: r = await client.get( - mempool.endpoint + "/api/address/" + charge.onchainaddress + config.mempool_endpoint + + "/api/address/" + + charge.onchainaddress ) respAmount = r.json()["chain_stats"]["funded_txo_sum"] - if respAmount >= charge.balance: + if respAmount > charge.balance: await update_charge(charge_id=charge_id, balance=respAmount) except Exception: pass diff --git a/lnbits/extensions/satspay/models.py b/lnbits/extensions/satspay/models.py index 7e8080dc9..e8638d5e2 100644 --- a/lnbits/extensions/satspay/models.py +++ b/lnbits/extensions/satspay/models.py @@ -1,4 +1,4 @@ -import time +from datetime import datetime, timedelta from sqlite3 import Row from typing import Optional @@ -38,12 +38,16 @@ class Charges(BaseModel): def from_row(cls, row: Row) -> "Charges": return cls(**dict(row)) + @property + def time_left(self): + now = datetime.utcnow().timestamp() + start = datetime.fromtimestamp(self.timestamp) + expiration = (start + timedelta(minutes=self.time)).timestamp() + return (expiration - now) / 60 + @property def time_elapsed(self): - if (self.timestamp + (self.time * 60)) >= time.time(): - return False - else: - return True + return self.time_left < 0 @property def paid(self): diff --git a/lnbits/extensions/satspay/static/js/utils.js b/lnbits/extensions/satspay/static/js/utils.js new file mode 100644 index 000000000..9b4abbfca --- /dev/null +++ b/lnbits/extensions/satspay/static/js/utils.js @@ -0,0 +1,31 @@ +const sleep = ms => new Promise(r => setTimeout(r, ms)) +const retryWithDelay = async function (fn, retryCount = 0) { + try { + await sleep(25) + // Do not return the call directly, use result. + // Otherwise the error will not be cought in this try-catch block. + const result = await fn() + return result + } catch (err) { + if (retryCount > 100) throw err + await sleep((retryCount + 1) * 1000) + return retryWithDelay(fn, retryCount + 1) + } +} + +const mapCharge = (obj, oldObj = {}) => { + const charge = _.clone(obj) + + charge.progress = obj.time_left < 0 ? 1 : 1 - obj.time_left / obj.time + charge.time = minutesToTime(obj.time) + charge.timeLeft = minutesToTime(obj.time_left) + + charge.expanded = false + charge.displayUrl = ['/satspay/', obj.id].join('') + charge.expanded = oldObj.expanded + charge.pendingBalance = oldObj.pendingBalance || 0 + return charge +} + +const minutesToTime = min => + min > 0 ? new Date(min * 1000).toISOString().substring(14, 19) : '' diff --git a/lnbits/extensions/satspay/templates/satspay/_api_docs.html b/lnbits/extensions/satspay/templates/satspay/_api_docs.html index 336ab8997..ed6587357 100644 --- a/lnbits/extensions/satspay/templates/satspay/_api_docs.html +++ b/lnbits/extensions/satspay/templates/satspay/_api_docs.html @@ -8,172 +8,10 @@ Created by, Ben Arc

+
+
+ Swagger REST API Documentation - - - - - - POST /satspay/api/v1/charge -
Headers
- {"X-Api-Key": <admin_key>}
-
- Body (application/json) -
-
- Returns 200 OK (application/json) -
- [<charge_object>, ...] -
Curl example
- curl -X POST {{ request.base_url }}satspay/api/v1/charge -d - '{"onchainwallet": <string, watchonly_wallet_id>, - "description": <string>, "webhook":<string>, "time": - <integer>, "amount": <integer>, "lnbitswallet": - <string, lnbits_wallet_id>}' -H "Content-type: - application/json" -H "X-Api-Key: {{user.wallets[0].adminkey }}" - -
-
-
- - - - PUT - /satspay/api/v1/charge/<charge_id> -
Headers
- {"X-Api-Key": <admin_key>}
-
- Body (application/json) -
-
- Returns 200 OK (application/json) -
- [<charge_object>, ...] -
Curl example
- curl -X POST {{ request.base_url - }}satspay/api/v1/charge/<charge_id> -d '{"onchainwallet": - <string, watchonly_wallet_id>, "description": <string>, - "webhook":<string>, "time": <integer>, "amount": - <integer>, "lnbitswallet": <string, lnbits_wallet_id>}' - -H "Content-type: application/json" -H "X-Api-Key: - {{user.wallets[0].adminkey }}" - -
-
-
- - - - - GET - /satspay/api/v1/charge/<charge_id> -
Headers
- {"X-Api-Key": <invoice_key>}
-
- Body (application/json) -
-
- Returns 200 OK (application/json) -
- [<charge_object>, ...] -
Curl example
- curl -X GET {{ request.base_url - }}satspay/api/v1/charge/<charge_id> -H "X-Api-Key: {{ - user.wallets[0].inkey }}" - -
-
-
- - - - GET /satspay/api/v1/charges -
Headers
- {"X-Api-Key": <invoice_key>}
-
- Body (application/json) -
-
- Returns 200 OK (application/json) -
- [<charge_object>, ...] -
Curl example
- curl -X GET {{ request.base_url }}satspay/api/v1/charges -H - "X-Api-Key: {{ user.wallets[0].inkey }}" - -
-
-
- - - - DELETE - /satspay/api/v1/charge/<charge_id> -
Headers
- {"X-Api-Key": <admin_key>}
-
Returns 204 NO CONTENT
- -
Curl example
- curl -X DELETE {{ request.base_url - }}satspay/api/v1/charge/<charge_id> -H "X-Api-Key: {{ - user.wallets[0].adminkey }}" - -
-
-
- - - - GET - /satspay/api/v1/charges/balance/<charge_id> -
- Body (application/json) -
-
- Returns 200 OK (application/json) -
- [<charge_object>, ...] -
Curl example
- curl -X GET {{ request.base_url - }}satspay/api/v1/charges/balance/<charge_id> -H "X-Api-Key: {{ - user.wallets[0].inkey }}" - -
-
-
-
diff --git a/lnbits/extensions/satspay/templates/satspay/display.html b/lnbits/extensions/satspay/templates/satspay/display.html index 8c577fbed..f34ac5095 100644 --- a/lnbits/extensions/satspay/templates/satspay/display.html +++ b/lnbits/extensions/satspay/templates/satspay/display.html @@ -1,223 +1,299 @@ {% extends "public.html" %} {% block page %} -
- -
-
-
{{ charge.description }}
-
-
-
-
Time elapsed
-
-
-
Charge paid
-
-
- - - - Awaiting payment... - - {% raw %} {{ newTimeLeft }} {% endraw %} - - - +
+
+
+ +
+
+
-
-
- Charge ID: {{ charge.id }} +
+
-
- {% raw %} Total to pay: {{ charge_amount }}sats
- Amount paid: {{ charge_balance }}

- Amount due: {{ charge_amount - charge_balance }}sats {% endraw %} -
-
- -
-
-
- - - bitcoin lightning payment method not available - - - - pay with lightning - + Time elapsed
-
- - - bitcoin onchain payment method not available - - - - pay onchain - -
-
- -
-
- - -
-
- -
-
- - +
+ Charge paid
-
- Pay this
- lightning-network invoice
+ + + Awaiting payment... + + {% raw %} {{ charge.timeLeft }} {% endraw %} + + + +
+
+
+
+
+
+
Charge Id:
+
+ +
+
+
+
Total to pay:
+
+ + sat + +
+
+
+
Amount paid:
+
+ + + sat - - - - - - -
- Copy invoice +
+
+
Amount pending:
+
+ + sat + +
+
+
+
Amount due:
+
+ + + sat + + + none
+
+ +
+
+
+
+ + + bitcoin lightning payment method not available + + + + pay with lightning + +
+
+ + + bitcoin onchain payment method not available + + + + pay onchain + +
+
+ +
+
+ + + +
+
+
+
+ +
+
+ + +
+
+
+
+ Pay this lightning-network invoice: +
+
+ + + + + + +
+
+ Copy invoice +
+
+
+
+
+
-
-
- -
-
- - -
-
-
- Send {{ charge.amount }}sats
- to this onchain address
-
- - - - +
+
+ -
+
+
+
+
+
+
+ +
+
+ Copy address + v-if="charge.webhook" + type="a" + :href="charge.completelink" + :label="charge.completelinktext" + > +
+
+
+
+ Send + + + sats to this onchain address +
+
+ + + + + + +
+
+ Copy address +
+
+
- +
+
{% endblock %} {% block scripts %} - + + diff --git a/lnbits/extensions/satspay/templates/satspay/index.html b/lnbits/extensions/satspay/templates/satspay/index.html index 551b81b8e..396200cf1 100644 --- a/lnbits/extensions/satspay/templates/satspay/index.html +++ b/lnbits/extensions/satspay/templates/satspay/index.html @@ -18,46 +18,54 @@
Charges
-
+
- Export to CSV +
+
+ + + + + Export to CSV + + + +
@@ -66,73 +74,179 @@ + + + + + expired + + + + paid + + + waiting + + + + {{props.row.description}} - Payment link - - - +
{{props.row.timeLeft}}
+ - Time elapsed -
- - - PAID! - - - - Processing - - - Delete charge - +
- -
-
{{ col.value }}
+ +
{{props.row.time}}
+
+ +
{{props.row.amount}}
+
+ +
{{props.row.balance}}
+
+ +
+ {{props.row.pendingBalance ? props.row.pendingBalance : ''}} +
+
+ + {{props.row.onchainaddress}} + +
+ + +
+
Onchain Wallet:
+
+ {{getOnchainWalletName(props.row.onchainwallet)}} +
+
+
+
LNbits Wallet:
+
+ {{getLNbitsWalletName(props.row.lnbitswallet)}} +
+
+ + + +
+
ID:
+
{{props.row.id}}
+
+
+
+
+ Details + Refresh Balance +
+
+ Delete +
+
+
+
@@ -155,11 +269,7 @@
- + @@ -284,49 +394,28 @@ + + + diff --git a/lnbits/extensions/satspay/views.py b/lnbits/extensions/satspay/views.py index d33d5c17e..69d81dadf 100644 --- a/lnbits/extensions/satspay/views.py +++ b/lnbits/extensions/satspay/views.py @@ -9,6 +9,7 @@ from starlette.responses import HTMLResponse from lnbits.core.crud import get_wallet from lnbits.core.models import User from lnbits.decorators import check_user_exists +from lnbits.extensions.watchonly.crud import get_config from . import satspay_ext, satspay_renderer from .crud import get_charge @@ -24,14 +25,24 @@ async def index(request: Request, user: User = Depends(check_user_exists)): @satspay_ext.get("/{charge_id}", response_class=HTMLResponse) -async def display(request: Request, charge_id): +async def display(request: Request, charge_id: str): charge = await get_charge(charge_id) if not charge: raise HTTPException( status_code=HTTPStatus.NOT_FOUND, detail="Charge link does not exist." ) wallet = await get_wallet(charge.lnbitswallet) + onchainwallet_config = await get_config(charge.user) + inkey = wallet.inkey if wallet else None + mempool_endpoint = ( + onchainwallet_config.mempool_endpoint if onchainwallet_config else None + ) return satspay_renderer().TemplateResponse( "satspay/display.html", - {"request": request, "charge": charge, "wallet_key": wallet.inkey}, + { + "request": request, + "charge_data": charge.dict(), + "wallet_inkey": inkey, + "mempool_endpoint": mempool_endpoint, + }, ) diff --git a/lnbits/extensions/satspay/views_api.py b/lnbits/extensions/satspay/views_api.py index c3e38f0cd..f94b970af 100644 --- a/lnbits/extensions/satspay/views_api.py +++ b/lnbits/extensions/satspay/views_api.py @@ -1,7 +1,6 @@ from http import HTTPStatus import httpx -from fastapi import Query from fastapi.params import Depends from starlette.exceptions import HTTPException @@ -31,7 +30,12 @@ async def api_charge_create( data: CreateCharge, wallet: WalletTypeInfo = Depends(require_invoice_key) ): charge = await create_charge(user=wallet.wallet.user, data=data) - return charge.dict() + return { + **charge.dict(), + **{"time_elapsed": charge.time_elapsed}, + **{"time_left": charge.time_left}, + **{"paid": charge.paid}, + } @satspay_ext.put("/api/v1/charge/{charge_id}") @@ -51,6 +55,7 @@ async def api_charges_retrieve(wallet: WalletTypeInfo = Depends(get_key_type)): { **charge.dict(), **{"time_elapsed": charge.time_elapsed}, + **{"time_left": charge.time_left}, **{"paid": charge.paid}, } for charge in await get_charges(wallet.wallet.user) @@ -73,6 +78,7 @@ async def api_charge_retrieve( return { **charge.dict(), **{"time_elapsed": charge.time_elapsed}, + **{"time_left": charge.time_left}, **{"paid": charge.paid}, } @@ -93,9 +99,18 @@ async def api_charge_delete(charge_id, wallet: WalletTypeInfo = Depends(get_key_ #############################BALANCE########################## -@satspay_ext.get("/api/v1/charges/balance/{charge_id}") -async def api_charges_balance(charge_id): +@satspay_ext.get("/api/v1/charges/balance/{charge_ids}") +async def api_charges_balance(charge_ids): + charge_id_list = charge_ids.split(",") + charges = [] + for charge_id in charge_id_list: + charge = await api_charge_balance(charge_id) + charges.append(charge) + return charges + +@satspay_ext.get("/api/v1/charge/balance/{charge_id}") +async def api_charge_balance(charge_id): charge = await check_address_balance(charge_id) if not charge: @@ -125,23 +140,9 @@ async def api_charges_balance(charge_id): ) except AssertionError: charge.webhook = None - return charge.dict() - - -#############################MEMPOOL########################## - - -@satspay_ext.put("/api/v1/mempool") -async def api_update_mempool( - endpoint: str = Query(...), wallet: WalletTypeInfo = Depends(get_key_type) -): - mempool = await update_mempool(endpoint, user=wallet.wallet.user) - return mempool.dict() - - -@satspay_ext.route("/api/v1/mempool") -async def api_get_mempool(wallet: WalletTypeInfo = Depends(get_key_type)): - mempool = await get_mempool(wallet.wallet.user) - if not mempool: - mempool = await create_mempool(user=wallet.wallet.user) - return mempool.dict() + return { + **charge.dict(), + **{"time_elapsed": charge.time_elapsed}, + **{"time_left": charge.time_left}, + **{"paid": charge.paid}, + } diff --git a/lnbits/extensions/subdomains/views_api.py b/lnbits/extensions/subdomains/views_api.py index ba87bc982..b01e6ffbb 100644 --- a/lnbits/extensions/subdomains/views_api.py +++ b/lnbits/extensions/subdomains/views_api.py @@ -5,7 +5,7 @@ from fastapi.params import Depends from starlette.exceptions import HTTPException from lnbits.core.crud import get_user -from lnbits.core.services import check_invoice_status, create_invoice +from lnbits.core.services import check_transaction_status, create_invoice from lnbits.decorators import WalletTypeInfo, get_key_type from lnbits.extensions.subdomains.models import CreateDomain, CreateSubdomain @@ -161,7 +161,7 @@ async def api_subdomain_make_subdomain(domain_id, data: CreateSubdomain): async def api_subdomain_send_subdomain(payment_hash): subdomain = await get_subdomain(payment_hash) try: - status = await check_invoice_status(subdomain.wallet, payment_hash) + status = await check_transaction_status(subdomain.wallet, payment_hash) is_paid = not status.pending except Exception: return {"paid": False} diff --git a/lnbits/extensions/tipjar/views_api.py b/lnbits/extensions/tipjar/views_api.py index 5a55a3ca0..50c5138b0 100644 --- a/lnbits/extensions/tipjar/views_api.py +++ b/lnbits/extensions/tipjar/views_api.py @@ -57,7 +57,7 @@ async def api_create_tip(data: createTips): name = name.replace('"', "''") if not name: name = "Anonymous" - description = f'"{name}": {message}' + description = f"{name}: {message}" charge = await create_charge( user=charge_details["user"], data=CreateCharge( diff --git a/lnbits/extensions/watchonly/README.md b/lnbits/extensions/watchonly/README.md index be7bf351b..c07f75b11 100644 --- a/lnbits/extensions/watchonly/README.md +++ b/lnbits/extensions/watchonly/README.md @@ -8,15 +8,16 @@ You can now use this wallet on the LNBits [SatsPayServer](https://github.com/lnb ### Wallet Account - a user can add one or more `xPubs` or `descriptors` - - the `xPub` fingerprint must be unique per user + - the `xPub` must be unique per user - such and entry is called an `Wallet Account` - the addresses in a `Wallet Account` are split into `Receive Addresses` and `Change Address` - the user interacts directly only with the `Receive Addresses` (by sharing them) - see [BIP44](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account-discovery) for more details - same `xPub` will always generate the same addresses (deterministic) - when a `Wallet Account` is created, there are generated `20 Receive Addresses` and `5 Change Address` - - the limits can be change from the `Config` page (see `screenshot 1`) + - the limits can be change from the `Config` page (see `screenshot 1`) - regular wallets only scan up to `20` empty receive addresses. If the user generates addresses beyond this limit a warning is shown (see `screenshot 4`) + - an account can be added `From Hardware Device` ### Scan Blockchain - when the user clicks `Scan Blockchain`, the wallet will loop over the all addresses (for each account) @@ -48,33 +49,32 @@ You can now use this wallet on the LNBits [SatsPayServer](https://github.com/lnb - shows the UTXOs for all wallets - there can be multiple UTXOs for the same address -### Make Payment +### New Payment - create a new `Partially Signed Bitcoin Transaction` - multiple `Send Addresses` can be added - the `Max` button next to an address is for sending the remaining funds to this address (no change) - the user can select the inputs (UTXOs) manually, or it can use of the basic selection algorithms - amounts have to be provided for the `Send Addresses` beforehand (so the algorithm knows the amount to be selected) - - `Show Advanced` allows to (see `screenshot 2`): - - select from which account the change address will be selected (defaults to the first one) - - select the `Fee Rate` - - it defaults to the `Medium` value at the moment the `Make Payment` button was clicked - - it can be refreshed - - warnings are shown if the fee is too Low or to High + - `Show Change` allows to select from which account the change address will be selected (defaults to the first one) + - `Show Custom Fee` allows to manually select the fee + - it defaults to the `Medium` value at the moment the `New Payment` button was clicked + - it can be refreshed + - warnings are shown if the fee is too Low or to High -### Create PSBT - - based on the Inputs & Outputs selected by the user a PSBT will be generated - - this wallet is watch-only, therefore does not support signing - - it is not mandatory for the `Selected Amount` to be grater than `Payed Amount` - - the generated PSBT can be combined with other PSBTs that add more inputs. - - the generated PSBT can be imported for signing into different wallets like Electrum - - import the PSBT into Electrum and check the In/Outs/Fee (see `screenshot 3`) +### Check & Send + - creates the PSBT and sends it to the Hardware Wallet + - a confirmation will be shown for each Output and for the Fee + - after the user confirms the addresses and amounts, the transaction will be signed on the Hardware Device + +### Share PSBT + - Show the PSBT without sending it to the Hardware Wallet ## Screensots - screenshot 1: ![image](https://user-images.githubusercontent.com/2951406/177181611-eeeac70c-c245-4b45-b80b-8bbb511f6d1d.png) - screenshot 2: -![image](https://user-images.githubusercontent.com/2951406/177331468-f9b43626-548a-4608-b0d0-44007f402404.png) +![image](https://user-images.githubusercontent.com/2951406/183087898-b91f5243-8ed9-4a14-9e57-7bb4f1fd43ef.png) - screenshot 3: ![image](https://user-images.githubusercontent.com/2951406/177333755-4a9118fb-3eaf-43d6-bc7e-c3d8c80bc61e.png) diff --git a/lnbits/extensions/watchonly/crud.py b/lnbits/extensions/watchonly/crud.py index b88a7df7e..21fea6f0f 100644 --- a/lnbits/extensions/watchonly/crud.py +++ b/lnbits/extensions/watchonly/crud.py @@ -4,8 +4,8 @@ from typing import List, Optional from lnbits.helpers import urlsafe_short_hash from . import db -from .helpers import derive_address, parse_key -from .models import Address, Config, Mempool, WalletAccount +from .helpers import derive_address +from .models import Address, Config, WalletAccount ##########################WALLETS#################### @@ -22,9 +22,10 @@ async def create_watch_wallet(w: WalletAccount) -> WalletAccount: title, type, address_no, - balance + balance, + network ) - VALUES (?, ?, ?, ?, ?, ?, ?, ?) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) """, ( wallet_id, @@ -35,6 +36,7 @@ async def create_watch_wallet(w: WalletAccount) -> WalletAccount: w.type, w.address_no, w.balance, + w.network, ), ) @@ -48,9 +50,10 @@ async def get_watch_wallet(wallet_id: str) -> Optional[WalletAccount]: return WalletAccount.from_row(row) if row else None -async def get_watch_wallets(user: str) -> List[WalletAccount]: +async def get_watch_wallets(user: str, network: str) -> List[WalletAccount]: rows = await db.fetchall( - """SELECT * FROM watchonly.wallets WHERE "user" = ?""", (user,) + """SELECT * FROM watchonly.wallets WHERE "user" = ? AND network = ?""", + (user, network), ) return [WalletAccount(**row) for row in rows] @@ -238,41 +241,3 @@ async def get_config(user: str) -> Optional[Config]: """SELECT json_data FROM watchonly.config WHERE "user" = ?""", (user,) ) return json.loads(row[0], object_hook=lambda d: Config(**d)) if row else None - - -######################MEMPOOL####################### -### TODO: fix statspay dependcy and remove -async def create_mempool(user: str) -> Optional[Mempool]: - await db.execute( - """ - INSERT INTO watchonly.mempool ("user",endpoint) - VALUES (?, ?) - """, - (user, "https://mempool.space"), - ) - row = await db.fetchone( - """SELECT * FROM watchonly.mempool WHERE "user" = ?""", (user,) - ) - return Mempool.from_row(row) if row else None - - -### TODO: fix statspay dependcy and remove -async def update_mempool(user: str, **kwargs) -> Optional[Mempool]: - q = ", ".join([f"{field[0]} = ?" for field in kwargs.items()]) - - await db.execute( - f"""UPDATE watchonly.mempool SET {q} WHERE "user" = ?""", - (*kwargs.values(), user), - ) - row = await db.fetchone( - """SELECT * FROM watchonly.mempool WHERE "user" = ?""", (user,) - ) - return Mempool.from_row(row) if row else None - - -### TODO: fix statspay dependcy and remove -async def get_mempool(user: str) -> Mempool: - row = await db.fetchone( - """SELECT * FROM watchonly.mempool WHERE "user" = ?""", (user,) - ) - return Mempool.from_row(row) if row else None diff --git a/lnbits/extensions/watchonly/migrations.py b/lnbits/extensions/watchonly/migrations.py index 8e371a2a0..0c06b7385 100644 --- a/lnbits/extensions/watchonly/migrations.py +++ b/lnbits/extensions/watchonly/migrations.py @@ -77,7 +77,19 @@ async def m004_create_config_table(db): );""" ) - ### TODO: fix statspay dependcy first - # await db.execute( - # "DROP TABLE watchonly.wallets;" - # ) + +async def m005_add_network_column_to_wallets(db): + """ + Add network' column to the 'wallets' table + """ + + await db.execute( + "ALTER TABLE watchonly.wallets ADD COLUMN network TEXT DEFAULT 'Mainnet';" + ) + + +async def m006_drop_mempool_table(db): + """ + Mempool data is now part of `config` + """ + await db.execute("DROP TABLE watchonly.mempool;") diff --git a/lnbits/extensions/watchonly/models.py b/lnbits/extensions/watchonly/models.py index bc10e4210..4bf0dfcac 100644 --- a/lnbits/extensions/watchonly/models.py +++ b/lnbits/extensions/watchonly/models.py @@ -1,5 +1,5 @@ from sqlite3 import Row -from typing import List +from typing import List, Optional from fastapi.param_functions import Query from pydantic import BaseModel @@ -8,6 +8,7 @@ from pydantic import BaseModel class CreateWallet(BaseModel): masterpub: str = Query("") title: str = Query("") + network: str = "Mainnet" class WalletAccount(BaseModel): @@ -19,22 +20,13 @@ class WalletAccount(BaseModel): address_no: int balance: int type: str = "" + network: str = "Mainnet" @classmethod def from_row(cls, row: Row) -> "WalletAccount": return cls(**dict(row)) -### TODO: fix statspay dependcy and remove -class Mempool(BaseModel): - user: str - endpoint: str - - @classmethod - def from_row(cls, row: Row) -> "Mempool": - return cls(**dict(row)) - - class Address(BaseModel): id: str address: str @@ -57,7 +49,7 @@ class TransactionInput(BaseModel): address: str branch_index: int address_index: int - masterpub_fingerprint: str + wallet: str tx_hex: str @@ -66,10 +58,11 @@ class TransactionOutput(BaseModel): address: str branch_index: int = None address_index: int = None - masterpub_fingerprint: str = None + wallet: str = None class MasterPublicKey(BaseModel): + id: str public_key: str fingerprint: str @@ -82,8 +75,23 @@ class CreatePsbt(BaseModel): tx_size: int +class ExtractPsbt(BaseModel): + psbtBase64 = "" # // todo snake case + inputs: List[TransactionInput] + + +class SignedTransaction(BaseModel): + tx_hex: Optional[str] + tx_json: Optional[str] + + +class BroadcastTransaction(BaseModel): + tx_hex: str + + class Config(BaseModel): mempool_endpoint = "https://mempool.space" receive_gap_limit = 20 change_gap_limit = 5 sats_denominated = True + network = "Mainnet" diff --git a/lnbits/extensions/watchonly/static/components/address-list/address-list.html b/lnbits/extensions/watchonly/static/components/address-list/address-list.html new file mode 100644 index 000000000..f21210631 --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/address-list/address-list.html @@ -0,0 +1,204 @@ +
+
+
+ +
+
+ +
+
+ + + +
+
+ + + +
diff --git a/lnbits/extensions/watchonly/static/components/address-list/address-list.js b/lnbits/extensions/watchonly/static/components/address-list/address-list.js new file mode 100644 index 000000000..ebb8c87f8 --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/address-list/address-list.js @@ -0,0 +1,121 @@ +async function addressList(path) { + const template = await loadTemplateAsync(path) + Vue.component('address-list', { + name: 'address-list', + template, + + props: [ + 'addresses', + 'accounts', + 'mempool-endpoint', + 'inkey', + 'sats-denominated' + ], + data: function () { + return { + show: false, + history: [], + selectedWallet: null, + note: '', + filterOptions: [ + 'Show Change Addresses', + 'Show Gap Addresses', + 'Only With Amount' + ], + filterValues: [], + + addressesTable: { + columns: [ + { + name: 'expand', + align: 'left', + label: '' + }, + { + name: 'address', + align: 'left', + label: 'Address', + field: 'address', + sortable: true + }, + { + name: 'amount', + align: 'left', + label: 'Amount', + field: 'amount', + sortable: true + }, + { + name: 'note', + align: 'left', + label: 'Note', + field: 'note', + sortable: true + }, + { + name: 'wallet', + align: 'left', + label: 'Account', + field: 'wallet', + sortable: true + } + ], + pagination: { + rowsPerPage: 0, + sortBy: 'amount', + descending: true + }, + filter: '' + } + } + }, + + methods: { + satBtc(val, showUnit = true) { + return satOrBtc(val, showUnit, this.satsDenominated) + }, + getWalletName: function (walletId) { + const wallet = (this.accounts || []).find(wl => wl.id === walletId) + return wallet ? wallet.title : 'unknown' + }, + getFilteredAddresses: function () { + const selectedWalletId = this.selectedWallet?.id + const filter = this.filterValues || [] + const includeChangeAddrs = filter.includes('Show Change Addresses') + const includeGapAddrs = filter.includes('Show Gap Addresses') + const excludeNoAmount = filter.includes('Only With Amount') + + const walletsLimit = (this.accounts || []).reduce((r, w) => { + r[`_${w.id}`] = w.address_no + return r + }, {}) + + const fAddresses = this.addresses.filter( + a => + (includeChangeAddrs || !a.isChange) && + (includeGapAddrs || + a.isChange || + a.addressIndex <= walletsLimit[`_${a.wallet}`]) && + !(excludeNoAmount && a.amount === 0) && + (!selectedWalletId || a.wallet === selectedWalletId) + ) + return fAddresses + }, + + scanAddress: async function (addressData) { + this.$emit('scan:address', addressData) + }, + showAddressDetails: function (addressData) { + this.$emit('show-address-details', addressData) + }, + searchInTab: function (tab, value) { + this.$emit('search:tab', {tab, value}) + }, + updateNoteForAddress: async function (addressData, note) { + this.$emit('update:note', {addressId: addressData.id, note}) + } + }, + + created: async function () {} + }) +} diff --git a/lnbits/extensions/watchonly/static/components/fee-rate/fee-rate.html b/lnbits/extensions/watchonly/static/components/fee-rate/fee-rate.html new file mode 100644 index 000000000..c65ad1c46 --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/fee-rate/fee-rate.html @@ -0,0 +1,61 @@ +
+
+
Fee Rate:
+
+ +
+
+ +
+
+
+
+
+ + Warning! The fee is too low. The transaction might take a long time to + confirm. + + + Warning! The fee is too high. You might be overpaying for this + transaction. + +
+
+ +
+
Fee:
+
{{feeValue}} sats
+
+ Refresh Fee Rates +
+
+
diff --git a/lnbits/extensions/watchonly/static/components/fee-rate/fee-rate.js b/lnbits/extensions/watchonly/static/components/fee-rate/fee-rate.js new file mode 100644 index 000000000..7a920a9a4 --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/fee-rate/fee-rate.js @@ -0,0 +1,64 @@ +async function feeRate(path) { + const template = await loadTemplateAsync(path) + Vue.component('fee-rate', { + name: 'fee-rate', + template, + + props: ['rate', 'fee-value', 'sats-denominated', 'mempool-endpoint'], + + computed: { + feeRate: { + get: function () { + return this['rate'] + }, + set: function (value) { + this.$emit('update:rate', +value) + } + } + }, + + data: function () { + return { + recommededFees: { + fastestFee: 1, + halfHourFee: 1, + hourFee: 1, + economyFee: 1, + minimumFee: 1 + } + } + }, + + methods: { + satBtc(val, showUnit = true) { + return satOrBtc(val, showUnit, this.satsDenominated) + }, + + refreshRecommendedFees: async function () { + const fn = async () => { + const { + bitcoin: {fees: feesAPI} + } = mempoolJS({ + hostname: this.mempoolEndpoint + }) + return feesAPI.getFeesRecommended() + } + this.recommededFees = await retryWithDelay(fn) + }, + getFeeRateLabel: function (feeRate) { + const fees = this.recommededFees + if (feeRate >= fees.fastestFee) + return `High Priority (${feeRate} sat/vB)` + if (feeRate >= fees.halfHourFee) + return `Medium Priority (${feeRate} sat/vB)` + if (feeRate >= fees.hourFee) return `Low Priority (${feeRate} sat/vB)` + return `No Priority (${feeRate} sat/vB)` + } + }, + + created: async function () { + await this.refreshRecommendedFees() + this.feeRate = this.recommededFees.halfHourFee + } + }) +} diff --git a/lnbits/extensions/watchonly/static/components/history/history.html b/lnbits/extensions/watchonly/static/components/history/history.html new file mode 100644 index 000000000..ac805dfa6 --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/history/history.html @@ -0,0 +1,144 @@ +
+
+
+
+ + + +
+
+ + + + + Export to CSV + + + + +
+
+ + + +
diff --git a/lnbits/extensions/watchonly/static/components/history/history.js b/lnbits/extensions/watchonly/static/components/history/history.js new file mode 100644 index 000000000..574a1ef69 --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/history/history.js @@ -0,0 +1,94 @@ +async function history(path) { + const template = await loadTemplateAsync(path) + Vue.component('history', { + name: 'history', + template, + + props: ['history', 'mempool-endpoint', 'sats-denominated', 'filter'], + data: function () { + return { + historyTable: { + columns: [ + { + name: 'expand', + align: 'left', + label: '' + }, + { + name: 'status', + align: 'left', + label: 'Status' + }, + { + name: 'amount', + align: 'left', + label: 'Amount', + field: 'amount', + sortable: true + }, + { + name: 'address', + align: 'left', + label: 'Address', + field: 'address', + sortable: true + }, + { + name: 'date', + align: 'left', + label: 'Date', + field: 'date', + sortable: true + } + ], + exportColums: [ + { + label: 'Action', + field: 'action' + }, + { + label: 'Date&Time', + field: 'date' + }, + { + label: 'Amount', + field: 'amount' + }, + { + label: 'Fee', + field: 'fee' + }, + { + label: 'Transaction Id', + field: 'txId' + } + ], + pagination: { + rowsPerPage: 0 + } + } + } + }, + + methods: { + satBtc(val, showUnit = true) { + return satOrBtc(val, showUnit, this.satsDenominated) + }, + getFilteredAddressesHistory: function () { + return this.history.filter(a => (!a.isChange || a.sent) && !a.isSubItem) + }, + exportHistoryToCSV: function () { + const history = this.getFilteredAddressesHistory().map(a => ({ + ...a, + action: a.sent ? 'Sent' : 'Received' + })) + LNbits.utils.exportCSV( + this.historyTable.exportColums, + history, + 'address-history' + ) + } + }, + created: async function () {} + }) +} diff --git a/lnbits/extensions/watchonly/static/components/my-checkbox/my-checkbox.html b/lnbits/extensions/watchonly/static/components/my-checkbox/my-checkbox.html new file mode 100644 index 000000000..83af12484 --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/my-checkbox/my-checkbox.html @@ -0,0 +1,5 @@ +
+
+
{{ title }}
+ XXX +
diff --git a/lnbits/extensions/watchonly/static/components/my-checkbox/my-checkbox.js b/lnbits/extensions/watchonly/static/components/my-checkbox/my-checkbox.js new file mode 100644 index 000000000..3d22c3a05 --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/my-checkbox/my-checkbox.js @@ -0,0 +1,16 @@ +async function initMyCheckbox(path) { + const t = await loadTemplateAsync(path) + Vue.component('my-checkbox', { + name: 'my-checkbox', + template: t, + data() { + return {checked: false, title: 'Check me'} + }, + methods: { + check() { + this.checked = !this.checked + console.log('### checked', this.checked) + } + } + }) +} diff --git a/lnbits/extensions/watchonly/static/components/payment/payment.html b/lnbits/extensions/watchonly/static/components/payment/payment.html new file mode 100644 index 000000000..cde65ca29 --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/payment/payment.html @@ -0,0 +1,312 @@ +
+ + + + + + + + + +
+
+ +
+ +
+
+ Fee Rate: + + {{feeRate}} sats/vbyte + Fee: + {{satBtc(feeValue)}} +
+
+
+ +
+
+ + +
+
+
+
+ + + +
+
+ +
+ +
+
+ Balance: + {{satBtc(balance)}} + Selected: + + {{satBtc(selectedAmount)}} + +
+
+
+ +
+
+ + +
+
+
+
+ + + +
+
+ +
+ +
+ + Below dust limit. Will be used as fee. + +
+
+
+ Change: + + {{satBtc(0)}} + + + {{satBtc(changeAmount)}} + +
+
+
+ +
+
+ +
+
Change Account:
+
+ +
+
+ +
+
+
+
+
+
+ +
+
+ + + + + Serial Port + + Sign using a Serial Port device + + + + + Share PSBT + Share the PSBT as text or Animated QR Code + + + + +
+ +
+ + + The payed amount is higher than the selected amount! + +
+
+
+ + + + +
+ Close +
+
+
+ + + +
+
+ Transaction Details +
+
+ +
+
+
+
Version
+
{{signedTx.version}}
+
+
+
Locktime
+
{{signedTx.locktime}}
+
+
+
Fee
+
+ {{satBtc(signedTx.fee)}} +
+
+ + Outputs + +
+
+ {{satBtc(out.amount)}} +
+ +
+ {{out.address}} +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+ Send + Close +
+
+
+
diff --git a/lnbits/extensions/watchonly/static/components/payment/payment.js b/lnbits/extensions/watchonly/static/components/payment/payment.js new file mode 100644 index 000000000..1459083c1 --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/payment/payment.js @@ -0,0 +1,336 @@ +async function payment(path) { + const t = await loadTemplateAsync(path) + Vue.component('payment', { + name: 'payment', + template: t, + + props: [ + 'accounts', + 'addresses', + 'utxos', + 'mempool-endpoint', + 'sats-denominated', + 'serial-signer-ref', + 'adminkey' + ], + watch: { + immediate: true, + accounts() { + this.updateChangeAddress() + }, + addresses() { + this.updateChangeAddress() + } + }, + + data: function () { + return { + DUST_LIMIT: 546, + tx: null, + psbtBase64: null, + psbtBase64Signed: null, + signedTx: null, + signedTxHex: null, + sentTxId: null, + signedTxId: null, + paymentTab: 'destination', + sendToList: [{address: '', amount: undefined}], + changeWallet: null, + changeAddress: {}, + showCustomFee: false, + showCoinSelect: false, + showChecking: false, + showChange: false, + showPsbt: false, + showFinalTx: false, + feeRate: 1 + } + }, + + computed: { + txSize: function () { + const tx = this.createTx() + return Math.round(txSize(tx)) + }, + txSizeNoChange: function () { + const tx = this.createTx(true) + return Math.round(txSize(tx)) + }, + feeValue: function () { + return this.feeRate * this.txSize + }, + selectedAmount: function () { + return this.utxos + .filter(utxo => utxo.selected) + .reduce((t, a) => t + (a.amount || 0), 0) + }, + changeAmount: function () { + return ( + this.selectedAmount - + this.totalPayedAmount - + this.feeRate * this.txSize + ) + }, + balance: function () { + return this.utxos.reduce((t, a) => t + (a.amount || 0), 0) + }, + totalPayedAmount: function () { + return this.sendToList.reduce((t, a) => t + (a.amount || 0), 0) + } + }, + + methods: { + satBtc(val, showUnit = true) { + return satOrBtc(val, showUnit, this.satsDenominated) + }, + checkAndSend: async function () { + this.showChecking = true + try { + if (!this.serialSignerRef.isConnected()) { + const portOpen = await this.serialSignerRef.openSerialPort() + if (!portOpen) return + } + if (!this.serialSignerRef.isAuthenticated()) { + await this.serialSignerRef.hwwShowPasswordDialog() + const authenticated = await this.serialSignerRef.isAuthenticating() + if (!authenticated) return + } + + await this.createPsbt() + + if (this.psbtBase64) { + const txData = { + outputs: this.tx.outputs, + feeRate: this.tx.fee_rate, + feeValue: this.feeValue + } + await this.serialSignerRef.hwwSendPsbt(this.psbtBase64, txData) + await this.serialSignerRef.isSendingPsbt() + } + } catch (error) { + this.$q.notify({ + type: 'warning', + message: 'Cannot check and sign PSBT!', + caption: `${error}`, + timeout: 10000 + }) + } finally { + this.showChecking = false + this.psbtBase64 = null + } + }, + showPsbtDialog: async function () { + try { + const valid = await this.$refs.paymentFormRef.validate() + if (!valid) return + + const data = await this.createPsbt() + if (data) { + this.showPsbt = true + } + } catch (error) { + this.$q.notify({ + type: 'warning', + message: 'Failed to create PSBT!', + caption: `${error}`, + timeout: 10000 + }) + } + }, + createPsbt: async function () { + try { + console.log('### this.createPsbt') + this.tx = this.createTx() + for (const input of this.tx.inputs) { + input.tx_hex = await this.fetchTxHex(input.tx_id) + } + + const changeOutput = this.tx.outputs.find(o => o.branch_index === 1) + if (changeOutput) changeOutput.amount = this.changeAmount + + const {data} = await LNbits.api.request( + 'POST', + '/watchonly/api/v1/psbt', + this.adminkey, + this.tx + ) + + this.psbtBase64 = data + return data + } catch (err) { + LNbits.utils.notifyApiError(err) + } + }, + createTx: function (excludeChange = false) { + const tx = { + fee_rate: this.feeRate, + masterpubs: this.accounts.map(w => ({ + id: w.id, + public_key: w.masterpub, + fingerprint: w.fingerprint + })) + } + tx.inputs = this.utxos + .filter(utxo => utxo.selected) + .map(mapUtxoToPsbtInput) + .sort((a, b) => + a.tx_id < b.tx_id ? -1 : a.tx_id > b.tx_id ? 1 : a.vout - b.vout + ) + + tx.outputs = this.sendToList.map(out => ({ + address: out.address, + amount: out.amount + })) + + if (!excludeChange) { + const change = this.createChangeOutput() + const diffAmount = this.selectedAmount - this.totalPayedAmount + if (diffAmount >= this.DUST_LIMIT) { + tx.outputs.push(change) + } + } + tx.tx_size = Math.round(txSize(tx)) + tx.inputs = _.shuffle(tx.inputs) + tx.outputs = _.shuffle(tx.outputs) + + return tx + }, + createChangeOutput: function () { + const change = this.changeAddress + const walletAcount = + this.accounts.find(w => w.id === change.wallet) || {} + + return { + address: change.address, + address_index: change.addressIndex, + branch_index: change.isChange ? 1 : 0, + wallet: walletAcount.id + } + }, + selectChangeAddress: function (account) { + if (!account) this.changeAddress = '' + this.changeAddress = + this.addresses.find( + a => a.wallet === account.id && a.isChange && !a.hasActivity + ) || {} + }, + updateChangeAddress: function () { + if (this.changeWallet) { + const changeAccount = (this.accounts || []).find( + w => w.id === this.changeWallet.id + ) + // change account deleted + if (!changeAccount) { + this.changeWallet = this.accounts[0] + } + } else { + this.changeWallet = this.accounts[0] + } + this.selectChangeAddress(this.changeWallet) + }, + updateSignedPsbt: async function (psbtBase64) { + try { + this.showChecking = true + this.psbtBase64Signed = psbtBase64 + + console.log('### payment updateSignedPsbt psbtBase64', psbtBase64) + + const data = await this.extractTxFromPsbt(psbtBase64) + this.showFinalTx = true + if (data) { + this.signedTx = JSON.parse(data.tx_json) + this.signedTxHex = data.tx_hex + } else { + this.signedTx = null + this.signedTxHex = null + } + } finally { + this.showChecking = false + } + }, + extractTxFromPsbt: async function (psbtBase64) { + console.log('### extractTxFromPsbt psbtBase64', psbtBase64) + try { + const {data} = await LNbits.api.request( + 'PUT', + '/watchonly/api/v1/psbt/extract', + this.adminkey, + { + psbtBase64, + inputs: this.tx.inputs + } + ) + console.log('### extractTxFromPsbt data', data) + return data + } catch (error) { + console.log('### error', error) + this.$q.notify({ + type: 'warning', + message: 'Cannot finalize PSBT!', + timeout: 10000 + }) + LNbits.utils.notifyApiError(error) + } + }, + broadcastTransaction: async function () { + try { + const {data} = await LNbits.api.request( + 'POST', + '/watchonly/api/v1/tx', + this.adminkey, + {tx_hex: this.signedTxHex} + ) + this.sentTxId = data + + this.$q.notify({ + type: 'positive', + message: 'Transaction broadcasted!', + caption: `${data}`, + timeout: 10000 + }) + + // todo: event rescan with amount + // todo: display tx id + } catch (error) { + this.sentTxId = null + this.$q.notify({ + type: 'warning', + message: 'Failed to broadcast!', + caption: `${error}`, + timeout: 10000 + }) + } finally { + this.showFinalTx = false + } + }, + fetchTxHex: async function (txId) { + const { + bitcoin: {transactions: transactionsAPI} + } = mempoolJS({ + hostname: this.mempoolEndpoint + }) + + try { + const response = await transactionsAPI.getTxHex({txid: txId}) + return response + } catch (error) { + this.$q.notify({ + type: 'warning', + message: `Failed to fetch transaction details for tx id: '${txId}'`, + timeout: 10000 + }) + LNbits.utils.notifyApiError(error) + throw error + } + }, + handleOutputsChange: function () { + this.$refs.utxoList.refreshUtxoSelection(this.totalPayedAmount) + }, + getTotalPaymentAmount: function () { + return this.sendToList.reduce((t, a) => t + (a.amount || 0), 0) + } + }, + + created: async function () {} + }) +} diff --git a/lnbits/extensions/watchonly/static/components/send-to/send-to.html b/lnbits/extensions/watchonly/static/components/send-to/send-to.html new file mode 100644 index 000000000..c16ebf95d --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/send-to/send-to.html @@ -0,0 +1,77 @@ +
+
+ + + +
+
+ Add +
+
+
+ Payed Amount: + + {{satBtc(getTotalPaymentAmount())}} + +
+
+
+
+
diff --git a/lnbits/extensions/watchonly/static/components/send-to/send-to.js b/lnbits/extensions/watchonly/static/components/send-to/send-to.js new file mode 100644 index 000000000..2b93cea7b --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/send-to/send-to.js @@ -0,0 +1,81 @@ +async function sendTo(path) { + const template = await loadTemplateAsync(path) + Vue.component('send-to', { + name: 'send-to', + template, + + props: [ + 'data', + 'tx-size', + 'selected-amount', + 'fee-rate', + 'sats-denominated' + ], + + computed: { + dataLocal: { + get: function () { + return this.data + }, + set: function (value) { + console.log('### computed update data', value) + this.$emit('update:data', value) + } + } + }, + + data: function () { + return { + DUST_LIMIT: 546, + paymentTable: { + columns: [ + { + name: 'data', + align: 'left' + } + ], + pagination: { + rowsPerPage: 10 + }, + filter: '' + } + } + }, + + methods: { + satBtc(val, showUnit = true) { + return satOrBtc(val, showUnit, this.satsDenominated) + }, + addPaymentAddress: function () { + this.dataLocal.push({address: '', amount: undefined}) + this.handleOutputsChange() + }, + deletePaymentAddress: function (v) { + const index = this.dataLocal.indexOf(v) + if (index !== -1) { + this.dataLocal.splice(index, 1) + } + this.handleOutputsChange() + }, + + sendMaxToAddress: function (paymentAddress = {}) { + const feeValue = this.feeRate * this.txSize + const inputAmount = this.selectedAmount + const currentAmount = Math.max(0, paymentAddress.amount || 0) + const payedAmount = this.getTotalPaymentAmount() - currentAmount + paymentAddress.amount = Math.max( + 0, + inputAmount - payedAmount - feeValue + ) + }, + handleOutputsChange: function () { + this.$emit('update:outputs') + }, + getTotalPaymentAmount: function () { + return this.dataLocal.reduce((t, a) => t + (a.amount || 0), 0) + } + }, + + created: async function () {} + }) +} diff --git a/lnbits/extensions/watchonly/static/components/serial-port-config/serial-port-config.html b/lnbits/extensions/watchonly/static/components/serial-port-config/serial-port-config.html new file mode 100644 index 000000000..392ace177 --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/serial-port-config/serial-port-config.html @@ -0,0 +1,67 @@ +
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
diff --git a/lnbits/extensions/watchonly/static/components/serial-port-config/serial-port-config.js b/lnbits/extensions/watchonly/static/components/serial-port-config/serial-port-config.js new file mode 100644 index 000000000..8c1554356 --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/serial-port-config/serial-port-config.js @@ -0,0 +1,24 @@ +async function serialPortConfig(path) { + const t = await loadTemplateAsync(path) + Vue.component('serial-port-config', { + name: 'serial-port-config', + template: t, + data() { + return { + config: { + baudRate: 9600, + bufferSize: 255, + dataBits: 8, + flowControl: 'none', + parity: 'none', + stopBits: 1 + } + } + }, + methods: { + getConfig: function () { + return this.config + } + } + }) +} diff --git a/lnbits/extensions/watchonly/static/components/serial-signer/serial-signer.html b/lnbits/extensions/watchonly/static/components/serial-signer/serial-signer.html new file mode 100644 index 000000000..eed1c5606 --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/serial-signer/serial-signer.html @@ -0,0 +1,451 @@ +
+ + + + + Login + Enter password for Hardware Wallet. + + + + + + Logout + Clear password for HWW. + + + + + Config & Connect + Set the Serial Port communication parameters. + + + + + Disconnect + Disconnect from Serial Port. + + + + + + Restore + Restore wallet from existing word list. + + + + + Show Seed + Show seed on the Hardware Wallet display. + + + + + Wipe + Clean-up the wallet. New random seed. + + + + + Help + View available comands. + + + + + Console + Show the serial port communication messages + + + + + + + + + Enter Config + + + +
+ Connect + Cancel +
+
+
+
+ + + + + Enter password for Hardware Wallet (8 numbers/letters) + + +
+ Login + Cancel +
+
+
+
+ + + + +
+
+
+ Output {{hww.confirm.outputIndex}} + + change + +
+
+
+
+ Address: +
+
+ {{tx.outputs[hww.confirm.outputIndex].address}} +
+
+
+
+ Amount: +
+
+ {{satBtc(tx.outputs[hww.confirm.outputIndex].amount)}} +
+
+
+
+ Fee: +
+
+ {{satBtc(tx.feeValue)}} +
+
+
+
+ Fee Rate: +
+
+ {{tx.feeRate}} sats/vbyte +
+
+
+
+
+ + Check data on the display of the hardware device. + +
+
+
+
+ + + +
+
+ + +
+
+ Cancel +
+
+
+
+
+ + + + + + This action will remove all data from the Hardware Wallet. Please + create a back-up for the seed! + + Enter new password for Hardware Wallet (8 numbers/letters) + + + + + This action cannot be reversed! + + +
+ Wipe + Cancel +
+
+
+
+ + + + + +
+ Close +
+
+
+ + + + Check word at position {{hww.seedWordPosition}} on display + +
+
+ Prev +
+
+ Next +
+
+ Close +
+
+
+
+ + + + + + For test purposes only. Do not enter word list with real funds!!! + +


+ Enter new word list separated by space + + + +
+ Enter new password (8 numbers/letters) + + + + + +

+ + For test purposes only. Do not enter word list with real funds!!! + + + + ALL existing data on the Hardware Device will be lost. + + +
+ Restore + Cancel +
+
+
+
+
diff --git a/lnbits/extensions/watchonly/static/components/serial-signer/serial-signer.js b/lnbits/extensions/watchonly/static/components/serial-signer/serial-signer.js new file mode 100644 index 000000000..b12550319 --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/serial-signer/serial-signer.js @@ -0,0 +1,601 @@ +async function serialSigner(path) { + const t = await loadTemplateAsync(path) + Vue.component('serial-signer', { + name: 'serial-signer', + template: t, + + props: ['sats-denominated', 'network'], + data: function () { + return { + selectedPort: null, + writableStreamClosed: null, + writer: null, + readableStreamClosed: null, + reader: null, + receivedData: '', + config: {}, + + hww: { + password: null, + showPassword: false, + mnemonic: null, + showMnemonic: false, + authenticated: false, + showPasswordDialog: false, + showConfigDialog: false, + showWipeDialog: false, + showRestoreDialog: false, + showConfirmationDialog: false, + showSignedPsbt: false, + sendingPsbt: false, + signingPsbt: false, + loginResolve: null, + psbtSentResolve: null, + xpubResolve: null, + seedWordPosition: 1, + showSeedDialog: false, + confirm: { + outputIndex: 0, + showFee: false + } + }, + tx: null, // todo: move to hww + + showConsole: false + } + }, + + methods: { + satBtc(val, showUnit = true) { + return satOrBtc(val, showUnit, this.satsDenominated) + }, + openSerialPortDialog: async function () { + await this.openSerialPort() + }, + openSerialPort: async function (config = {baudRate: 9600}) { + if (!this.checkSerialPortSupported()) return false + if (this.selectedPort) { + this.$q.notify({ + type: 'warning', + message: 'Already connected. Disconnect first!', + timeout: 10000 + }) + return true + } + + try { + navigator.serial.addEventListener('connect', event => { + console.log('### navigator.serial event: connected!', event) + }) + + navigator.serial.addEventListener('disconnect', () => { + console.log('### navigator.serial event: disconnected!', event) + this.hww.authenticated = false + this.$q.notify({ + type: 'warning', + message: 'Disconnected from Serial Port!', + timeout: 10000 + }) + }) + this.selectedPort = await navigator.serial.requestPort() + // Wait for the serial port to open. + await this.selectedPort.open(config) + this.startSerialPortReading() + + const textEncoder = new TextEncoderStream() + this.writableStreamClosed = textEncoder.readable.pipeTo( + this.selectedPort.writable + ) + + this.writer = textEncoder.writable.getWriter() + return true + } catch (error) { + this.selectedPort = null + this.$q.notify({ + type: 'warning', + message: 'Cannot open serial port!', + caption: `${error}`, + timeout: 10000 + }) + return false + } + }, + openSerialPortConfig: async function () { + this.hww.showConfigDialog = true + }, + closeSerialPort: async function () { + try { + if (this.writer) this.writer.close() + if (this.writableStreamClosed) await this.writableStreamClosed + if (this.reader) this.reader.cancel() + if (this.readableStreamClosed) + await this.readableStreamClosed.catch(() => { + /* Ignore the error */ + }) + if (this.selectedPort) await this.selectedPort.close() + this.selectedPort = null + this.$q.notify({ + type: 'positive', + message: 'Serial port disconnected!', + timeout: 5000 + }) + } catch (error) { + this.selectedPort = null + this.$q.notify({ + type: 'warning', + message: 'Cannot close serial port!', + caption: `${error}`, + timeout: 10000 + }) + } finally { + this.hww.authenticated = false + } + }, + + isConnected: function () { + return !!this.selectedPort + }, + isAuthenticated: function () { + return this.hww.authenticated + }, + isAuthenticating: function () { + if (this.isAuthenticated()) return false + return new Promise(resolve => { + this.loginResolve = resolve + }) + }, + + isSendingPsbt: async function () { + if (!this.hww.sendingPsbt) return false + return new Promise(resolve => { + this.psbtSentResolve = resolve + }) + }, + + isFetchingXpub: async function () { + return new Promise(resolve => { + this.xpubResolve = resolve + }) + }, + + checkSerialPortSupported: function () { + if (!navigator.serial) { + this.$q.notify({ + type: 'warning', + message: 'Serial port communication not supported!', + caption: + 'Make sure your browser supports Serial Port and that you are using HTTPS.', + timeout: 10000 + }) + return false + } + return true + }, + startSerialPortReading: async function () { + const port = this.selectedPort + + while (port && port.readable) { + const textDecoder = new TextDecoderStream() + this.readableStreamClosed = port.readable.pipeTo(textDecoder.writable) + this.reader = textDecoder.readable.getReader() + const readStringUntil = readFromSerialPort(this.reader) + + try { + while (true) { + const {value, done} = await readStringUntil('\n') + if (value) { + this.handleSerialPortResponse(value) + this.updateSerialPortConsole(value) + } + if (done) return + } + } catch (error) { + this.$q.notify({ + type: 'warning', + message: 'Serial port communication error!', + caption: `${error}`, + timeout: 10000 + }) + } + } + }, + handleSerialPortResponse: function (value) { + const command = value.split(' ')[0] + const commandData = value.substring(command.length).trim() + + switch (command) { + case COMMAND_SIGN_PSBT: + this.handleSignResponse(commandData) + break + case COMMAND_PASSWORD: + this.handleLoginResponse(commandData) + break + case COMMAND_PASSWORD_CLEAR: + this.handleLogoutResponse(commandData) + break + case COMMAND_SEND_PSBT: + this.handleSendPsbtResponse(commandData) + break + case COMMAND_WIPE: + this.handleWipeResponse(commandData) + break + case COMMAND_XPUB: + this.handleXpubResponse(commandData) + break + default: + console.log('### console', value) + } + }, + updateSerialPortConsole: function (value) { + this.receivedData += value + '\n' + const textArea = document.getElementById('serial-port-console') + if (textArea) textArea.scrollTop = textArea.scrollHeight + }, + hwwShowPasswordDialog: async function () { + try { + this.hww.showPasswordDialog = true + await this.writer.write(COMMAND_PASSWORD + '\n') + } catch (error) { + this.$q.notify({ + type: 'warning', + message: 'Failed to connect to Hardware Wallet!', + caption: `${error}`, + timeout: 10000 + }) + } + }, + hwwShowWipeDialog: async function () { + try { + this.hww.showWipeDialog = true + await this.writer.write(COMMAND_WIPE + '\n') + } catch (error) { + this.$q.notify({ + type: 'warning', + message: 'Failed to connect to Hardware Wallet!', + caption: `${error}`, + timeout: 10000 + }) + } + }, + hwwShowRestoreDialog: async function () { + try { + this.hww.showRestoreDialog = true + await this.writer.write(COMMAND_WIPE + '\n') + } catch (error) { + this.$q.notify({ + type: 'warning', + message: 'Failed to connect to Hardware Wallet!', + caption: `${error}`, + timeout: 10000 + }) + } + }, + hwwConfirmNext: async function () { + this.hww.confirm.outputIndex += 1 + if (this.hww.confirm.outputIndex >= this.tx.outputs.length) { + this.hww.confirm.showFee = true + } + await this.writer.write(COMMAND_CONFIRM_NEXT + '\n') + }, + cancelOperation: async function () { + try { + await this.writer.write(COMMAND_CANCEL + '\n') + } catch (error) { + this.$q.notify({ + type: 'warning', + message: 'Failed to send cancel!', + caption: `${error}`, + timeout: 10000 + }) + } + }, + hwwConfigAndConnect: async function () { + this.hww.showConfigDialog = false + const config = this.$refs.serialPortConfig.getConfig() + await this.openSerialPort(config) + return true + }, + hwwLogin: async function () { + try { + await this.writer.write( + COMMAND_PASSWORD + ' ' + this.hww.password + '\n' + ) + } catch (error) { + this.$q.notify({ + type: 'warning', + message: 'Failed to send password to Hardware Wallet!', + caption: `${error}`, + timeout: 10000 + }) + } finally { + this.hww.showPasswordDialog = false + this.hww.password = null + this.hww.showPassword = false + } + }, + handleLoginResponse: function (res = '') { + this.hww.authenticated = res.trim() === '1' + if (this.loginResolve) { + this.loginResolve(this.hww.authenticated) + } + + if (this.hww.authenticated) { + this.$q.notify({ + type: 'positive', + message: 'Login successfull!', + timeout: 10000 + }) + } else { + this.$q.notify({ + type: 'warning', + message: 'Wrong password, try again!', + timeout: 10000 + }) + } + }, + hwwLogout: async function () { + try { + await this.writer.write(COMMAND_PASSWORD_CLEAR + '\n') + } catch (error) { + this.$q.notify({ + type: 'warning', + message: 'Failed to logout from Hardware Wallet!', + caption: `${error}`, + timeout: 10000 + }) + } + }, + handleLogoutResponse: function (res = '') { + this.hww.authenticated = !(res.trim() === '1') + if (this.hww.authenticated) { + this.$q.notify({ + type: 'warning', + message: 'Failed to logout from Hardware Wallet', + timeout: 10000 + }) + } + }, + hwwSendPsbt: async function (psbtBase64, tx) { + try { + this.tx = tx + this.hww.sendingPsbt = true + await this.writer.write( + COMMAND_SEND_PSBT + ' ' + this.network + ' ' + psbtBase64 + '\n' + ) + this.$q.notify({ + type: 'positive', + message: 'Data sent to serial port device!', + timeout: 5000 + }) + } catch (error) { + this.hww.sendingPsbt = false + this.$q.notify({ + type: 'warning', + message: 'Failed to send data to serial port!', + caption: `${error}`, + timeout: 10000 + }) + } + }, + handleSendPsbtResponse: function (res = '') { + try { + const psbtOK = res.trim() === '1' + if (!psbtOK) { + this.$q.notify({ + type: 'warning', + message: 'Failed to send PSBT!', + caption: `${res}`, + timeout: 10000 + }) + return + } + this.hww.confirm.outputIndex = 0 + this.hww.showConfirmationDialog = true + this.hww.confirm = { + outputIndex: 0, + showFee: false + } + this.hww.sendingPsbt = false + } catch (error) { + this.$q.notify({ + type: 'warning', + message: 'Failed to send PSBT!', + caption: `${error}`, + timeout: 10000 + }) + } finally { + this.psbtSentResolve() + } + }, + hwwSignPsbt: async function () { + try { + this.hww.showConfirmationDialog = false + this.hww.signingPsbt = true + await this.writer.write(COMMAND_SIGN_PSBT + '\n') + } catch (error) { + this.$q.notify({ + type: 'warning', + message: 'Failed to sign PSBT!', + caption: `${error}`, + timeout: 10000 + }) + } + }, + handleSignResponse: function (res = '') { + this.hww.signingPsbt = false + const [count, psbt] = res.trim().split(' ') + if (!psbt || !count || count.trim() === '0') { + this.$q.notify({ + type: 'warning', + message: 'No input signed!', + caption: 'Are you using the right seed?', + timeout: 10000 + }) + return + } + this.updateSignedPsbt(psbt) + this.$q.notify({ + type: 'positive', + message: 'Transaction Signed', + message: `Inputs signed: ${count}`, + timeout: 10000 + }) + }, + hwwHelp: async function () { + try { + await this.writer.write(COMMAND_HELP + '\n') + this.$q.notify({ + type: 'positive', + message: 'Check display or console for details!', + timeout: 5000 + }) + } catch (error) { + this.$q.notify({ + type: 'warning', + message: 'Failed to ask for help!', + caption: `${error}`, + timeout: 10000 + }) + } + }, + hwwWipe: async function () { + try { + this.hww.showWipeDialog = false + await this.writer.write(COMMAND_WIPE + ' ' + this.hww.password + '\n') + } catch (error) { + this.$q.notify({ + type: 'warning', + message: 'Failed to ask for help!', + caption: `${error}`, + timeout: 10000 + }) + } finally { + this.hww.password = null + this.hww.confirmedPassword = null + this.hww.showPassword = false + } + }, + handleWipeResponse: function (res = '') { + const wiped = res.trim() === '1' + if (wiped) { + this.$q.notify({ + type: 'positive', + message: 'Wallet wiped!', + timeout: 10000 + }) + } else { + this.$q.notify({ + type: 'warning', + message: 'Failed to wipe wallet!', + caption: `${error}`, + timeout: 10000 + }) + } + }, + hwwXpub: async function (path) { + try { + console.log( + '### hwwXpub', + COMMAND_XPUB + ' ' + this.network + ' ' + path + ) + await this.writer.write( + COMMAND_XPUB + ' ' + this.network + ' ' + path + '\n' + ) + } catch (error) { + this.$q.notify({ + type: 'warning', + message: 'Failed to fetch XPub!', + caption: `${error}`, + timeout: 10000 + }) + } + }, + handleXpubResponse: function (res = '') { + const args = res.trim().split(' ') + if (args.length < 3 || args[0].trim() !== '1') { + this.$q.notify({ + type: 'warning', + message: 'Failed to fetch XPub!', + caption: `${res}`, + timeout: 10000 + }) + this.xpubResolve({}) + return + } + const xpub = args[1].trim() + const fingerprint = args[2].trim() + this.xpubResolve({xpub, fingerprint}) + }, + hwwShowSeed: async function () { + try { + this.hww.showSeedDialog = true + this.hww.seedWordPosition = 1 + await this.writer.write( + COMMAND_SEED + ' ' + this.hww.seedWordPosition + '\n' + ) + } catch (error) { + this.$q.notify({ + type: 'warning', + message: 'Failed to show seed!', + caption: `${error}`, + timeout: 10000 + }) + } + }, + showNextSeedWord: async function () { + this.hww.seedWordPosition++ + await this.writer.write( + COMMAND_SEED + ' ' + this.hww.seedWordPosition + '\n' + ) + }, + showPrevSeedWord: async function () { + this.hww.seedWordPosition = Math.max(1, this.hww.seedWordPosition - 1) + console.log('### this.hww.seedWordPosition', this.hww.seedWordPosition) + await this.writer.write( + COMMAND_SEED + ' ' + this.hww.seedWordPosition + '\n' + ) + }, + handleShowSeedResponse: function (res = '') { + const args = res.trim().split(' ') + if (args.length < 2 || args[0].trim() !== '1') { + this.$q.notify({ + type: 'warning', + message: 'Failed to show seed!', + caption: `${res}`, + timeout: 10000 + }) + return + } + }, + hwwRestore: async function () { + try { + await this.writer.write( + COMMAND_RESTORE + ' ' + this.hww.mnemonic + '\n' + ) + await this.writer.write( + COMMAND_PASSWORD + ' ' + this.hww.password + '\n' + ) + } catch (error) { + this.$q.notify({ + type: 'warning', + message: 'Failed to restore from seed!', + caption: `${error}`, + timeout: 10000 + }) + } finally { + this.hww.showRestoreDialog = false + this.hww.mnemonic = null + this.hww.showMnemonic = false + this.hww.password = null + this.hww.confirmedPassword = null + this.hww.showPassword = false + } + }, + + updateSignedPsbt: async function (value) { + this.$emit('signed:psbt', value) + } + }, + created: async function () {} + }) +} diff --git a/lnbits/extensions/watchonly/static/components/utxo-list/utxo-list.html b/lnbits/extensions/watchonly/static/components/utxo-list/utxo-list.html new file mode 100644 index 000000000..a55b99e96 --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/utxo-list/utxo-list.html @@ -0,0 +1,135 @@ + + +
+
+ +
+
+ +
+
+
+
+ + + +
+
+ + + + +
diff --git a/lnbits/extensions/watchonly/static/components/utxo-list/utxo-list.js b/lnbits/extensions/watchonly/static/components/utxo-list/utxo-list.js new file mode 100644 index 000000000..6741ed94e --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/utxo-list/utxo-list.js @@ -0,0 +1,148 @@ +async function utxoList(path) { + const template = await loadTemplateAsync(path) + Vue.component('utxo-list', { + name: 'utxo-list', + template, + + props: [ + 'utxos', + 'accounts', + 'selectable', + 'payed-amount', + 'sats-denominated', + 'mempool-endpoint', + 'filter' + ], + + data: function () { + return { + utxosTable: { + columns: [ + { + name: 'expand', + align: 'left', + label: '' + }, + { + name: 'selected', + align: 'left', + label: '', + selectable: true + }, + { + name: 'status', + align: 'center', + label: 'Status', + sortable: true + }, + { + name: 'address', + align: 'left', + label: 'Address', + field: 'address', + sortable: true + }, + { + name: 'amount', + align: 'left', + label: 'Amount', + field: 'amount', + sortable: true + }, + { + name: 'date', + align: 'left', + label: 'Date', + field: 'date', + sortable: true + }, + { + name: 'wallet', + align: 'left', + label: 'Account', + field: 'wallet', + sortable: true + } + ], + pagination: { + rowsPerPage: 10 + } + }, + utxoSelectionModes: [ + 'Manual', + 'Random', + 'Select All', + 'Smaller Inputs First', + 'Larger Inputs First' + ], + utxoSelectionMode: 'Random', + utxoSelectAmount: 0 + } + }, + + computed: { + columns: function () { + return this.utxosTable.columns.filter(c => + c.selectable ? this.selectable : true + ) + } + }, + + methods: { + satBtc(val, showUnit = true) { + return satOrBtc(val, showUnit, this.satsDenominated) + }, + getWalletName: function (walletId) { + const wallet = (this.accounts || []).find(wl => wl.id === walletId) + return wallet ? wallet.title : 'unknown' + }, + getTotalSelectedUtxoAmount: function () { + const total = (this.utxos || []) + .filter(u => u.selected) + .reduce((t, a) => t + (a.amount || 0), 0) + return total + }, + refreshUtxoSelection: function (totalPayedAmount) { + this.utxoSelectAmount = totalPayedAmount + this.applyUtxoSelectionMode() + }, + updateUtxoSelection: function () { + this.utxoSelectAmount = this.payedAmount + this.applyUtxoSelectionMode() + }, + applyUtxoSelectionMode: function () { + const mode = this.utxoSelectionMode + const isSelectAll = mode === 'Select All' + if (isSelectAll) { + this.utxos.forEach(u => (u.selected = true)) + return + } + + const isManual = mode === 'Manual' + if (isManual || !this.utxoSelectAmount) return + + this.utxos.forEach(u => (u.selected = false)) + + const isSmallerFirst = mode === 'Smaller Inputs First' + const isLargerFirst = mode === 'Larger Inputs First' + let selectedUtxos = this.utxos.slice() + if (isSmallerFirst || isLargerFirst) { + const sortFn = isSmallerFirst + ? (a, b) => a.amount - b.amount + : (a, b) => b.amount - a.amount + selectedUtxos.sort(sortFn) + } else { + // default to random order + selectedUtxos = _.shuffle(selectedUtxos) + } + selectedUtxos.reduce((total, utxo) => { + utxo.selected = total < this.utxoSelectAmount + total += utxo.amount + return total + }, 0) + } + }, + + created: async function () {} + }) +} diff --git a/lnbits/extensions/watchonly/static/components/wallet-config/wallet-config.html b/lnbits/extensions/watchonly/static/components/wallet-config/wallet-config.html new file mode 100644 index 000000000..61a353625 --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/wallet-config/wallet-config.html @@ -0,0 +1,80 @@ +
+ +
+
+ + +
+
+
+
{{satBtc(total)}}
+
+
+
+ +
+
+
+ + + + + + + + + + + + + + + +
+ Update + Cancel +
+
+
+
+
diff --git a/lnbits/extensions/watchonly/static/components/wallet-config/wallet-config.js b/lnbits/extensions/watchonly/static/components/wallet-config/wallet-config.js new file mode 100644 index 000000000..447dc65c7 --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/wallet-config/wallet-config.js @@ -0,0 +1,67 @@ +async function walletConfig(path) { + const t = await loadTemplateAsync(path) + Vue.component('wallet-config', { + name: 'wallet-config', + template: t, + + props: ['total', 'config-data', 'adminkey'], + data: function () { + return { + networOptions: ['Mainnet', 'Testnet'], + internalConfig: {}, + show: false + } + }, + + computed: { + config: { + get() { + return this.internalConfig + }, + set(value) { + value.isLoaded = true + this.internalConfig = JSON.parse(JSON.stringify(value)) + this.$emit( + 'update:config-data', + JSON.parse(JSON.stringify(this.internalConfig)) + ) + } + } + }, + + methods: { + satBtc(val, showUnit = true) { + return satOrBtc(val, showUnit, this.config.sats_denominated) + }, + updateConfig: async function () { + try { + const {data} = await LNbits.api.request( + 'PUT', + '/watchonly/api/v1/config', + this.adminkey, + this.config + ) + this.show = false + this.config = data + } catch (error) { + LNbits.utils.notifyApiError(error) + } + }, + getConfig: async function () { + try { + const {data} = await LNbits.api.request( + 'GET', + '/watchonly/api/v1/config', + this.adminkey + ) + this.config = data + } catch (error) { + LNbits.utils.notifyApiError(error) + } + } + }, + created: async function () { + await this.getConfig() + } + }) +} diff --git a/lnbits/extensions/watchonly/static/components/wallet-list/wallet-list.html b/lnbits/extensions/watchonly/static/components/wallet-list/wallet-list.html new file mode 100644 index 000000000..ccd6f678f --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/wallet-list/wallet-list.html @@ -0,0 +1,233 @@ +
+ + +
+
+ + + + + New Account + Enter account Xpub or Descriptor + + + + + From Hardware Device + + Get Xpub from a Hardware Device + + + + +
+ +
+
+ + + +
+
+ + + + +
+
+ + + + + + + + + + +
+ + + + Cancel +
+
+
+
+
diff --git a/lnbits/extensions/watchonly/static/components/wallet-list/wallet-list.js b/lnbits/extensions/watchonly/static/components/wallet-list/wallet-list.js new file mode 100644 index 000000000..adc82b3e8 --- /dev/null +++ b/lnbits/extensions/watchonly/static/components/wallet-list/wallet-list.js @@ -0,0 +1,290 @@ +async function walletList(path) { + const template = await loadTemplateAsync(path) + Vue.component('wallet-list', { + name: 'wallet-list', + template, + + props: [ + 'adminkey', + 'inkey', + 'sats-denominated', + 'addresses', + 'network', + 'serial-signer-ref' + ], + data: function () { + return { + walletAccounts: [], + address: {}, + formDialog: { + show: false, + + addressType: { + label: 'Segwit (P2WPKH)', + id: 'wpkh', + pathMainnet: "m/84'/0'/0'", + pathTestnet: "m/84'/1'/0'" + }, + useSerialPort: false, + data: { + title: '', + masterpub: '' + } + }, + accountPath: '', + filter: '', + showCreating: false, + addressTypeOptions: [ + { + label: 'Legacy (P2PKH)', + id: 'pkh', + pathMainnet: "m/44'/0'/0'", + pathTestnet: "m/44'/1'/0'" + }, + { + label: 'Segwit (P2WPKH)', + id: 'wpkh', + pathMainnet: "m/84'/0'/0'", + pathTestnet: "m/84'/1'/0'" + }, + { + label: 'Wrapped Segwit (P2SH-P2WPKH)', + id: 'sh', + pathMainnet: "m/49'/0'/0'", + pathTestnet: "m/49'/1'/0'" + }, + { + label: 'Taproot (P2TR)', + id: 'tr', + pathMainnet: "m/86'/0'/0'", + pathTestnet: "m/86'/1'/0'" + } + ], + + walletsTable: { + columns: [ + { + name: 'new', + align: 'left', + label: '' + }, + { + name: 'title', + align: 'left', + label: 'Title', + field: 'title' + }, + { + name: 'amount', + align: 'left', + label: 'Amount' + }, + { + name: 'type', + align: 'left', + label: 'Type', + field: 'type' + }, + {name: 'id', align: 'left', label: 'ID', field: 'id'} + ], + pagination: { + rowsPerPage: 10 + }, + filter: '' + } + } + }, + watch: { + immediate: true, + async network(newNet, oldNet) { + if (newNet !== oldNet) { + await this.refreshWalletAccounts() + } + } + }, + + methods: { + satBtc(val, showUnit = true) { + return satOrBtc(val, showUnit, this.satsDenominated) + }, + + addWalletAccount: async function () { + this.showCreating = true + const data = _.omit(this.formDialog.data, 'wallet') + data.network = this.network + await this.createWalletAccount(data) + this.showCreating = false + }, + createWalletAccount: async function (data) { + try { + if (this.formDialog.useSerialPort) { + const {xpub, fingerprint} = await this.fetchXpubFromHww() + if (!xpub) return + const path = this.accountPath.substring(2) + const outputType = this.formDialog.addressType.id + if (outputType === 'sh') { + data.masterpub = `${outputType}(wpkh([${fingerprint}/${path}]${xpub}/{0,1}/*))` + } else { + data.masterpub = `${outputType}([${fingerprint}/${path}]${xpub}/{0,1}/*)` + } + } + const response = await LNbits.api.request( + 'POST', + '/watchonly/api/v1/wallet', + this.adminkey, + data + ) + this.walletAccounts.push(mapWalletAccount(response.data)) + this.formDialog.show = false + + await this.refreshWalletAccounts() + } catch (error) { + LNbits.utils.notifyApiError(error) + } + }, + fetchXpubFromHww: async function () { + const error = findAccountPathIssues(this.accountPath) + if (error) { + this.$q.notify({ + type: 'warning', + message: 'Invalid derivation path.', + caption: error, + timeout: 10000 + }) + return + } + await this.serialSignerRef.hwwXpub(this.accountPath) + return await this.serialSignerRef.isFetchingXpub() + }, + deleteWalletAccount: function (walletAccountId) { + LNbits.utils + .confirmDialog( + 'Are you sure you want to delete this watch only wallet?' + ) + .onOk(async () => { + try { + await LNbits.api.request( + 'DELETE', + '/watchonly/api/v1/wallet/' + walletAccountId, + this.adminkey + ) + this.walletAccounts = _.reject(this.walletAccounts, function ( + obj + ) { + return obj.id === walletAccountId + }) + await this.refreshWalletAccounts() + } catch (error) { + this.$q.notify({ + type: 'warning', + message: + 'Error while deleting wallet account. Please try again.', + timeout: 10000 + }) + } + }) + }, + + getWatchOnlyWallets: async function () { + try { + const {data} = await LNbits.api.request( + 'GET', + `/watchonly/api/v1/wallet?network=${this.network}`, + this.inkey + ) + return data + } catch (error) { + this.$q.notify({ + type: 'warning', + message: 'Failed to fetch wallets.', + timeout: 10000 + }) + LNbits.utils.notifyApiError(error) + } + return [] + }, + refreshWalletAccounts: async function () { + this.walletAccounts = [] + const wallets = await this.getWatchOnlyWallets() + this.walletAccounts = wallets.map(w => mapWalletAccount(w)) + this.$emit('accounts-update', this.walletAccounts) + }, + getAmmountForWallet: function (walletId) { + const amount = this.addresses + .filter(a => a.wallet === walletId) + .reduce((t, a) => t + a.amount || 0, 0) + return this.satBtc(amount) + }, + closeFormDialog: function () { + this.formDialog.data = { + is_unique: false + } + }, + getAccountDescription: function (accountType) { + return getAccountDescription(accountType) + }, + openGetFreshAddressDialog: async function (walletId) { + const {data} = await LNbits.api.request( + 'GET', + `/watchonly/api/v1/address/${walletId}`, + this.inkey + ) + const addressData = mapAddressesData(data) + + addressData.note = `Shared on ${currentDateTime()}` + const lastAcctiveAddress = + this.addresses + .filter( + a => + a.wallet === addressData.wallet && !a.isChange && a.hasActivity + ) + .pop() || {} + addressData.gapLimitExceeded = + !addressData.isChange && + addressData.addressIndex > + lastAcctiveAddress.addressIndex + DEFAULT_RECEIVE_GAP_LIMIT + + const wallet = this.walletAccounts.find(w => w.id === walletId) || {} + wallet.address_no = addressData.addressIndex + this.$emit('new-receive-address', addressData) + }, + showAddAccountDialog: function () { + this.formDialog.show = true + this.formDialog.useSerialPort = false + }, + getXpubFromDevice: async function () { + try { + if (!this.serialSignerRef.isConnected()) { + const portOpen = await this.serialSignerRef.openSerialPort() + if (!portOpen) return + } + if (!this.serialSignerRef.isAuthenticated()) { + await this.serialSignerRef.hwwShowPasswordDialog() + const authenticated = await this.serialSignerRef.isAuthenticating() + if (!authenticated) return + } + this.formDialog.show = true + this.formDialog.useSerialPort = true + } catch (error) { + this.$q.notify({ + type: 'warning', + message: 'Cannot fetch Xpub!', + caption: `${error}`, + timeout: 10000 + }) + } + }, + handleAddressTypeChanged: function (value = {}) { + const addressType = + this.addressTypeOptions.find(t => t.id === value.id) || {} + this.accountPath = addressType[`path${this.network}`] + } + }, + created: async function () { + if (this.inkey) { + await this.refreshWalletAccounts() + this.handleAddressTypeChanged(this.addressTypeOptions[1]) + } + } + }) +} diff --git a/lnbits/extensions/watchonly/static/js/index.js b/lnbits/extensions/watchonly/static/js/index.js index 5eee21761..68204aca4 100644 --- a/lnbits/extensions/watchonly/static/js/index.js +++ b/lnbits/extensions/watchonly/static/js/index.js @@ -1,735 +1,399 @@ -Vue.component(VueQrcode.name, VueQrcode) +const watchOnly = async () => { + Vue.component(VueQrcode.name, VueQrcode) -Vue.filter('reverse', function (value) { - // slice to make a copy of array, then reverse the copy - return value.slice().reverse() -}) + await walletConfig('static/components/wallet-config/wallet-config.html') + await walletList('static/components/wallet-list/wallet-list.html') + await addressList('static/components/address-list/address-list.html') + await history('static/components/history/history.html') + await utxoList('static/components/utxo-list/utxo-list.html') + await feeRate('static/components/fee-rate/fee-rate.html') + await sendTo('static/components/send-to/send-to.html') + await payment('static/components/payment/payment.html') + await serialSigner('static/components/serial-signer/serial-signer.html') + await serialPortConfig( + 'static/components/serial-port-config/serial-port-config.html' + ) -new Vue({ - el: '#vue', - mixins: [windowMixin], - data: function () { - return { - DUST_LIMIT: 546, - filter: '', + Vue.filter('reverse', function (value) { + // slice to make a copy of array, then reverse the copy + return value.slice().reverse() + }) - scan: { - scanning: false, - scanCount: 0, - scanIndex: 0 - }, - - currentAddress: null, - - tab: 'addresses', - - config: { - data: { - mempool_endpoint: 'https://mempool.space', - receive_gap_limit: 20, - change_gap_limit: 5 + new Vue({ + el: '#vue', + mixins: [windowMixin], + data: function () { + return { + scan: { + scanning: false, + scanCount: 0, + scanIndex: 0 }, - DEFAULT_RECEIVE_GAP_LIMIT: 20, - show: false - }, - formDialog: { - show: false, - data: {} - }, + currentAddress: null, - qrCodeDialog: { - show: false, - data: null - }, - ...tables, - ...tableData - } - }, + tab: 'addresses', - methods: { - //################### CONFIG ################### - getConfig: async function () { - try { - const {data} = await LNbits.api.request( - 'GET', - '/watchonly/api/v1/config', - this.g.user.wallets[0].adminkey - ) - this.config.data = data - } catch (error) { - LNbits.utils.notifyApiError(error) + config: {sats_denominated: true}, + + qrCodeDialog: { + show: false, + data: null + }, + ...tables, + ...tableData, + + walletAccounts: [], + addresses: [], + history: [], + historyFilter: '', + + showAddress: false, + addressNote: '', + showPayment: false, + fetchedUtxos: false, + utxosFilter: '', + network: null } }, - updateConfig: async function () { - const wallet = this.g.user.wallets[0] - try { - await LNbits.api.request( - 'PUT', - '/watchonly/api/v1/config', - wallet.adminkey, - this.config.data - ) - this.config.show = false - } catch (error) { - LNbits.utils.notifyApiError(error) - } - }, - - //################### WALLETS ################### - getWalletName: function (walletId) { - const wallet = this.walletAccounts.find(wl => wl.id === walletId) - return wallet ? wallet.title : 'unknown' - }, - addWalletAccount: async function () { - const wallet = this.g.user.wallets[0] - const data = _.omit(this.formDialog.data, 'wallet') - await this.createWalletAccount(wallet, data) - }, - createWalletAccount: async function (wallet, data) { - try { - const response = await LNbits.api.request( - 'POST', - '/watchonly/api/v1/wallet', - wallet.adminkey, - data - ) - this.walletAccounts.push(mapWalletAccount(response.data)) - this.formDialog.show = false - - await this.refreshWalletAccounts() - await this.refreshAddresses() - - if (!this.payment.changeWallett) { - this.payment.changeWallet = this.walletAccounts[0] - this.selectChangeAddress(this.payment.changeWallet) + computed: { + mempoolHostname: function () { + if (!this.config.isLoaded) return + let hostname = new URL(this.config.mempool_endpoint).hostname + if (this.config.network === 'Testnet') { + hostname += '/testnet' } - } catch (error) { - LNbits.utils.notifyApiError(error) + return hostname } }, - deleteWalletAccount: function (walletAccountId) { - LNbits.utils - .confirmDialog( - 'Are you sure you want to delete this watch only wallet?' - ) - .onOk(async () => { - try { - await LNbits.api.request( - 'DELETE', - '/watchonly/api/v1/wallet/' + walletAccountId, - this.g.user.wallets[0].adminkey + + methods: { + updateAmountForAddress: async function (addressData, amount = 0) { + try { + const wallet = this.g.user.wallets[0] + addressData.amount = amount + if (!addressData.isChange) { + const addressWallet = this.walletAccounts.find( + w => w.id === addressData.wallet ) - this.walletAccounts = _.reject(this.walletAccounts, function (obj) { - return obj.id === walletAccountId - }) - await this.refreshWalletAccounts() - await this.refreshAddresses() if ( - this.payment.changeWallet && - this.payment.changeWallet.id === walletAccountId + addressWallet && + addressWallet.address_no < addressData.addressIndex ) { - this.payment.changeWallet = this.walletAccounts[0] - this.selectChangeAddress(this.payment.changeWallet) + addressWallet.address_no = addressData.addressIndex } - await this.scanAddressWithAmount() - } catch (error) { + } + + // todo: account deleted + await LNbits.api.request( + 'PUT', + `/watchonly/api/v1/address/${addressData.id}`, + wallet.adminkey, + {amount} + ) + } catch (err) { + addressData.error = 'Failed to refresh amount for address' + this.$q.notify({ + type: 'warning', + message: `Failed to refresh amount for address ${addressData.address}`, + timeout: 10000 + }) + LNbits.utils.notifyApiError(err) + } + }, + updateNoteForAddress: async function ({addressId, note}) { + try { + const wallet = this.g.user.wallets[0] + await LNbits.api.request( + 'PUT', + `/watchonly/api/v1/address/${addressId}`, + wallet.adminkey, + {note} + ) + const updatedAddress = + this.addresses.find(a => a.id === addressId) || {} + updatedAddress.note = note + } catch (err) { + LNbits.utils.notifyApiError(err) + } + }, + + //################### ADDRESS HISTORY ################### + addressHistoryFromTxs: function (addressData, txs) { + const addressHistory = [] + txs.forEach(tx => { + const sent = tx.vin + .filter( + vin => vin.prevout.scriptpubkey_address === addressData.address + ) + .map(vin => mapInputToSentHistory(tx, addressData, vin)) + + const received = tx.vout + .filter(vout => vout.scriptpubkey_address === addressData.address) + .map(vout => mapOutputToReceiveHistory(tx, addressData, vout)) + addressHistory.push(...sent, ...received) + }) + return addressHistory + }, + + markSameTxAddressHistory: function () { + this.history + .filter(s => s.sent) + .forEach((el, i, arr) => { + if (el.isSubItem) return + + const sameTxItems = arr.slice(i + 1).filter(e => e.txId === el.txId) + if (!sameTxItems.length) return + sameTxItems.forEach(e => { + e.isSubItem = true + }) + + el.totalAmount = + el.amount + sameTxItems.reduce((t, e) => (t += e.amount || 0), 0) + el.sameTxItems = sameTxItems + }) + }, + + //################### PAYMENT ################### + + initPaymentData: async function () { + if (!this.payment.show) return + await this.refreshAddresses() + }, + + goToPaymentView: async function () { + this.showPayment = true + await this.initPaymentData() + }, + + //################### PSBT ################### + + updateSignedPsbt: async function (psbtBase64) { + this.$refs.paymentRef.updateSignedPsbt(psbtBase64) + }, + + //################### SERIAL PORT ################### + + //################### HARDWARE WALLET ################### + + //################### UTXOs ################### + scanAllAddresses: async function () { + await this.refreshAddresses() + this.history = [] + let addresses = this.addresses + this.utxos.data = [] + this.utxos.total = 0 + // Loop while new funds are found on the gap adresses. + // Use 1000 limit as a safety check (scan 20 000 addresses max) + for (let i = 0; i < 1000 && addresses.length; i++) { + await this.updateUtxosForAddresses(addresses) + const oldAddresses = this.addresses.slice() + await this.refreshAddresses() + const newAddresses = this.addresses.slice() + // check if gap addresses have been extended + addresses = newAddresses.filter( + newAddr => !oldAddresses.find(oldAddr => oldAddr.id === newAddr.id) + ) + if (addresses.length) { this.$q.notify({ - type: 'warning', - message: 'Error while deleting wallet account. Please try again.', + type: 'positive', + message: 'Funds found! Scanning for more...', timeout: 10000 }) } - }) - }, - getAddressesForWallet: async function (walletId) { - try { - const {data} = await LNbits.api.request( - 'GET', - '/watchonly/api/v1/addresses/' + walletId, - this.g.user.wallets[0].inkey - ) - return data.map(mapAddressesData) - } catch (err) { - this.$q.notify({ - type: 'warning', - message: `Failed to fetch addresses for wallet with id ${walletId}.`, - timeout: 10000 - }) - LNbits.utils.notifyApiError(err) - } - return [] - }, - getWatchOnlyWallets: async function () { - try { - const {data} = await LNbits.api.request( - 'GET', - '/watchonly/api/v1/wallet', - this.g.user.wallets[0].inkey - ) - return data - } catch (error) { - this.$q.notify({ - type: 'warning', - message: 'Failed to fetch wallets.', - timeout: 10000 - }) - LNbits.utils.notifyApiError(error) - } - return [] - }, - refreshWalletAccounts: async function () { - const wallets = await this.getWatchOnlyWallets() - this.walletAccounts = wallets.map(w => mapWalletAccount(w)) - }, - getAmmountForWallet: function (walletId) { - const amount = this.addresses.data - .filter(a => a.wallet === walletId) - .reduce((t, a) => t + a.amount || 0, 0) - return this.satBtc(amount) - }, - - //################### ADDRESSES ################### - - refreshAddresses: async function () { - const wallets = await this.getWatchOnlyWallets() - this.addresses.data = [] - for (const {id, type} of wallets) { - const newAddresses = await this.getAddressesForWallet(id) - const uniqueAddresses = newAddresses.filter( - newAddr => - !this.addresses.data.find(a => a.address === newAddr.address) - ) - - const lastAcctiveAddress = - uniqueAddresses.filter(a => !a.isChange && a.hasActivity).pop() || {} - - uniqueAddresses.forEach(a => { - a.expanded = false - a.accountType = type - a.gapLimitExceeded = - !a.isChange && - a.addressIndex > - lastAcctiveAddress.addressIndex + - this.config.DEFAULT_RECEIVE_GAP_LIMIT - }) - this.addresses.data.push(...uniqueAddresses) - } - }, - updateAmountForAddress: async function (addressData, amount = 0) { - try { - const wallet = this.g.user.wallets[0] - addressData.amount = amount - if (!addressData.isChange) { - const addressWallet = this.walletAccounts.find( - w => w.id === addressData.wallet - ) - if ( - addressWallet && - addressWallet.address_no < addressData.addressIndex - ) { - addressWallet.address_no = addressData.addressIndex - } } - - await LNbits.api.request( - 'PUT', - `/watchonly/api/v1/address/${addressData.id}`, - wallet.adminkey, - {amount} - ) - } catch (err) { - addressData.error = 'Failed to refresh amount for address' - this.$q.notify({ - type: 'warning', - message: `Failed to refresh amount for address ${addressData.address}`, - timeout: 10000 - }) - LNbits.utils.notifyApiError(err) - } - }, - updateNoteForAddress: async function (addressData, note) { - try { - const wallet = this.g.user.wallets[0] - await LNbits.api.request( - 'PUT', - `/watchonly/api/v1/address/${addressData.id}`, - wallet.adminkey, - {note: addressData.note} - ) - const updatedAddress = - this.addresses.data.find(a => a.id === addressData.id) || {} - updatedAddress.note = note - } catch (err) { - LNbits.utils.notifyApiError(err) - } - }, - getFilteredAddresses: function () { - const selectedWalletId = this.addresses.selectedWallet?.id - const filter = this.addresses.filterValues || [] - const includeChangeAddrs = filter.includes('Show Change Addresses') - const includeGapAddrs = filter.includes('Show Gap Addresses') - const excludeNoAmount = filter.includes('Only With Amount') - - const walletsLimit = this.walletAccounts.reduce((r, w) => { - r[`_${w.id}`] = w.address_no - return r - }, {}) - - const addresses = this.addresses.data.filter( - a => - (includeChangeAddrs || !a.isChange) && - (includeGapAddrs || - a.isChange || - a.addressIndex <= walletsLimit[`_${a.wallet}`]) && - !(excludeNoAmount && a.amount === 0) && - (!selectedWalletId || a.wallet === selectedWalletId) - ) - return addresses - }, - openGetFreshAddressDialog: async function (walletId) { - const {data} = await LNbits.api.request( - 'GET', - `/watchonly/api/v1/address/${walletId}`, - this.g.user.wallets[0].inkey - ) - const addressData = mapAddressesData(data) - - addressData.note = `Shared on ${currentDateTime()}` - const lastAcctiveAddress = - this.addresses.data - .filter( - a => a.wallet === addressData.wallet && !a.isChange && a.hasActivity - ) - .pop() || {} - addressData.gapLimitExceeded = - !addressData.isChange && - addressData.addressIndex > - lastAcctiveAddress.addressIndex + - this.config.DEFAULT_RECEIVE_GAP_LIMIT - - this.openQrCodeDialog(addressData) - const wallet = this.walletAccounts.find(w => w.id === walletId) || {} - wallet.address_no = addressData.addressIndex - await this.refreshAddresses() - }, - - //################### ADDRESS HISTORY ################### - addressHistoryFromTxs: function (addressData, txs) { - const addressHistory = [] - txs.forEach(tx => { - const sent = tx.vin - .filter( - vin => vin.prevout.scriptpubkey_address === addressData.address - ) - .map(vin => mapInputToSentHistory(tx, addressData, vin)) - - const received = tx.vout - .filter(vout => vout.scriptpubkey_address === addressData.address) - .map(vout => mapOutputToReceiveHistory(tx, addressData, vout)) - addressHistory.push(...sent, ...received) - }) - return addressHistory - }, - getFilteredAddressesHistory: function () { - return this.addresses.history.filter( - a => (!a.isChange || a.sent) && !a.isSubItem - ) - }, - exportHistoryToCSV: function () { - const history = this.getFilteredAddressesHistory().map(a => ({ - ...a, - action: a.sent ? 'Sent' : 'Received' - })) - LNbits.utils.exportCSV( - this.historyTable.exportColums, - history, - 'address-history' - ) - }, - markSameTxAddressHistory: function () { - this.addresses.history - .filter(s => s.sent) - .forEach((el, i, arr) => { - if (el.isSubItem) return - - const sameTxItems = arr.slice(i + 1).filter(e => e.txId === el.txId) - if (!sameTxItems.length) return - sameTxItems.forEach(e => { - e.isSubItem = true - }) - - el.totalAmount = - el.amount + sameTxItems.reduce((t, e) => (t += e.amount || 0), 0) - el.sameTxItems = sameTxItems - }) - }, - showAddressHistoryDetails: function (addressHistory) { - addressHistory.expanded = true - }, - - //################### PAYMENT ################### - createTx: function (excludeChange = false) { - const tx = { - fee_rate: this.payment.feeRate, - tx_size: this.payment.txSize, - masterpubs: this.walletAccounts.map(w => ({ - public_key: w.masterpub, - fingerprint: w.fingerprint - })) - } - tx.inputs = this.utxos.data - .filter(utxo => utxo.selected) - .map(mapUtxoToPsbtInput) - .sort((a, b) => - a.tx_id < b.tx_id ? -1 : a.tx_id > b.tx_id ? 1 : a.vout - b.vout - ) - - tx.outputs = this.payment.data.map(out => ({ - address: out.address, - amount: out.amount - })) - - if (excludeChange) { - this.payment.changeAmount = 0 - } else { - const change = this.createChangeOutput() - this.payment.changeAmount = change.amount - if (change.amount >= this.DUST_LIMIT) { - tx.outputs.push(change) - } - } - // Only sort by amount on UI level (no lib for address decode) - // Should sort by scriptPubKey (as byte array) on the backend - tx.outputs.sort((a, b) => a.amount - b.amount) - - return tx - }, - createChangeOutput: function () { - const change = this.payment.changeAddress - const fee = this.payment.feeRate * this.payment.txSize - const inputAmount = this.getTotalSelectedUtxoAmount() - const payedAmount = this.getTotalPaymentAmount() - const walletAcount = - this.walletAccounts.find(w => w.id === change.wallet) || {} - - return { - address: change.address, - amount: inputAmount - payedAmount - fee, - addressIndex: change.addressIndex, - addressIndex: change.addressIndex, - masterpub_fingerprint: walletAcount.fingerprint - } - }, - computeFee: function () { - const tx = this.createTx() - this.payment.txSize = Math.round(txSize(tx)) - return this.payment.feeRate * this.payment.txSize - }, - createPsbt: async function () { - const wallet = this.g.user.wallets[0] - try { - this.computeFee() - const tx = this.createTx() - txSize(tx) - for (const input of tx.inputs) { - input.tx_hex = await this.fetchTxHex(input.tx_id) - } - - const {data} = await LNbits.api.request( - 'POST', - '/watchonly/api/v1/psbt', - wallet.adminkey, - tx - ) - - this.payment.psbtBase64 = data - } catch (err) { - LNbits.utils.notifyApiError(err) - } - }, - deletePaymentAddress: function (v) { - const index = this.payment.data.indexOf(v) - if (index !== -1) { - this.payment.data.splice(index, 1) - } - }, - initPaymentData: async function () { - if (!this.payment.show) return - await this.refreshAddresses() - - this.payment.showAdvanced = false - this.payment.changeWallet = this.walletAccounts[0] - this.selectChangeAddress(this.payment.changeWallet) - - await this.refreshRecommendedFees() - this.payment.feeRate = this.payment.recommededFees.halfHourFee - }, - getFeeRateLabel: function (feeRate) { - const fees = this.payment.recommededFees - if (feeRate >= fees.fastestFee) return `High Priority (${feeRate} sat/vB)` - if (feeRate >= fees.halfHourFee) - return `Medium Priority (${feeRate} sat/vB)` - if (feeRate >= fees.hourFee) return `Low Priority (${feeRate} sat/vB)` - return `No Priority (${feeRate} sat/vB)` - }, - addPaymentAddress: function () { - this.payment.data.push({address: '', amount: undefined}) - }, - getTotalPaymentAmount: function () { - return this.payment.data.reduce((t, a) => t + (a.amount || 0), 0) - }, - selectChangeAddress: function (wallet = {}) { - this.payment.changeAddress = - this.addresses.data.find( - a => a.wallet === wallet.id && a.isChange && !a.hasActivity - ) || {} - }, - goToPaymentView: async function () { - this.payment.show = true - this.tab = 'utxos' - await this.initPaymentData() - }, - sendMaxToAddress: function (paymentAddress = {}) { - paymentAddress.amount = 0 - const tx = this.createTx(true) - this.payment.txSize = Math.round(txSize(tx)) - const fee = this.payment.feeRate * this.payment.txSize - const inputAmount = this.getTotalSelectedUtxoAmount() - const payedAmount = this.getTotalPaymentAmount() - paymentAddress.amount = Math.max(0, inputAmount - payedAmount - fee) - }, - - //################### UTXOs ################### - scanAllAddresses: async function () { - await this.refreshAddresses() - this.addresses.history = [] - let addresses = this.addresses.data - this.utxos.data = [] - this.utxos.total = 0 - // Loop while new funds are found on the gap adresses. - // Use 1000 limit as a safety check (scan 20 000 addresses max) - for (let i = 0; i < 1000 && addresses.length; i++) { + }, + scanAddressWithAmount: async function () { + this.utxos.data = [] + this.utxos.total = 0 + this.history = [] + const addresses = this.addresses.filter(a => a.hasActivity) await this.updateUtxosForAddresses(addresses) - const oldAddresses = this.addresses.data.slice() - await this.refreshAddresses() - const newAddresses = this.addresses.data.slice() - // check if gap addresses have been extended - addresses = newAddresses.filter( - newAddr => !oldAddresses.find(oldAddr => oldAddr.id === newAddr.id) - ) - if (addresses.length) { + }, + scanAddress: async function (addressData) { + this.updateUtxosForAddresses([addressData]) + this.$q.notify({ + type: 'positive', + message: 'Address Rescanned', + timeout: 10000 + }) + }, + refreshAddresses: async function () { + if (!this.walletAccounts) return + this.addresses = [] + for (const {id, type} of this.walletAccounts) { + const newAddresses = await this.getAddressesForWallet(id) + const uniqueAddresses = newAddresses.filter( + newAddr => !this.addresses.find(a => a.address === newAddr.address) + ) + + const lastAcctiveAddress = + uniqueAddresses.filter(a => !a.isChange && a.hasActivity).pop() || + {} + + uniqueAddresses.forEach(a => { + a.expanded = false + a.accountType = type + a.gapLimitExceeded = + !a.isChange && + a.addressIndex > + lastAcctiveAddress.addressIndex + DEFAULT_RECEIVE_GAP_LIMIT + }) + this.addresses.push(...uniqueAddresses) + } + this.$emit('update:addresses', this.addresses) + }, + getAddressesForWallet: async function (walletId) { + try { + const {data} = await LNbits.api.request( + 'GET', + '/watchonly/api/v1/addresses/' + walletId, + this.g.user.wallets[0].inkey + ) + return data.map(mapAddressesData) + } catch (error) { this.$q.notify({ - type: 'positive', - message: 'Funds found! Scanning for more...', + type: 'warning', + message: `Failed to fetch addresses for wallet with id ${walletId}.`, timeout: 10000 }) + LNbits.utils.notifyApiError(error) } - } - }, - scanAddressWithAmount: async function () { - this.utxos.data = [] - this.utxos.total = 0 - this.addresses.history = [] - const addresses = this.addresses.data.filter(a => a.hasActivity) - await this.updateUtxosForAddresses(addresses) - }, - scanAddress: async function (addressData) { - this.updateUtxosForAddresses([addressData]) - this.$q.notify({ - type: 'positive', - message: 'Address Rescanned', - timeout: 10000 - }) - }, - updateUtxosForAddresses: async function (addresses = []) { - this.scan = {scanning: true, scanCount: addresses.length, scanIndex: 0} + return [] + }, + updateUtxosForAddresses: async function (addresses = []) { + this.scan = {scanning: true, scanCount: addresses.length, scanIndex: 0} - try { - for (addrData of addresses) { - const addressHistory = await this.getAddressTxsDelayed(addrData) - // remove old entries - this.addresses.history = this.addresses.history.filter( - h => h.address !== addrData.address - ) + try { + for (addrData of addresses) { + const addressHistory = await this.getAddressTxsDelayed(addrData) + // remove old entries + this.history = this.history.filter( + h => h.address !== addrData.address + ) - // add new entrie - this.addresses.history.push(...addressHistory) - this.addresses.history.sort((a, b) => - !a.height ? -1 : b.height - a.height - ) - this.markSameTxAddressHistory() + // add new entries + this.history.push(...addressHistory) + this.history.sort((a, b) => (!a.height ? -1 : b.height - a.height)) + this.markSameTxAddressHistory() - if (addressHistory.length) { - // search only if it ever had any activity - const utxos = await this.getAddressTxsUtxoDelayed(addrData.address) - this.updateUtxosForAddress(addrData, utxos) + if (addressHistory.length) { + // search only if it ever had any activity + const utxos = await this.getAddressTxsUtxoDelayed( + addrData.address + ) + this.updateUtxosForAddress(addrData, utxos) + } + + this.scan.scanIndex++ } - - this.scan.scanIndex++ + } catch (error) { + console.error(error) + this.$q.notify({ + type: 'warning', + message: 'Failed to scan addresses', + timeout: 10000 + }) + } finally { + this.scan.scanning = false } - } catch (error) { - console.error(error) - this.$q.notify({ - type: 'warning', - message: 'Failed to scan addresses', - timeout: 10000 - }) - } finally { - this.scan.scanning = false - } - }, - updateUtxosForAddress: function (addressData, utxos = []) { - const wallet = - this.walletAccounts.find(w => w.id === addressData.wallet) || {} + }, + updateUtxosForAddress: function (addressData, utxos = []) { + const wallet = + this.walletAccounts.find(w => w.id === addressData.wallet) || {} - const newUtxos = utxos.map(utxo => - mapAddressDataToUtxo(wallet, addressData, utxo) - ) - // remove old utxos - this.utxos.data = this.utxos.data.filter( - u => u.address !== addressData.address - ) - // add new utxos - this.utxos.data.push(...newUtxos) - if (utxos.length) { - this.utxos.data.sort((a, b) => b.sort - a.sort) - this.utxos.total = this.utxos.data.reduce( - (total, y) => (total += y?.amount || 0), + const newUtxos = utxos.map(utxo => + mapAddressDataToUtxo(wallet, addressData, utxo) + ) + // remove old utxos + this.utxos.data = this.utxos.data.filter( + u => u.address !== addressData.address + ) + // add new utxos + this.utxos.data.push(...newUtxos) + if (utxos.length) { + this.utxos.data.sort((a, b) => b.sort - a.sort) + this.utxos.total = this.utxos.data.reduce( + (total, y) => (total += y?.amount || 0), + 0 + ) + } + const addressTotal = utxos.reduce( + (total, y) => (total += y?.value || 0), 0 ) - } - const addressTotal = utxos.reduce( - (total, y) => (total += y?.value || 0), - 0 - ) - this.updateAmountForAddress(addressData, addressTotal) - }, - getTotalSelectedUtxoAmount: function () { - const total = this.utxos.data - .filter(u => u.selected) - .reduce((t, a) => t + (a.amount || 0), 0) - return total - }, - applyUtxoSelectionMode: function () { - const payedAmount = this.getTotalPaymentAmount() - const mode = this.payment.utxoSelectionMode - this.utxos.data.forEach(u => (u.selected = false)) - const isManual = mode === 'Manual' - if (isManual || !payedAmount) return + this.updateAmountForAddress(addressData, addressTotal) + }, - const isSelectAll = mode === 'Select All' - if (isSelectAll || payedAmount >= this.utxos.total) { - this.utxos.data.forEach(u => (u.selected = true)) - return - } - const isSmallerFirst = mode === 'Smaller Inputs First' - const isLargerFirst = mode === 'Larger Inputs First' - - let selectedUtxos = this.utxos.data.slice() - if (isSmallerFirst || isLargerFirst) { - const sortFn = isSmallerFirst - ? (a, b) => a.amount - b.amount - : (a, b) => b.amount - a.amount - selectedUtxos.sort(sortFn) - } else { - // default to random order - selectedUtxos = _.shuffle(selectedUtxos) - } - selectedUtxos.reduce((total, utxo) => { - utxo.selected = total < payedAmount - total += utxo.amount - return total - }, 0) - }, - - //################### MEMPOOL API ################### - getAddressTxsDelayed: async function (addrData) { - const { - bitcoin: {addresses: addressesAPI} - } = mempoolJS() - - const fn = async () => - addressesAPI.getAddressTxs({ - address: addrData.address + //################### MEMPOOL API ################### + getAddressTxsDelayed: async function (addrData) { + const accounts = this.walletAccounts + const { + bitcoin: {addresses: addressesAPI} + } = mempoolJS({ + hostname: this.mempoolHostname }) - const addressTxs = await retryWithDelay(fn) - return this.addressHistoryFromTxs(addrData, addressTxs) - }, + const fn = async () => { + if (!accounts.find(w => w.id === addrData.wallet)) return [] + return addressesAPI.getAddressTxs({ + address: addrData.address + }) + } + const addressTxs = await retryWithDelay(fn) + return this.addressHistoryFromTxs(addrData, addressTxs) + }, - refreshRecommendedFees: async function () { - const { - bitcoin: {fees: feesAPI} - } = mempoolJS() - - const fn = async () => feesAPI.getFeesRecommended() - this.payment.recommededFees = await retryWithDelay(fn) - }, - getAddressTxsUtxoDelayed: async function (address) { - const { - bitcoin: {addresses: addressesAPI} - } = mempoolJS() - - const fn = async () => - addressesAPI.getAddressTxsUtxo({ - address + getAddressTxsUtxoDelayed: async function (address) { + const endpoint = this.mempoolHostname + const { + bitcoin: {addresses: addressesAPI} + } = mempoolJS({ + hostname: endpoint }) - return retryWithDelay(fn) - }, - fetchTxHex: async function (txId) { - const { - bitcoin: {transactions: transactionsAPI} - } = mempoolJS() - try { - const response = await transactionsAPI.getTxHex({txid: txId}) - return response - } catch (error) { - this.$q.notify({ - type: 'warning', - message: `Failed to fetch transaction details for tx id: '${txId}'`, - timeout: 10000 - }) - LNbits.utils.notifyApiError(error) - throw error + const fn = async () => { + if (endpoint !== this.mempoolHostname) return [] + return addressesAPI.getAddressTxsUtxo({ + address + }) + } + return retryWithDelay(fn) + }, + + //################### OTHER ################### + + openQrCodeDialog: function (addressData) { + this.currentAddress = addressData + this.addressNote = addressData.note || '' + this.showAddress = true + }, + searchInTab: function ({tab, value}) { + this.tab = tab + this[`${tab}Filter`] = value + }, + + updateAccounts: async function (accounts) { + this.walletAccounts = accounts + await this.refreshAddresses() + await this.scanAddressWithAmount() + }, + showAddressDetails: function (addressData) { + this.openQrCodeDialog(addressData) + }, + initUtxos: function (addresses) { + if (!this.fetchedUtxos && addresses.length) { + this.fetchedUtxos = true + this.addresses = addresses + this.scanAddressWithAmount() + } } }, - - //################### OTHER ################### - closeFormDialog: function () { - this.formDialog.data = { - is_unique: false + created: async function () { + if (this.g.user.wallets.length) { + await this.refreshAddresses() + await this.scanAddressWithAmount() } - }, - openQrCodeDialog: function (addressData) { - this.currentAddress = addressData - this.addresses.note = addressData.note || '' - this.addresses.show = true - }, - searchInTab: function (tab, value) { - this.tab = tab - this[`${tab}Table`].filter = value - }, - - satBtc(val, showUnit = true) { - const value = this.config.data.sats_denominated - ? LNbits.utils.formatSat(val) - : val == 0 - ? 0.0 - : (val / 100000000).toFixed(8) - if (!showUnit) return value - return this.config.data.sats_denominated ? value + ' sat' : value + ' BTC' - }, - getAccountDescription: function (accountType) { - return getAccountDescription(accountType) } - }, - created: async function () { - if (this.g.user.wallets.length) { - await this.getConfig() - await this.refreshWalletAccounts() - await this.refreshAddresses() - await this.scanAddressWithAmount() - } - } -}) + }) +} +watchOnly() diff --git a/lnbits/extensions/watchonly/static/js/map.js b/lnbits/extensions/watchonly/static/js/map.js index d1bc80389..ecc0b316d 100644 --- a/lnbits/extensions/watchonly/static/js/map.js +++ b/lnbits/extensions/watchonly/static/js/map.js @@ -43,7 +43,7 @@ const mapUtxoToPsbtInput = utxo => ({ address: utxo.address, branch_index: utxo.isChange ? 1 : 0, address_index: utxo.addressIndex, - masterpub_fingerprint: utxo.masterpubFingerprint, + wallet: utxo.wallet, accountType: utxo.accountType, txHex: '' }) @@ -66,15 +66,15 @@ const mapAddressDataToUtxo = (wallet, addressData, utxo) => ({ selected: false }) -const mapWalletAccount = function (obj) { - obj._data = _.clone(obj) - obj.date = obj.time - ? Quasar.utils.date.formatDate( - new Date(obj.time * 1000), - 'YYYY-MM-DD HH:mm' - ) - : '' - obj.label = obj.title // for drop-downs - obj.expanded = false - return obj +const mapWalletAccount = function (o) { + return Object.assign({}, o, { + date: o.time + ? Quasar.utils.date.formatDate( + new Date(o.time * 1000), + 'YYYY-MM-DD HH:mm' + ) + : '', + label: o.title, + expanded: false + }) } diff --git a/lnbits/extensions/watchonly/static/js/tables.js b/lnbits/extensions/watchonly/static/js/tables.js index fdd558bde..f437bcd56 100644 --- a/lnbits/extensions/watchonly/static/js/tables.js +++ b/lnbits/extensions/watchonly/static/js/tables.js @@ -1,99 +1,4 @@ const tables = { - walletsTable: { - columns: [ - { - name: 'new', - align: 'left', - label: '' - }, - { - name: 'title', - align: 'left', - label: 'Title', - field: 'title' - }, - { - name: 'amount', - align: 'left', - label: 'Amount' - }, - { - name: 'type', - align: 'left', - label: 'Type', - field: 'type' - }, - {name: 'id', align: 'left', label: 'ID', field: 'id'} - ], - pagination: { - rowsPerPage: 10 - }, - filter: '' - }, - utxosTable: { - columns: [ - { - name: 'expand', - align: 'left', - label: '' - }, - { - name: 'selected', - align: 'left', - label: '' - }, - { - name: 'status', - align: 'center', - label: 'Status', - sortable: true - }, - { - name: 'address', - align: 'left', - label: 'Address', - field: 'address', - sortable: true - }, - { - name: 'amount', - align: 'left', - label: 'Amount', - field: 'amount', - sortable: true - }, - { - name: 'date', - align: 'left', - label: 'Date', - field: 'date', - sortable: true - }, - { - name: 'wallet', - align: 'left', - label: 'Account', - field: 'wallet', - sortable: true - } - ], - pagination: { - rowsPerPage: 10 - }, - filter: '' - }, - paymentTable: { - columns: [ - { - name: 'data', - align: 'left' - } - ], - pagination: { - rowsPerPage: 10 - }, - filter: '' - }, summaryTable: { columns: [ { @@ -117,157 +22,36 @@ const tables = { label: 'Change' } ] - }, - addressesTable: { - columns: [ - { - name: 'expand', - align: 'left', - label: '' - }, - { - name: 'address', - align: 'left', - label: 'Address', - field: 'address', - sortable: true - }, - { - name: 'amount', - align: 'left', - label: 'Amount', - field: 'amount', - sortable: true - }, - { - name: 'note', - align: 'left', - label: 'Note', - field: 'note', - sortable: true - }, - { - name: 'wallet', - align: 'left', - label: 'Account', - field: 'wallet', - sortable: true - } - ], - pagination: { - rowsPerPage: 0, - sortBy: 'amount', - descending: true - }, - filter: '' - }, - historyTable: { - columns: [ - { - name: 'expand', - align: 'left', - label: '' - }, - { - name: 'status', - align: 'left', - label: 'Status' - }, - { - name: 'amount', - align: 'left', - label: 'Amount', - field: 'amount', - sortable: true - }, - { - name: 'address', - align: 'left', - label: 'Address', - field: 'address', - sortable: true - }, - { - name: 'date', - align: 'left', - label: 'Date', - field: 'date', - sortable: true - } - ], - exportColums: [ - { - label: 'Action', - field: 'action' - }, - { - label: 'Date&Time', - field: 'date' - }, - { - label: 'Amount', - field: 'amount' - }, - { - label: 'Fee', - field: 'fee' - }, - { - label: 'Transaction Id', - field: 'txId' - } - ], - pagination: { - rowsPerPage: 0 - }, - filter: '' } } const tableData = { - walletAccounts: [], - addresses: { - show: false, - data: [], - history: [], - selectedWallet: null, - note: '', - filterOptions: [ - 'Show Change Addresses', - 'Show Gap Addresses', - 'Only With Amount' - ], - filterValues: [] - }, utxos: { data: [], total: 0 }, payment: { - data: [{address: '', amount: undefined}], - changeWallet: null, - changeAddress: {}, - changeAmount: 0, - - feeRate: 1, - recommededFees: { - fastestFee: 1, - halfHourFee: 1, - hourFee: 1, - economyFee: 1, - minimumFee: 1 - }, fee: 0, txSize: 0, + tx: null, psbtBase64: '', - utxoSelectionModes: [ - 'Manual', - 'Random', - 'Select All', - 'Smaller Inputs First', - 'Larger Inputs First' + psbtBase64Signed: '', + signedTx: null, + signedTxHex: null, + sentTxId: null, + + signModes: [ + { + label: 'Serial Port Device', + value: 'serial-port' + }, + { + label: 'Animated QR', + value: 'animated-qr', + disable: true + } ], - utxoSelectionMode: 'Manual', + signMode: '', show: false, showAdvanced: false }, diff --git a/lnbits/extensions/watchonly/static/js/utils.js b/lnbits/extensions/watchonly/static/js/utils.js index 26bebac66..6065d74c7 100644 --- a/lnbits/extensions/watchonly/static/js/utils.js +++ b/lnbits/extensions/watchonly/static/js/utils.js @@ -1,3 +1,18 @@ +const PSBT_BASE64_PREFIX = 'cHNidP8' +const COMMAND_PASSWORD = '/password' +const COMMAND_PASSWORD_CLEAR = '/password-clear' +const COMMAND_SEND_PSBT = '/psbt' +const COMMAND_SIGN_PSBT = '/sign' +const COMMAND_HELP = '/help' +const COMMAND_WIPE = '/wipe' +const COMMAND_SEED = '/seed' +const COMMAND_RESTORE = '/restore' +const COMMAND_CONFIRM_NEXT = '/confirm-next' +const COMMAND_CANCEL = '/cancel' +const COMMAND_XPUB = '/xpub' + +const DEFAULT_RECEIVE_GAP_LIMIT = 20 + const blockTimeToDate = blockTime => blockTime ? moment(blockTime * 1000).format('LLL') : '' @@ -97,3 +112,72 @@ const ACCOUNT_TYPES = { } const getAccountDescription = type => ACCOUNT_TYPES[type] || 'nonstandard' + +const readFromSerialPort = reader => { + let partialChunk + let fulliness = [] + + const readStringUntil = async (separator = '\n') => { + if (fulliness.length) return fulliness.shift().trim() + const chunks = [] + if (partialChunk) { + // leftovers from previous read + chunks.push(partialChunk) + partialChunk = undefined + } + while (true) { + const {value, done} = await reader.read() + if (value) { + const values = value.split(separator) + // found one or more separators + if (values.length > 1) { + chunks.push(values.shift()) // first element + partialChunk = values.pop() // last element + fulliness = values // full lines + return {value: chunks.join('').trim(), done: false} + } + chunks.push(value) + } + if (done) return {value: chunks.join('').trim(), done: true} + } + } + return readStringUntil +} + +function satOrBtc(val, showUnit = true, showSats = false) { + const value = showSats + ? LNbits.utils.formatSat(val) + : val == 0 + ? 0.0 + : (val / 100000000).toFixed(8) + if (!showUnit) return value + return showSats ? value + ' sat' : value + ' BTC' +} + +function loadTemplateAsync(path) { + const result = new Promise(resolve => { + const xhttp = new XMLHttpRequest() + + xhttp.onreadystatechange = function () { + if (this.readyState == 4) { + if (this.status == 200) resolve(this.responseText) + + if (this.status == 404) resolve(`
Page not found: ${path}
`) + } + } + + xhttp.open('GET', path, true) + xhttp.send() + }) + + return result +} + +function findAccountPathIssues(path = '') { + const p = path.split('/') + if (p[0] !== 'm') return "Path must start with 'm/'" + for (let i = 1; i < p.length; i++) { + if (p[i].endsWith('')) p[i] = p[i].substring(0, p[i].length - 1) + if (isNaN(p[i])) return `${p[i]} is not a valid value` + } +} diff --git a/lnbits/extensions/watchonly/templates/watchonly/index.html b/lnbits/extensions/watchonly/templates/watchonly/index.html index 0ab2a67be..982f90412 100644 --- a/lnbits/extensions/watchonly/templates/watchonly/index.html +++ b/lnbits/extensions/watchonly/templates/watchonly/index.html @@ -2,198 +2,70 @@ %} {% block page %}
- - {% raw %} -
-
-
-
{{satBtc(utxos.total)}}
-
-
-
- - -
-
-
+ + + - - -
-
- Add Wallet Account - -
- -
-
- - - -
-
- - - - -
-
+ + + {% raw %}
-
+
Scan Blockchain +
+
-
+
Make PaymentNew Payment + Back
@@ -208,828 +80,64 @@
- - + + - + -
-
- -
-
- -
-
- - - -
-
- - - +
-
-
-
- - - -
-
- - - - - Export to CSV - - - - -
-
- - - +
-
-
- -
-
-
- - - - -
-
- - - - -
-
-
- - -
-
- -
-
- -
-
-
-
- - - -
-
- - - - - -
-
-
- -
-
- -
-
Change Account:
-
- -
-
- -
-
-
-
Fee Rate:
-
- -
-
- -
-
-
-
-
- - Warning! The fee is too low. The transaction might take - a long time to confirm. - - - Warning! The fee is too high. You might be overpaying - for this transaction. - -
-
- -
-
Fee:
-
{{computeFee()}} sats
-
- Refresh Fee Rates -
-
-
- -
-
- - - -
-
-
-
- Create PSBT -
-
- - The payed amount is higher than the selected amount! - -
-
-
-
- -
-
-
-
-
+
+
+ + +
{% endraw %} @@ -1047,100 +155,9 @@
- - - - - - - - -
- Add Watch-Only Account - Cancel -
-
-
-
- - - - - - - - - - - -
- Update - Cancel -
-
-
-
- - - - {% raw %} - + {% raw %} + +
Address Details

@@ -1160,7 +177,7 @@ size="ms" icon="launch" type="a" - :href="config.mempool_endpoint + '/address/' + currentAddress.address" + :href="mempoolHostname + '/address/' + currentAddress.address" target="_blank" >

@@ -1168,7 +185,7 @@ @@ -1185,7 +202,7 @@ outline v-close-popup color="grey" - @click="updateNoteForAddress(currentAddress, addresses.note)" + @click="updateNoteForAddress({addressId: currentAddress.id, note: addressNote})" class="q-ml-sm" >Save Note @@ -1194,14 +211,31 @@
+ {% endraw %}
{% endblock %} {% block scripts %} {{ window_vars(user) }} + + + + + + + + + + + + {% endblock %} diff --git a/lnbits/extensions/watchonly/views_api.py b/lnbits/extensions/watchonly/views_api.py index f9055a207..1a4b93ed4 100644 --- a/lnbits/extensions/watchonly/views_api.py +++ b/lnbits/extensions/watchonly/views_api.py @@ -1,7 +1,8 @@ +import json from http import HTTPStatus -from embit import script -from embit.descriptor import Descriptor, Key +import httpx +from embit import finalizer, script from embit.ec import PublicKey from embit.psbt import PSBT, DerivationPath from embit.transaction import Transaction, TransactionInput, TransactionOutput @@ -15,34 +16,44 @@ from lnbits.extensions.watchonly import watchonly_ext from .crud import ( create_config, create_fresh_addresses, - create_mempool, create_watch_wallet, delete_addresses_for_wallet, delete_watch_wallet, get_addresses, get_config, get_fresh_address, - get_mempool, get_watch_wallet, get_watch_wallets, update_address, update_config, - update_mempool, update_watch_wallet, ) from .helpers import parse_key -from .models import Config, CreatePsbt, CreateWallet, WalletAccount +from .models import ( + BroadcastTransaction, + Config, + CreatePsbt, + CreateWallet, + ExtractPsbt, + SignedTransaction, + WalletAccount, +) ###################WALLETS############################# @watchonly_ext.get("/api/v1/wallet") -async def api_wallets_retrieve(wallet: WalletTypeInfo = Depends(get_key_type)): +async def api_wallets_retrieve( + network: str = Query("Mainnet"), wallet: WalletTypeInfo = Depends(get_key_type) +): try: - return [wallet.dict() for wallet in await get_watch_wallets(wallet.wallet.user)] + return [ + wallet.dict() + for wallet in await get_watch_wallets(wallet.wallet.user, network) + ] except: - return "" + return [] @watchonly_ext.get("/api/v1/wallet/{wallet_id}") @@ -64,7 +75,13 @@ async def api_wallet_create_or_update( data: CreateWallet, w: WalletTypeInfo = Depends(require_admin_key) ): try: - (descriptor, _) = parse_key(data.masterpub) + (descriptor, network) = parse_key(data.masterpub) + if data.network != network["name"]: + raise ValueError( + "Account network error. This account is for '{}'".format( + network["name"] + ) + ) new_wallet = WalletAccount( id="none", @@ -75,11 +92,19 @@ async def api_wallet_create_or_update( title=data.title, address_no=-1, # so fresh address on empty wallet can get address with index 0 balance=0, + network=network["name"], ) - wallets = await get_watch_wallets(w.wallet.user) + wallets = await get_watch_wallets(w.wallet.user, network["name"]) existing_wallet = next( - (ew for ew in wallets if ew.fingerprint == new_wallet.fingerprint), None + ( + ew + for ew in wallets + if ew.fingerprint == new_wallet.fingerprint + and ew.network == new_wallet.network + and ew.masterpub == new_wallet.masterpub + ), + None, ) if existing_wallet: raise ValueError( @@ -218,12 +243,13 @@ async def api_psbt_create( descriptors = {} for _, masterpub in enumerate(data.masterpubs): - descriptors[masterpub.fingerprint] = parse_key(masterpub.public_key) + descriptors[masterpub.id] = parse_key(masterpub.public_key) inputs_extra = [] - bip32_derivations = {} + for i, inp in enumerate(data.inputs): - descriptor = descriptors[inp.masterpub_fingerprint][0] + bip32_derivations = {} + descriptor = descriptors[inp.wallet][0] d = descriptor.derive(inp.address_index, inp.branch_index) for k in d.keys: bip32_derivations[PublicKey.parse(k.sec())] = DerivationPath( @@ -242,12 +268,13 @@ async def api_psbt_create( for i, inp in enumerate(inputs_extra): psbt.inputs[i].bip32_derivations = inp["bip32_derivations"] psbt.inputs[i].non_witness_utxo = inp.get("non_witness_utxo", None) + print("### ", inp.get("non_witness_utxo", None)) outputs_extra = [] bip32_derivations = {} for i, out in enumerate(data.outputs): if out.branch_index == 1: - descriptor = descriptors[out.masterpub_fingerprint][0] + descriptor = descriptors[out.wallet][0] d = descriptor.derive(out.address_index, out.branch_index) for k in d.keys: bip32_derivations[PublicKey.parse(k.sec())] = DerivationPath( @@ -264,6 +291,66 @@ async def api_psbt_create( raise HTTPException(status_code=HTTPStatus.BAD_REQUEST, detail=str(e)) +@watchonly_ext.put("/api/v1/psbt/extract") +async def api_psbt_extract_tx( + data: ExtractPsbt, w: WalletTypeInfo = Depends(require_admin_key) +): + res = SignedTransaction() + try: + psbt = PSBT.from_base64(data.psbtBase64) + for i, inp in enumerate(data.inputs): + psbt.inputs[i].non_witness_utxo = Transaction.from_string(inp.tx_hex) + + final_psbt = finalizer.finalize_psbt(psbt) + if not final_psbt: + raise ValueError("PSBT cannot be finalized!") + res.tx_hex = final_psbt.to_string() + + transaction = Transaction.from_string(res.tx_hex) + tx = { + "locktime": transaction.locktime, + "version": transaction.version, + "outputs": [], + "fee": psbt.fee(), + } + + for out in transaction.vout: + tx["outputs"].append( + {"amount": out.value, "address": out.script_pubkey.address()} + ) + res.tx_json = json.dumps(tx) + except Exception as e: + raise HTTPException(status_code=HTTPStatus.BAD_REQUEST, detail=str(e)) + return res.dict() + + +@watchonly_ext.post("/api/v1/tx") +async def api_tx_broadcast( + data: BroadcastTransaction, w: WalletTypeInfo = Depends(require_admin_key) +): + try: + config = await get_config(w.wallet.user) + if not config: + raise ValueError( + "Cannot broadcast transaction. Mempool endpoint not defined!" + ) + + endpoint = ( + config.mempool_endpoint + if config.network == "Mainnet" + else config.mempool_endpoint + "/testnet" + ) + async with httpx.AsyncClient() as client: + r = await client.post(endpoint + "/api/tx", data=data.tx_hex) + tx_id = r.text + print("### broadcast tx_id: ", tx_id) + return tx_id + # return "0f0f0f0f0f0f0f0f0f0f0f00f0f0f0f0f0f0f0f0f0f00f0f0f0f0f0f0.mock.transaction.id" + except Exception as e: + print("### broadcast error: ", str(e)) + raise HTTPException(status_code=HTTPStatus.BAD_REQUEST, detail=str(e)) + + #############################CONFIG########################## @@ -281,23 +368,3 @@ async def api_get_config(w: WalletTypeInfo = Depends(get_key_type)): if not config: config = await create_config(user=w.wallet.user) return config.dict() - - -#############################MEMPOOL########################## - -### TODO: fix statspay dependcy and remove -@watchonly_ext.put("/api/v1/mempool") -async def api_update_mempool( - endpoint: str = Query(...), w: WalletTypeInfo = Depends(require_admin_key) -): - mempool = await update_mempool(**{"endpoint": endpoint}, user=w.wallet.user) - return mempool.dict() - - -### TODO: fix statspay dependcy and remove -@watchonly_ext.get("/api/v1/mempool") -async def api_get_mempool(w: WalletTypeInfo = Depends(require_admin_key)): - mempool = await get_mempool(w.wallet.user) - if not mempool: - mempool = await create_mempool(user=w.wallet.user) - return mempool.dict() diff --git a/lnbits/extensions/withdraw/static/js/index.js b/lnbits/extensions/withdraw/static/js/index.js index 1982d6845..943e90246 100644 --- a/lnbits/extensions/withdraw/static/js/index.js +++ b/lnbits/extensions/withdraw/static/js/index.js @@ -70,7 +70,7 @@ new Vue({ show: false, data: { is_unique: true, - use_custom: true, + use_custom: false, title: 'Vouchers', min_withdrawable: 0, wait_time: 1 @@ -125,7 +125,6 @@ new Vue({ var link = _.findWhere(this.withdrawLinks, {id: linkId}) this.qrCodeDialog.data = _.clone(link) - console.log(this.qrCodeDialog.data) this.qrCodeDialog.data.url = window.location.protocol + '//' + window.location.host this.qrCodeDialog.show = true @@ -140,6 +139,11 @@ new Vue({ id: this.formDialog.data.wallet }) var data = _.omit(this.formDialog.data, 'wallet') + + if (!data.use_custom) { + data.custom_url = null + } + if (data.use_custom && !data?.custom_url) { data.custom_url = CUSTOM_URL } @@ -168,6 +172,10 @@ new Vue({ data.title = 'vouchers' data.is_unique = true + if (!data.use_custom) { + data.custom_url = null + } + if (data.use_custom && !data?.custom_url) { data.custom_url = '/static/images/default_voucher.png' } diff --git a/lnbits/extensions/withdraw/templates/withdraw/index.html b/lnbits/extensions/withdraw/templates/withdraw/index.html index 9ff428a1d..b1d927afe 100644 --- a/lnbits/extensions/withdraw/templates/withdraw/index.html +++ b/lnbits/extensions/withdraw/templates/withdraw/index.html @@ -241,7 +241,7 @@ v-model="formDialog.data.custom_url" type="text" label="Custom design .png (optional)" - hint="Enter a URL if you want to use a custom design or leave blank for showing only the QR" + hint="Enter a URL if you want to use a custom design or leave blank for LNbits designed vouchers!" >
@@ -353,7 +353,7 @@ v-model="simpleformDialog.data.custom_url" type="text" label="Custom design .png (optional)" - hint="Enter a URL if you want to use a custom design or leave blank for showing only the QR" + hint="Enter a URL if you want to use a custom design or leave blank for LNbits designed vouchers!" >
diff --git a/lnbits/extensions/withdraw/templates/withdraw/print_qr_custom.html b/lnbits/extensions/withdraw/templates/withdraw/print_qr_custom.html index c95ba5a60..ca47cec44 100644 --- a/lnbits/extensions/withdraw/templates/withdraw/print_qr_custom.html +++ b/lnbits/extensions/withdraw/templates/withdraw/print_qr_custom.html @@ -9,7 +9,10 @@ ... {{ amt }} sats
- +
{% endfor %} diff --git a/lnbits/server.py b/lnbits/server.py index 4a63b3b7b..e9849851b 100644 --- a/lnbits/server.py +++ b/lnbits/server.py @@ -1,18 +1,49 @@ +import time + import click import uvicorn +from lnbits.settings import HOST, PORT -@click.command() -@click.option("--port", default="5000", help="Port to run LNBits on") -@click.option("--host", default="127.0.0.1", help="Host to run LNBits on") -def main(port, host): + +@click.command( + context_settings=dict( + ignore_unknown_options=True, + allow_extra_args=True, + ) +) +@click.option("--port", default=PORT, help="Port to listen on") +@click.option("--host", default=HOST, help="Host to run LNBits on") +@click.option("--ssl-keyfile", default=None, help="Path to SSL keyfile") +@click.option("--ssl-certfile", default=None, help="Path to SSL certificate") +@click.pass_context +def main(ctx, port: int, host: str, ssl_keyfile: str, ssl_certfile: str): """Launched with `poetry run lnbits` at root level""" - uvicorn.run("lnbits.__main__:app", port=port, host=host) + # this beautiful beast parses all command line arguments and passes them to the uvicorn server + d = dict() + for a in ctx.args: + item = a.split("=") + if len(item) > 1: # argument like --key=value + print(a, item) + d[item[0].strip("--").replace("-", "_")] = ( + int(item[1]) # need to convert to int if it's a number + if item[1].isdigit() + else item[1] + ) + else: + d[a.strip("--")] = True # argument like --key + + config = uvicorn.Config( + "lnbits.__main__:app", + port=port, + host=host, + ssl_keyfile=ssl_keyfile, + ssl_certfile=ssl_certfile, + **d + ) + server = uvicorn.Server(config) + server.run() if __name__ == "__main__": main() - -# def main(): -# """Launched with `poetry run start` at root level""" -# uvicorn.run("lnbits.__main__:app") diff --git a/lnbits/wallets/__init__.py b/lnbits/wallets/__init__.py index 8a2ca1a54..41949652d 100644 --- a/lnbits/wallets/__init__.py +++ b/lnbits/wallets/__init__.py @@ -1,9 +1,12 @@ # flake8: noqa -from .clightning import CLightningWallet +from .cliche import ClicheWallet +from .cln import CoreLightningWallet # legacy .env support +from .cln import CoreLightningWallet as CLightningWallet from .eclair import EclairWallet from .fake import FakeWallet from .lnbits import LNbitsWallet +from .lndgrpc import LndWallet from .lndrest import LndRestWallet from .lnpay import LNPayWallet from .lntxbot import LntxbotWallet diff --git a/lnbits/wallets/cliche.py b/lnbits/wallets/cliche.py new file mode 100644 index 000000000..7c0347176 --- /dev/null +++ b/lnbits/wallets/cliche.py @@ -0,0 +1,143 @@ +import asyncio +import hashlib +import json +from os import getenv +from typing import AsyncGenerator, Dict, Optional + +import httpx +from loguru import logger +from websocket import create_connection + +from .base import ( + InvoiceResponse, + PaymentResponse, + PaymentStatus, + StatusResponse, + Wallet, +) + + +class ClicheWallet(Wallet): + """https://github.com/fiatjaf/cliche""" + + def __init__(self): + self.endpoint = getenv("CLICHE_ENDPOINT") + + async def status(self) -> StatusResponse: + try: + ws = create_connection(self.endpoint) + ws.send("get-info") + r = ws.recv() + except Exception as exc: + return StatusResponse( + f"Failed to connect to {self.endpoint} due to: {exc}", 0 + ) + try: + data = json.loads(r) + except: + return StatusResponse( + f"Failed to connect to {self.endpoint}, got: '{r.text[:200]}...'", 0 + ) + + return StatusResponse(None, data["result"]["wallets"][0]["balance"]) + + async def create_invoice( + self, + amount: int, + memo: Optional[str] = None, + description_hash: Optional[bytes] = None, + ) -> InvoiceResponse: + if description_hash: + description_hash_hashed = hashlib.sha256(description_hash).hexdigest() + ws = create_connection(self.endpoint) + ws.send( + f"create-invoice --msatoshi {amount*1000} --description_hash {description_hash_hashed}" + ) + r = ws.recv() + else: + ws = create_connection(self.endpoint) + ws.send(f"create-invoice --msatoshi {amount*1000} --description {memo}") + r = ws.recv() + data = json.loads(r) + checking_id = None + payment_request = None + error_message = None + + if data.get("error") is not None and data["error"].get("message"): + logger.error(data["error"]["message"]) + error_message = data["error"]["message"] + return InvoiceResponse(False, checking_id, payment_request, error_message) + + if data.get("result") is not None: + checking_id, payment_request = ( + data["result"]["payment_hash"], + data["result"]["invoice"], + ) + else: + return InvoiceResponse( + False, checking_id, payment_request, "Could not get payment hash" + ) + + return InvoiceResponse(True, checking_id, payment_request, error_message) + + async def pay_invoice(self, bolt11: str, fee_limit_msat: int) -> PaymentResponse: + ws = create_connection(self.endpoint) + ws.send(f"pay-invoice --invoice {bolt11}") + r = ws.recv() + data = json.loads(r) + checking_id = None + error_message = None + + if data.get("error") is not None and data["error"].get("message"): + logger.error(data["error"]["message"]) + error_message = data["error"]["message"] + return PaymentResponse(False, None, 0, error_message) + + if data.get("result") is not None and data["result"].get("payment_hash"): + checking_id = data["result"]["payment_hash"] + else: + return PaymentResponse(False, checking_id, 0, "Could not get payment hash") + + return PaymentResponse(True, checking_id, 0, error_message) + + async def get_invoice_status(self, checking_id: str) -> PaymentStatus: + ws = create_connection(self.endpoint) + ws.send(f"check-payment --hash {checking_id}") + r = ws.recv() + data = json.loads(r) + + if data.get("error") is not None and data["error"].get("message"): + logger.error(data["error"]["message"]) + return PaymentStatus(None) + + statuses = {"pending": None, "complete": True, "failed": False} + return PaymentStatus(statuses[data["result"]["status"]]) + + async def get_payment_status(self, checking_id: str) -> PaymentStatus: + ws = create_connection(self.endpoint) + ws.send(f"check-payment --hash {checking_id}") + r = ws.recv() + data = json.loads(r) + + if data.get("error") is not None and data["error"].get("message"): + logger.error(data["error"]["message"]) + return PaymentStatus(None) + + statuses = {"pending": None, "complete": True, "failed": False} + return PaymentStatus(statuses[data["result"]["status"]]) + + async def paid_invoices_stream(self) -> AsyncGenerator[str, None]: + try: + ws = await create_connection(self.endpoint) + while True: + r = await ws.recv() + data = json.loads(r) + try: + if data["result"]["status"]: + yield data["result"]["payment_hash"] + except: + continue + except: + pass + logger.error("lost connection to cliche's websocket, retrying in 5 seconds") + await asyncio.sleep(5) diff --git a/lnbits/wallets/clightning.py b/lnbits/wallets/cln.py similarity index 59% rename from lnbits/wallets/clightning.py rename to lnbits/wallets/cln.py index fc79b3e32..a92501f25 100644 --- a/lnbits/wallets/clightning.py +++ b/lnbits/wallets/cln.py @@ -1,15 +1,18 @@ try: - from lightning import LightningRpc, RpcError # type: ignore + from pyln.client import LightningRpc, RpcError # type: ignore except ImportError: # pragma: nocover LightningRpc = None import asyncio +import hashlib import random import time from functools import partial, wraps from os import getenv from typing import AsyncGenerator, Optional +from loguru import logger + from lnbits import bolt11 as lnbits_bolt11 from .base import ( @@ -41,26 +44,20 @@ def _paid_invoices_stream(ln, last_pay_index): return ln.waitanyinvoice(last_pay_index) -class CLightningWallet(Wallet): +class CoreLightningWallet(Wallet): def __init__(self): if LightningRpc is None: # pragma: nocover raise ImportError( - "The `pylightning` library must be installed to use `CLightningWallet`." + "The `pyln-client` library must be installed to use `CoreLightningWallet`." ) - self.rpc = getenv("CLIGHTNING_RPC") + self.rpc = getenv("CORELIGHTNING_RPC") or getenv("CLIGHTNING_RPC") self.ln = LightningRpc(self.rpc) - # check description_hash support (could be provided by a plugin) - self.supports_description_hash = False - try: - answer = self.ln.help("invoicewithdescriptionhash") - if answer["help"][0]["command"].startswith( - "invoicewithdescriptionhash msatoshi label description_hash" - ): - self.supports_description_hash = True - except: - pass + # check if description_hash is supported (from CLN>=v0.11.0) + self.supports_description_hash = ( + "deschashonly" in self.ln.help("invoice")["help"][0]["command"] + ) # check last payindex so we can listen from that point on self.last_pay_index = 0 @@ -87,22 +84,33 @@ class CLightningWallet(Wallet): description_hash: Optional[bytes] = None, ) -> InvoiceResponse: label = "lbl{}".format(random.random()) - msat = amount * 1000 - + msat: int = int(amount * 1000) try: - if description_hash: - if not self.supports_description_hash: - raise Unsupported("description_hash") + if description_hash and not self.supports_description_hash: + raise Unsupported("description_hash") + r = self.ln.invoice( + msatoshi=msat, + label=label, + description=description_hash.decode("utf-8") + if description_hash + else memo, + exposeprivatechannels=True, + deschashonly=True + if description_hash + else False, # we can't pass None here + ) - params = [msat, label, description_hash.hex()] - r = self.ln.call("invoicewithdescriptionhash", params) - return InvoiceResponse(True, label, r["bolt11"], "") - else: - r = self.ln.invoice(msat, label, memo, exposeprivatechannels=True) - return InvoiceResponse(True, label, r["bolt11"], "") + if r.get("code") and r.get("code") < 0: + raise Exception(r.get("message")) + + return InvoiceResponse(True, r["payment_hash"], r["bolt11"], "") except RpcError as exc: error_message = f"lightningd '{exc.method}' failed with '{exc.error}'." - return InvoiceResponse(False, label, None, error_message) + logger.error("RPC error:", error_message) + return InvoiceResponse(False, None, None, error_message) + except Exception as e: + logger.error("error:", e) + return InvoiceResponse(False, None, None, str(e)) async def pay_invoice(self, bolt11: str, fee_limit_msat: int) -> PaymentResponse: invoice = lnbits_bolt11.decode(bolt11) @@ -116,25 +124,32 @@ class CLightningWallet(Wallet): try: wrapped = async_wrap(_pay_invoice) r = await wrapped(self.ln, payload) - except RpcError as exc: + except Exception as exc: return PaymentResponse(False, None, 0, None, str(exc)) fee_msat = r["msatoshi_sent"] - r["msatoshi"] - preimage = r["payment_preimage"] - return PaymentResponse(True, r["payment_hash"], fee_msat, preimage, None) + return PaymentResponse( + True, r["payment_hash"], fee_msat, r["payment_preimage"], None + ) async def get_invoice_status(self, checking_id: str) -> PaymentStatus: - r = self.ln.listinvoices(checking_id) + try: + r = self.ln.listinvoices(payment_hash=checking_id) + except: + return PaymentStatus(None) if not r["invoices"]: - return PaymentStatus(False) - if r["invoices"][0]["label"] == checking_id: + return PaymentStatus(None) + if r["invoices"][0]["payment_hash"] == checking_id: return PaymentStatus(r["invoices"][0]["status"] == "paid") raise KeyError("supplied an invalid checking_id") async def get_payment_status(self, checking_id: str) -> PaymentStatus: - r = self.ln.call("listpays", {"payment_hash": checking_id}) + try: + r = self.ln.call("listpays", {"payment_hash": checking_id}) + except: + return PaymentStatus(None) if not r["pays"]: - return PaymentStatus(False) + return PaymentStatus(None) if r["pays"][0]["payment_hash"] == checking_id: status = r["pays"][0]["status"] if status == "complete": @@ -146,7 +161,13 @@ class CLightningWallet(Wallet): async def paid_invoices_stream(self) -> AsyncGenerator[str, None]: while True: - wrapped = async_wrap(_paid_invoices_stream) - paid = await wrapped(self.ln, self.last_pay_index) - self.last_pay_index = paid["pay_index"] - yield paid["label"] + try: + wrapped = async_wrap(_paid_invoices_stream) + paid = await wrapped(self.ln, self.last_pay_index) + self.last_pay_index = paid["pay_index"] + yield paid["payment_hash"] + except Exception as exc: + logger.error( + f"lost connection to cln invoices stream: '{exc}', retrying in 5 seconds" + ) + await asyncio.sleep(5) diff --git a/lnbits/wallets/eclair.py b/lnbits/wallets/eclair.py index ab99c699d..0a4f1f3e4 100644 --- a/lnbits/wallets/eclair.py +++ b/lnbits/wallets/eclair.py @@ -1,5 +1,6 @@ import asyncio import base64 +import hashlib import json import urllib.parse from os import getenv @@ -72,7 +73,7 @@ class EclairWallet(Wallet): data: Dict = {"amountMsat": amount * 1000} if description_hash: - data["description_hash"] = description_hash.hex() + data["description_hash"] = hashlib.sha256(description_hash).hexdigest() else: data["description"] = memo or "" diff --git a/lnbits/wallets/fake.py b/lnbits/wallets/fake.py index 3126ee46a..80a3d8c65 100644 --- a/lnbits/wallets/fake.py +++ b/lnbits/wallets/fake.py @@ -61,7 +61,7 @@ class FakeWallet(Wallet): data["timestamp"] = datetime.now().timestamp() if description_hash: data["tags_set"] = ["h"] - data["description_hash"] = description_hash.hex() + data["description_hash"] = description_hash.decode("utf-8") else: data["tags_set"] = ["d"] data["memo"] = memo diff --git a/lnbits/wallets/lnbits.py b/lnbits/wallets/lnbits.py index d2ddb7ffc..677b518aa 100644 --- a/lnbits/wallets/lnbits.py +++ b/lnbits/wallets/lnbits.py @@ -1,4 +1,5 @@ import asyncio +import hashlib import json from os import getenv from typing import AsyncGenerator, Dict, Optional @@ -59,7 +60,7 @@ class LNbitsWallet(Wallet): ) -> InvoiceResponse: data: Dict = {"out": False, "amount": amount} if description_hash: - data["description_hash"] = description_hash.hex() + data["description_hash"] = hashlib.sha256(description_hash).hexdigest() else: data["memo"] = memo or "" diff --git a/lnbits/wallets/lnd_grpc_files/lightning_pb2.py b/lnbits/wallets/lnd_grpc_files/lightning_pb2.py index 9065e3f68..bac57e5b7 100644 --- a/lnbits/wallets/lnd_grpc_files/lightning_pb2.py +++ b/lnbits/wallets/lnd_grpc_files/lightning_pb2.py @@ -3,6 +3,7 @@ # source: lightning.proto """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database @@ -13,699 +14,47 @@ from google.protobuf.internal import enum_type_wrapper _sym_db = _symbol_database.Default() -DESCRIPTOR = _descriptor.FileDescriptor( - name="lightning.proto", - package="lnrpc", - syntax="proto3", - serialized_options=b"Z%github.com/lightningnetwork/lnd/lnrpc", - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x0flightning.proto\x12\x05lnrpc" \n\x1eSubscribeCustomMessagesRequest"9\n\rCustomMessage\x12\x0c\n\x04peer\x18\x01 \x01(\x0c\x12\x0c\n\x04type\x18\x02 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c"D\n\x18SendCustomMessageRequest\x12\x0c\n\x04peer\x18\x01 \x01(\x0c\x12\x0c\n\x04type\x18\x02 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c"\x1b\n\x19SendCustomMessageResponse"\xa2\x01\n\x04Utxo\x12(\n\x0c\x61\x64\x64ress_type\x18\x01 \x01(\x0e\x32\x12.lnrpc.AddressType\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\x12\x12\n\namount_sat\x18\x03 \x01(\x03\x12\x11\n\tpk_script\x18\x04 \x01(\t\x12!\n\x08outpoint\x18\x05 \x01(\x0b\x32\x0f.lnrpc.OutPoint\x12\x15\n\rconfirmations\x18\x06 \x01(\x03"\xd6\x01\n\x0bTransaction\x12\x0f\n\x07tx_hash\x18\x01 \x01(\t\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x03\x12\x19\n\x11num_confirmations\x18\x03 \x01(\x05\x12\x12\n\nblock_hash\x18\x04 \x01(\t\x12\x14\n\x0c\x62lock_height\x18\x05 \x01(\x05\x12\x12\n\ntime_stamp\x18\x06 \x01(\x03\x12\x12\n\ntotal_fees\x18\x07 \x01(\x03\x12\x16\n\x0e\x64\x65st_addresses\x18\x08 \x03(\t\x12\x12\n\nraw_tx_hex\x18\t \x01(\t\x12\r\n\x05label\x18\n \x01(\t"S\n\x16GetTransactionsRequest\x12\x14\n\x0cstart_height\x18\x01 \x01(\x05\x12\x12\n\nend_height\x18\x02 \x01(\x05\x12\x0f\n\x07\x61\x63\x63ount\x18\x03 \x01(\t">\n\x12TransactionDetails\x12(\n\x0ctransactions\x18\x01 \x03(\x0b\x32\x12.lnrpc.Transaction"M\n\x08\x46\x65\x65Limit\x12\x0f\n\x05\x66ixed\x18\x01 \x01(\x03H\x00\x12\x14\n\nfixed_msat\x18\x03 \x01(\x03H\x00\x12\x11\n\x07percent\x18\x02 \x01(\x03H\x00\x42\x07\n\x05limit"\x8a\x04\n\x0bSendRequest\x12\x0c\n\x04\x64\x65st\x18\x01 \x01(\x0c\x12\x17\n\x0b\x64\x65st_string\x18\x02 \x01(\tB\x02\x18\x01\x12\x0b\n\x03\x61mt\x18\x03 \x01(\x03\x12\x10\n\x08\x61mt_msat\x18\x0c \x01(\x03\x12\x14\n\x0cpayment_hash\x18\x04 \x01(\x0c\x12\x1f\n\x13payment_hash_string\x18\x05 \x01(\tB\x02\x18\x01\x12\x17\n\x0fpayment_request\x18\x06 \x01(\t\x12\x18\n\x10\x66inal_cltv_delta\x18\x07 \x01(\x05\x12"\n\tfee_limit\x18\x08 \x01(\x0b\x32\x0f.lnrpc.FeeLimit\x12\x1c\n\x10outgoing_chan_id\x18\t \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0flast_hop_pubkey\x18\r \x01(\x0c\x12\x12\n\ncltv_limit\x18\n \x01(\r\x12\x46\n\x13\x64\x65st_custom_records\x18\x0b \x03(\x0b\x32).lnrpc.SendRequest.DestCustomRecordsEntry\x12\x1a\n\x12\x61llow_self_payment\x18\x0e \x01(\x08\x12(\n\rdest_features\x18\x0f \x03(\x0e\x32\x11.lnrpc.FeatureBit\x12\x14\n\x0cpayment_addr\x18\x10 \x01(\x0c\x1a\x38\n\x16\x44\x65stCustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01"z\n\x0cSendResponse\x12\x15\n\rpayment_error\x18\x01 \x01(\t\x12\x18\n\x10payment_preimage\x18\x02 \x01(\x0c\x12#\n\rpayment_route\x18\x03 \x01(\x0b\x32\x0c.lnrpc.Route\x12\x14\n\x0cpayment_hash\x18\x04 \x01(\x0c"n\n\x12SendToRouteRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x1f\n\x13payment_hash_string\x18\x02 \x01(\tB\x02\x18\x01\x12\x1b\n\x05route\x18\x04 \x01(\x0b\x32\x0c.lnrpc.RouteJ\x04\x08\x03\x10\x04"\xe5\x02\n\x14\x43hannelAcceptRequest\x12\x13\n\x0bnode_pubkey\x18\x01 \x01(\x0c\x12\x12\n\nchain_hash\x18\x02 \x01(\x0c\x12\x17\n\x0fpending_chan_id\x18\x03 \x01(\x0c\x12\x13\n\x0b\x66unding_amt\x18\x04 \x01(\x04\x12\x10\n\x08push_amt\x18\x05 \x01(\x04\x12\x12\n\ndust_limit\x18\x06 \x01(\x04\x12\x1b\n\x13max_value_in_flight\x18\x07 \x01(\x04\x12\x17\n\x0f\x63hannel_reserve\x18\x08 \x01(\x04\x12\x10\n\x08min_htlc\x18\t \x01(\x04\x12\x12\n\nfee_per_kw\x18\n \x01(\x04\x12\x11\n\tcsv_delay\x18\x0b \x01(\r\x12\x1a\n\x12max_accepted_htlcs\x18\x0c \x01(\r\x12\x15\n\rchannel_flags\x18\r \x01(\r\x12.\n\x0f\x63ommitment_type\x18\x0e \x01(\x0e\x32\x15.lnrpc.CommitmentType"\xf4\x01\n\x15\x43hannelAcceptResponse\x12\x0e\n\x06\x61\x63\x63\x65pt\x18\x01 \x01(\x08\x12\x17\n\x0fpending_chan_id\x18\x02 \x01(\x0c\x12\r\n\x05\x65rror\x18\x03 \x01(\t\x12\x18\n\x10upfront_shutdown\x18\x04 \x01(\t\x12\x11\n\tcsv_delay\x18\x05 \x01(\r\x12\x13\n\x0breserve_sat\x18\x06 \x01(\x04\x12\x1a\n\x12in_flight_max_msat\x18\x07 \x01(\x04\x12\x16\n\x0emax_htlc_count\x18\x08 \x01(\r\x12\x13\n\x0bmin_htlc_in\x18\t \x01(\x04\x12\x18\n\x10min_accept_depth\x18\n \x01(\r"n\n\x0c\x43hannelPoint\x12\x1c\n\x12\x66unding_txid_bytes\x18\x01 \x01(\x0cH\x00\x12\x1a\n\x10\x66unding_txid_str\x18\x02 \x01(\tH\x00\x12\x14\n\x0coutput_index\x18\x03 \x01(\rB\x0e\n\x0c\x66unding_txid"F\n\x08OutPoint\x12\x12\n\ntxid_bytes\x18\x01 \x01(\x0c\x12\x10\n\x08txid_str\x18\x02 \x01(\t\x12\x14\n\x0coutput_index\x18\x03 \x01(\r"0\n\x10LightningAddress\x12\x0e\n\x06pubkey\x18\x01 \x01(\t\x12\x0c\n\x04host\x18\x02 \x01(\t"\xcf\x01\n\x12\x45stimateFeeRequest\x12\x41\n\x0c\x41\x64\x64rToAmount\x18\x01 \x03(\x0b\x32+.lnrpc.EstimateFeeRequest.AddrToAmountEntry\x12\x13\n\x0btarget_conf\x18\x02 \x01(\x05\x12\x11\n\tmin_confs\x18\x03 \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\x04 \x01(\x08\x1a\x33\n\x11\x41\x64\x64rToAmountEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01"_\n\x13\x45stimateFeeResponse\x12\x0f\n\x07\x66\x65\x65_sat\x18\x01 \x01(\x03\x12 \n\x14\x66\x65\x65rate_sat_per_byte\x18\x02 \x01(\x03\x42\x02\x18\x01\x12\x15\n\rsat_per_vbyte\x18\x03 \x01(\x04"\x89\x02\n\x0fSendManyRequest\x12>\n\x0c\x41\x64\x64rToAmount\x18\x01 \x03(\x0b\x32(.lnrpc.SendManyRequest.AddrToAmountEntry\x12\x13\n\x0btarget_conf\x18\x03 \x01(\x05\x12\x15\n\rsat_per_vbyte\x18\x04 \x01(\x04\x12\x18\n\x0csat_per_byte\x18\x05 \x01(\x03\x42\x02\x18\x01\x12\r\n\x05label\x18\x06 \x01(\t\x12\x11\n\tmin_confs\x18\x07 \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\x08 \x01(\x08\x1a\x33\n\x11\x41\x64\x64rToAmountEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01" \n\x10SendManyResponse\x12\x0c\n\x04txid\x18\x01 \x01(\t"\xc5\x01\n\x10SendCoinsRequest\x12\x0c\n\x04\x61\x64\x64r\x18\x01 \x01(\t\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x03\x12\x13\n\x0btarget_conf\x18\x03 \x01(\x05\x12\x15\n\rsat_per_vbyte\x18\x04 \x01(\x04\x12\x18\n\x0csat_per_byte\x18\x05 \x01(\x03\x42\x02\x18\x01\x12\x10\n\x08send_all\x18\x06 \x01(\x08\x12\r\n\x05label\x18\x07 \x01(\t\x12\x11\n\tmin_confs\x18\x08 \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\t \x01(\x08"!\n\x11SendCoinsResponse\x12\x0c\n\x04txid\x18\x01 \x01(\t"K\n\x12ListUnspentRequest\x12\x11\n\tmin_confs\x18\x01 \x01(\x05\x12\x11\n\tmax_confs\x18\x02 \x01(\x05\x12\x0f\n\x07\x61\x63\x63ount\x18\x03 \x01(\t"1\n\x13ListUnspentResponse\x12\x1a\n\x05utxos\x18\x01 \x03(\x0b\x32\x0b.lnrpc.Utxo"F\n\x11NewAddressRequest\x12 \n\x04type\x18\x01 \x01(\x0e\x32\x12.lnrpc.AddressType\x12\x0f\n\x07\x61\x63\x63ount\x18\x02 \x01(\t"%\n\x12NewAddressResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t"6\n\x12SignMessageRequest\x12\x0b\n\x03msg\x18\x01 \x01(\x0c\x12\x13\n\x0bsingle_hash\x18\x02 \x01(\x08"(\n\x13SignMessageResponse\x12\x11\n\tsignature\x18\x01 \x01(\t"6\n\x14VerifyMessageRequest\x12\x0b\n\x03msg\x18\x01 \x01(\x0c\x12\x11\n\tsignature\x18\x02 \x01(\t"6\n\x15VerifyMessageResponse\x12\r\n\x05valid\x18\x01 \x01(\x08\x12\x0e\n\x06pubkey\x18\x02 \x01(\t"Z\n\x12\x43onnectPeerRequest\x12%\n\x04\x61\x64\x64r\x18\x01 \x01(\x0b\x32\x17.lnrpc.LightningAddress\x12\x0c\n\x04perm\x18\x02 \x01(\x08\x12\x0f\n\x07timeout\x18\x03 \x01(\x04"\x15\n\x13\x43onnectPeerResponse"(\n\x15\x44isconnectPeerRequest\x12\x0f\n\x07pub_key\x18\x01 \x01(\t"\x18\n\x16\x44isconnectPeerResponse"\xa5\x01\n\x04HTLC\x12\x10\n\x08incoming\x18\x01 \x01(\x08\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x03\x12\x11\n\thash_lock\x18\x03 \x01(\x0c\x12\x19\n\x11\x65xpiration_height\x18\x04 \x01(\r\x12\x12\n\nhtlc_index\x18\x05 \x01(\x04\x12\x1a\n\x12\x66orwarding_channel\x18\x06 \x01(\x04\x12\x1d\n\x15\x66orwarding_htlc_index\x18\x07 \x01(\x04"\xaa\x01\n\x12\x43hannelConstraints\x12\x11\n\tcsv_delay\x18\x01 \x01(\r\x12\x18\n\x10\x63han_reserve_sat\x18\x02 \x01(\x04\x12\x16\n\x0e\x64ust_limit_sat\x18\x03 \x01(\x04\x12\x1c\n\x14max_pending_amt_msat\x18\x04 \x01(\x04\x12\x15\n\rmin_htlc_msat\x18\x05 \x01(\x04\x12\x1a\n\x12max_accepted_htlcs\x18\x06 \x01(\r"\xb0\x06\n\x07\x43hannel\x12\x0e\n\x06\x61\x63tive\x18\x01 \x01(\x08\x12\x15\n\rremote_pubkey\x18\x02 \x01(\t\x12\x15\n\rchannel_point\x18\x03 \x01(\t\x12\x13\n\x07\x63han_id\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x10\n\x08\x63\x61pacity\x18\x05 \x01(\x03\x12\x15\n\rlocal_balance\x18\x06 \x01(\x03\x12\x16\n\x0eremote_balance\x18\x07 \x01(\x03\x12\x12\n\ncommit_fee\x18\x08 \x01(\x03\x12\x15\n\rcommit_weight\x18\t \x01(\x03\x12\x12\n\nfee_per_kw\x18\n \x01(\x03\x12\x19\n\x11unsettled_balance\x18\x0b \x01(\x03\x12\x1b\n\x13total_satoshis_sent\x18\x0c \x01(\x03\x12\x1f\n\x17total_satoshis_received\x18\r \x01(\x03\x12\x13\n\x0bnum_updates\x18\x0e \x01(\x04\x12"\n\rpending_htlcs\x18\x0f \x03(\x0b\x32\x0b.lnrpc.HTLC\x12\x15\n\tcsv_delay\x18\x10 \x01(\rB\x02\x18\x01\x12\x0f\n\x07private\x18\x11 \x01(\x08\x12\x11\n\tinitiator\x18\x12 \x01(\x08\x12\x19\n\x11\x63han_status_flags\x18\x13 \x01(\t\x12"\n\x16local_chan_reserve_sat\x18\x14 \x01(\x03\x42\x02\x18\x01\x12#\n\x17remote_chan_reserve_sat\x18\x15 \x01(\x03\x42\x02\x18\x01\x12\x1d\n\x11static_remote_key\x18\x16 \x01(\x08\x42\x02\x18\x01\x12.\n\x0f\x63ommitment_type\x18\x1a \x01(\x0e\x32\x15.lnrpc.CommitmentType\x12\x10\n\x08lifetime\x18\x17 \x01(\x03\x12\x0e\n\x06uptime\x18\x18 \x01(\x03\x12\x15\n\rclose_address\x18\x19 \x01(\t\x12\x17\n\x0fpush_amount_sat\x18\x1b \x01(\x04\x12\x13\n\x0bthaw_height\x18\x1c \x01(\r\x12\x34\n\x11local_constraints\x18\x1d \x01(\x0b\x32\x19.lnrpc.ChannelConstraints\x12\x35\n\x12remote_constraints\x18\x1e \x01(\x0b\x32\x19.lnrpc.ChannelConstraints"z\n\x13ListChannelsRequest\x12\x13\n\x0b\x61\x63tive_only\x18\x01 \x01(\x08\x12\x15\n\rinactive_only\x18\x02 \x01(\x08\x12\x13\n\x0bpublic_only\x18\x03 \x01(\x08\x12\x14\n\x0cprivate_only\x18\x04 \x01(\x08\x12\x0c\n\x04peer\x18\x05 \x01(\x0c"8\n\x14ListChannelsResponse\x12 \n\x08\x63hannels\x18\x0b \x03(\x0b\x32\x0e.lnrpc.Channel"\xa9\x04\n\x13\x43hannelCloseSummary\x12\x15\n\rchannel_point\x18\x01 \x01(\t\x12\x13\n\x07\x63han_id\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x12\n\nchain_hash\x18\x03 \x01(\t\x12\x17\n\x0f\x63losing_tx_hash\x18\x04 \x01(\t\x12\x15\n\rremote_pubkey\x18\x05 \x01(\t\x12\x10\n\x08\x63\x61pacity\x18\x06 \x01(\x03\x12\x14\n\x0c\x63lose_height\x18\x07 \x01(\r\x12\x17\n\x0fsettled_balance\x18\x08 \x01(\x03\x12\x1b\n\x13time_locked_balance\x18\t \x01(\x03\x12:\n\nclose_type\x18\n \x01(\x0e\x32&.lnrpc.ChannelCloseSummary.ClosureType\x12(\n\x0eopen_initiator\x18\x0b \x01(\x0e\x32\x10.lnrpc.Initiator\x12)\n\x0f\x63lose_initiator\x18\x0c \x01(\x0e\x32\x10.lnrpc.Initiator\x12&\n\x0bresolutions\x18\r \x03(\x0b\x32\x11.lnrpc.Resolution"\x8a\x01\n\x0b\x43losureType\x12\x15\n\x11\x43OOPERATIVE_CLOSE\x10\x00\x12\x15\n\x11LOCAL_FORCE_CLOSE\x10\x01\x12\x16\n\x12REMOTE_FORCE_CLOSE\x10\x02\x12\x10\n\x0c\x42REACH_CLOSE\x10\x03\x12\x14\n\x10\x46UNDING_CANCELED\x10\x04\x12\r\n\tABANDONED\x10\x05"\xb2\x01\n\nResolution\x12.\n\x0fresolution_type\x18\x01 \x01(\x0e\x32\x15.lnrpc.ResolutionType\x12)\n\x07outcome\x18\x02 \x01(\x0e\x32\x18.lnrpc.ResolutionOutcome\x12!\n\x08outpoint\x18\x03 \x01(\x0b\x32\x0f.lnrpc.OutPoint\x12\x12\n\namount_sat\x18\x04 \x01(\x04\x12\x12\n\nsweep_txid\x18\x05 \x01(\t"\x94\x01\n\x15\x43losedChannelsRequest\x12\x13\n\x0b\x63ooperative\x18\x01 \x01(\x08\x12\x13\n\x0blocal_force\x18\x02 \x01(\x08\x12\x14\n\x0cremote_force\x18\x03 \x01(\x08\x12\x0e\n\x06\x62reach\x18\x04 \x01(\x08\x12\x18\n\x10\x66unding_canceled\x18\x05 \x01(\x08\x12\x11\n\tabandoned\x18\x06 \x01(\x08"F\n\x16\x43losedChannelsResponse\x12,\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x1a.lnrpc.ChannelCloseSummary"\xef\x03\n\x04Peer\x12\x0f\n\x07pub_key\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x64\x64ress\x18\x03 \x01(\t\x12\x12\n\nbytes_sent\x18\x04 \x01(\x04\x12\x12\n\nbytes_recv\x18\x05 \x01(\x04\x12\x10\n\x08sat_sent\x18\x06 \x01(\x03\x12\x10\n\x08sat_recv\x18\x07 \x01(\x03\x12\x0f\n\x07inbound\x18\x08 \x01(\x08\x12\x11\n\tping_time\x18\t \x01(\x03\x12\'\n\tsync_type\x18\n \x01(\x0e\x32\x14.lnrpc.Peer.SyncType\x12+\n\x08\x66\x65\x61tures\x18\x0b \x03(\x0b\x32\x19.lnrpc.Peer.FeaturesEntry\x12\'\n\x06\x65rrors\x18\x0c \x03(\x0b\x32\x17.lnrpc.TimestampedError\x12\x12\n\nflap_count\x18\r \x01(\x05\x12\x14\n\x0clast_flap_ns\x18\x0e \x01(\x03\x12\x19\n\x11last_ping_payload\x18\x0f \x01(\x0c\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01"P\n\x08SyncType\x12\x10\n\x0cUNKNOWN_SYNC\x10\x00\x12\x0f\n\x0b\x41\x43TIVE_SYNC\x10\x01\x12\x10\n\x0cPASSIVE_SYNC\x10\x02\x12\x0f\n\x0bPINNED_SYNC\x10\x03"4\n\x10TimestampedError\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t"(\n\x10ListPeersRequest\x12\x14\n\x0clatest_error\x18\x01 \x01(\x08"/\n\x11ListPeersResponse\x12\x1a\n\x05peers\x18\x01 \x03(\x0b\x32\x0b.lnrpc.Peer"\x17\n\x15PeerEventSubscription"v\n\tPeerEvent\x12\x0f\n\x07pub_key\x18\x01 \x01(\t\x12(\n\x04type\x18\x02 \x01(\x0e\x32\x1a.lnrpc.PeerEvent.EventType".\n\tEventType\x12\x0f\n\x0bPEER_ONLINE\x10\x00\x12\x10\n\x0cPEER_OFFLINE\x10\x01"\x10\n\x0eGetInfoRequest"\x96\x04\n\x0fGetInfoResponse\x12\x0f\n\x07version\x18\x0e \x01(\t\x12\x13\n\x0b\x63ommit_hash\x18\x14 \x01(\t\x12\x17\n\x0fidentity_pubkey\x18\x01 \x01(\t\x12\r\n\x05\x61lias\x18\x02 \x01(\t\x12\r\n\x05\x63olor\x18\x11 \x01(\t\x12\x1c\n\x14num_pending_channels\x18\x03 \x01(\r\x12\x1b\n\x13num_active_channels\x18\x04 \x01(\r\x12\x1d\n\x15num_inactive_channels\x18\x0f \x01(\r\x12\x11\n\tnum_peers\x18\x05 \x01(\r\x12\x14\n\x0c\x62lock_height\x18\x06 \x01(\r\x12\x12\n\nblock_hash\x18\x08 \x01(\t\x12\x1d\n\x15\x62\x65st_header_timestamp\x18\r \x01(\x03\x12\x17\n\x0fsynced_to_chain\x18\t \x01(\x08\x12\x17\n\x0fsynced_to_graph\x18\x12 \x01(\x08\x12\x13\n\x07testnet\x18\n \x01(\x08\x42\x02\x18\x01\x12\x1c\n\x06\x63hains\x18\x10 \x03(\x0b\x32\x0c.lnrpc.Chain\x12\x0c\n\x04uris\x18\x0c \x03(\t\x12\x36\n\x08\x66\x65\x61tures\x18\x13 \x03(\x0b\x32$.lnrpc.GetInfoResponse.FeaturesEntry\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01J\x04\x08\x0b\x10\x0c"\x18\n\x16GetRecoveryInfoRequest"]\n\x17GetRecoveryInfoResponse\x12\x15\n\rrecovery_mode\x18\x01 \x01(\x08\x12\x19\n\x11recovery_finished\x18\x02 \x01(\x08\x12\x10\n\x08progress\x18\x03 \x01(\x01"\'\n\x05\x43hain\x12\r\n\x05\x63hain\x18\x01 \x01(\t\x12\x0f\n\x07network\x18\x02 \x01(\t"U\n\x12\x43onfirmationUpdate\x12\x11\n\tblock_sha\x18\x01 \x01(\x0c\x12\x14\n\x0c\x62lock_height\x18\x02 \x01(\x05\x12\x16\n\x0enum_confs_left\x18\x03 \x01(\r"?\n\x11\x43hannelOpenUpdate\x12*\n\rchannel_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint";\n\x12\x43hannelCloseUpdate\x12\x14\n\x0c\x63losing_txid\x18\x01 \x01(\x0c\x12\x0f\n\x07success\x18\x02 \x01(\x08"\xb0\x01\n\x13\x43loseChannelRequest\x12*\n\rchannel_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12\r\n\x05\x66orce\x18\x02 \x01(\x08\x12\x13\n\x0btarget_conf\x18\x03 \x01(\x05\x12\x18\n\x0csat_per_byte\x18\x04 \x01(\x03\x42\x02\x18\x01\x12\x18\n\x10\x64\x65livery_address\x18\x05 \x01(\t\x12\x15\n\rsat_per_vbyte\x18\x06 \x01(\x04"}\n\x11\x43loseStatusUpdate\x12-\n\rclose_pending\x18\x01 \x01(\x0b\x32\x14.lnrpc.PendingUpdateH\x00\x12/\n\nchan_close\x18\x03 \x01(\x0b\x32\x19.lnrpc.ChannelCloseUpdateH\x00\x42\x08\n\x06update"3\n\rPendingUpdate\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x14\n\x0coutput_index\x18\x02 \x01(\r"T\n\x13ReadyForPsbtFunding\x12\x17\n\x0f\x66unding_address\x18\x01 \x01(\t\x12\x16\n\x0e\x66unding_amount\x18\x02 \x01(\x03\x12\x0c\n\x04psbt\x18\x03 \x01(\x0c"\xad\x01\n\x17\x42\x61tchOpenChannelRequest\x12)\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x17.lnrpc.BatchOpenChannel\x12\x13\n\x0btarget_conf\x18\x02 \x01(\x05\x12\x15\n\rsat_per_vbyte\x18\x03 \x01(\x03\x12\x11\n\tmin_confs\x18\x04 \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\x05 \x01(\x08\x12\r\n\x05label\x18\x06 \x01(\t"\xf9\x01\n\x10\x42\x61tchOpenChannel\x12\x13\n\x0bnode_pubkey\x18\x01 \x01(\x0c\x12\x1c\n\x14local_funding_amount\x18\x02 \x01(\x03\x12\x10\n\x08push_sat\x18\x03 \x01(\x03\x12\x0f\n\x07private\x18\x04 \x01(\x08\x12\x15\n\rmin_htlc_msat\x18\x05 \x01(\x03\x12\x18\n\x10remote_csv_delay\x18\x06 \x01(\r\x12\x15\n\rclose_address\x18\x07 \x01(\t\x12\x17\n\x0fpending_chan_id\x18\x08 \x01(\x0c\x12.\n\x0f\x63ommitment_type\x18\t \x01(\x0e\x32\x15.lnrpc.CommitmentType"J\n\x18\x42\x61tchOpenChannelResponse\x12.\n\x10pending_channels\x18\x01 \x03(\x0b\x32\x14.lnrpc.PendingUpdate"\xfa\x03\n\x12OpenChannelRequest\x12\x15\n\rsat_per_vbyte\x18\x01 \x01(\x04\x12\x13\n\x0bnode_pubkey\x18\x02 \x01(\x0c\x12\x1e\n\x12node_pubkey_string\x18\x03 \x01(\tB\x02\x18\x01\x12\x1c\n\x14local_funding_amount\x18\x04 \x01(\x03\x12\x10\n\x08push_sat\x18\x05 \x01(\x03\x12\x13\n\x0btarget_conf\x18\x06 \x01(\x05\x12\x18\n\x0csat_per_byte\x18\x07 \x01(\x03\x42\x02\x18\x01\x12\x0f\n\x07private\x18\x08 \x01(\x08\x12\x15\n\rmin_htlc_msat\x18\t \x01(\x03\x12\x18\n\x10remote_csv_delay\x18\n \x01(\r\x12\x11\n\tmin_confs\x18\x0b \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\x0c \x01(\x08\x12\x15\n\rclose_address\x18\r \x01(\t\x12(\n\x0c\x66unding_shim\x18\x0e \x01(\x0b\x32\x12.lnrpc.FundingShim\x12\'\n\x1fremote_max_value_in_flight_msat\x18\x0f \x01(\x04\x12\x18\n\x10remote_max_htlcs\x18\x10 \x01(\r\x12\x15\n\rmax_local_csv\x18\x11 \x01(\r\x12.\n\x0f\x63ommitment_type\x18\x12 \x01(\x0e\x32\x15.lnrpc.CommitmentType"\xc3\x01\n\x10OpenStatusUpdate\x12,\n\x0c\x63han_pending\x18\x01 \x01(\x0b\x32\x14.lnrpc.PendingUpdateH\x00\x12-\n\tchan_open\x18\x03 \x01(\x0b\x32\x18.lnrpc.ChannelOpenUpdateH\x00\x12/\n\tpsbt_fund\x18\x05 \x01(\x0b\x32\x1a.lnrpc.ReadyForPsbtFundingH\x00\x12\x17\n\x0fpending_chan_id\x18\x04 \x01(\x0c\x42\x08\n\x06update"3\n\nKeyLocator\x12\x12\n\nkey_family\x18\x01 \x01(\x05\x12\x11\n\tkey_index\x18\x02 \x01(\x05"J\n\rKeyDescriptor\x12\x15\n\rraw_key_bytes\x18\x01 \x01(\x0c\x12"\n\x07key_loc\x18\x02 \x01(\x0b\x32\x11.lnrpc.KeyLocator"\xb0\x01\n\rChanPointShim\x12\x0b\n\x03\x61mt\x18\x01 \x01(\x03\x12\'\n\nchan_point\x18\x02 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12\'\n\tlocal_key\x18\x03 \x01(\x0b\x32\x14.lnrpc.KeyDescriptor\x12\x12\n\nremote_key\x18\x04 \x01(\x0c\x12\x17\n\x0fpending_chan_id\x18\x05 \x01(\x0c\x12\x13\n\x0bthaw_height\x18\x06 \x01(\r"J\n\x08PsbtShim\x12\x17\n\x0fpending_chan_id\x18\x01 \x01(\x0c\x12\x11\n\tbase_psbt\x18\x02 \x01(\x0c\x12\x12\n\nno_publish\x18\x03 \x01(\x08"l\n\x0b\x46undingShim\x12/\n\x0f\x63han_point_shim\x18\x01 \x01(\x0b\x32\x14.lnrpc.ChanPointShimH\x00\x12$\n\tpsbt_shim\x18\x02 \x01(\x0b\x32\x0f.lnrpc.PsbtShimH\x00\x42\x06\n\x04shim",\n\x11\x46undingShimCancel\x12\x17\n\x0fpending_chan_id\x18\x01 \x01(\x0c"X\n\x11\x46undingPsbtVerify\x12\x13\n\x0b\x66unded_psbt\x18\x01 \x01(\x0c\x12\x17\n\x0fpending_chan_id\x18\x02 \x01(\x0c\x12\x15\n\rskip_finalize\x18\x03 \x01(\x08"Y\n\x13\x46undingPsbtFinalize\x12\x13\n\x0bsigned_psbt\x18\x01 \x01(\x0c\x12\x17\n\x0fpending_chan_id\x18\x02 \x01(\x0c\x12\x14\n\x0c\x66inal_raw_tx\x18\x03 \x01(\x0c"\xe5\x01\n\x14\x46undingTransitionMsg\x12+\n\rshim_register\x18\x01 \x01(\x0b\x32\x12.lnrpc.FundingShimH\x00\x12/\n\x0bshim_cancel\x18\x02 \x01(\x0b\x32\x18.lnrpc.FundingShimCancelH\x00\x12/\n\x0bpsbt_verify\x18\x03 \x01(\x0b\x32\x18.lnrpc.FundingPsbtVerifyH\x00\x12\x33\n\rpsbt_finalize\x18\x04 \x01(\x0b\x32\x1a.lnrpc.FundingPsbtFinalizeH\x00\x42\t\n\x07trigger"\x16\n\x14\x46undingStateStepResp"\x86\x01\n\x0bPendingHTLC\x12\x10\n\x08incoming\x18\x01 \x01(\x08\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x03\x12\x10\n\x08outpoint\x18\x03 \x01(\t\x12\x17\n\x0fmaturity_height\x18\x04 \x01(\r\x12\x1b\n\x13\x62locks_til_maturity\x18\x05 \x01(\x05\x12\r\n\x05stage\x18\x06 \x01(\r"\x18\n\x16PendingChannelsRequest"\xcc\r\n\x17PendingChannelsResponse\x12\x1b\n\x13total_limbo_balance\x18\x01 \x01(\x03\x12P\n\x15pending_open_channels\x18\x02 \x03(\x0b\x32\x31.lnrpc.PendingChannelsResponse.PendingOpenChannel\x12R\n\x18pending_closing_channels\x18\x03 \x03(\x0b\x32,.lnrpc.PendingChannelsResponse.ClosedChannelB\x02\x18\x01\x12Y\n\x1epending_force_closing_channels\x18\x04 \x03(\x0b\x32\x31.lnrpc.PendingChannelsResponse.ForceClosedChannel\x12R\n\x16waiting_close_channels\x18\x05 \x03(\x0b\x32\x32.lnrpc.PendingChannelsResponse.WaitingCloseChannel\x1a\xb8\x02\n\x0ePendingChannel\x12\x17\n\x0fremote_node_pub\x18\x01 \x01(\t\x12\x15\n\rchannel_point\x18\x02 \x01(\t\x12\x10\n\x08\x63\x61pacity\x18\x03 \x01(\x03\x12\x15\n\rlocal_balance\x18\x04 \x01(\x03\x12\x16\n\x0eremote_balance\x18\x05 \x01(\x03\x12\x1e\n\x16local_chan_reserve_sat\x18\x06 \x01(\x03\x12\x1f\n\x17remote_chan_reserve_sat\x18\x07 \x01(\x03\x12#\n\tinitiator\x18\x08 \x01(\x0e\x32\x10.lnrpc.Initiator\x12.\n\x0f\x63ommitment_type\x18\t \x01(\x0e\x32\x15.lnrpc.CommitmentType\x12\x1f\n\x17num_forwarding_packages\x18\n \x01(\x03\x1a\xb0\x01\n\x12PendingOpenChannel\x12>\n\x07\x63hannel\x18\x01 \x01(\x0b\x32-.lnrpc.PendingChannelsResponse.PendingChannel\x12\x1b\n\x13\x63onfirmation_height\x18\x02 \x01(\r\x12\x12\n\ncommit_fee\x18\x04 \x01(\x03\x12\x15\n\rcommit_weight\x18\x05 \x01(\x03\x12\x12\n\nfee_per_kw\x18\x06 \x01(\x03\x1a\xad\x01\n\x13WaitingCloseChannel\x12>\n\x07\x63hannel\x18\x01 \x01(\x0b\x32-.lnrpc.PendingChannelsResponse.PendingChannel\x12\x15\n\rlimbo_balance\x18\x02 \x01(\x03\x12?\n\x0b\x63ommitments\x18\x03 \x01(\x0b\x32*.lnrpc.PendingChannelsResponse.Commitments\x1a\xb7\x01\n\x0b\x43ommitments\x12\x12\n\nlocal_txid\x18\x01 \x01(\t\x12\x13\n\x0bremote_txid\x18\x02 \x01(\t\x12\x1b\n\x13remote_pending_txid\x18\x03 \x01(\t\x12\x1c\n\x14local_commit_fee_sat\x18\x04 \x01(\x04\x12\x1d\n\x15remote_commit_fee_sat\x18\x05 \x01(\x04\x12%\n\x1dremote_pending_commit_fee_sat\x18\x06 \x01(\x04\x1a\x65\n\rClosedChannel\x12>\n\x07\x63hannel\x18\x01 \x01(\x0b\x32-.lnrpc.PendingChannelsResponse.PendingChannel\x12\x14\n\x0c\x63losing_txid\x18\x02 \x01(\t\x1a\xff\x02\n\x12\x46orceClosedChannel\x12>\n\x07\x63hannel\x18\x01 \x01(\x0b\x32-.lnrpc.PendingChannelsResponse.PendingChannel\x12\x14\n\x0c\x63losing_txid\x18\x02 \x01(\t\x12\x15\n\rlimbo_balance\x18\x03 \x01(\x03\x12\x17\n\x0fmaturity_height\x18\x04 \x01(\r\x12\x1b\n\x13\x62locks_til_maturity\x18\x05 \x01(\x05\x12\x19\n\x11recovered_balance\x18\x06 \x01(\x03\x12)\n\rpending_htlcs\x18\x08 \x03(\x0b\x32\x12.lnrpc.PendingHTLC\x12M\n\x06\x61nchor\x18\t \x01(\x0e\x32=.lnrpc.PendingChannelsResponse.ForceClosedChannel.AnchorState"1\n\x0b\x41nchorState\x12\t\n\x05LIMBO\x10\x00\x12\r\n\tRECOVERED\x10\x01\x12\x08\n\x04LOST\x10\x02"\x1a\n\x18\x43hannelEventSubscription"\x93\x04\n\x12\x43hannelEventUpdate\x12&\n\x0copen_channel\x18\x01 \x01(\x0b\x32\x0e.lnrpc.ChannelH\x00\x12\x34\n\x0e\x63losed_channel\x18\x02 \x01(\x0b\x32\x1a.lnrpc.ChannelCloseSummaryH\x00\x12-\n\x0e\x61\x63tive_channel\x18\x03 \x01(\x0b\x32\x13.lnrpc.ChannelPointH\x00\x12/\n\x10inactive_channel\x18\x04 \x01(\x0b\x32\x13.lnrpc.ChannelPointH\x00\x12\x34\n\x14pending_open_channel\x18\x06 \x01(\x0b\x32\x14.lnrpc.PendingUpdateH\x00\x12\x35\n\x16\x66ully_resolved_channel\x18\x07 \x01(\x0b\x32\x13.lnrpc.ChannelPointH\x00\x12\x32\n\x04type\x18\x05 \x01(\x0e\x32$.lnrpc.ChannelEventUpdate.UpdateType"\x92\x01\n\nUpdateType\x12\x10\n\x0cOPEN_CHANNEL\x10\x00\x12\x12\n\x0e\x43LOSED_CHANNEL\x10\x01\x12\x12\n\x0e\x41\x43TIVE_CHANNEL\x10\x02\x12\x14\n\x10INACTIVE_CHANNEL\x10\x03\x12\x18\n\x14PENDING_OPEN_CHANNEL\x10\x04\x12\x1a\n\x16\x46ULLY_RESOLVED_CHANNEL\x10\x05\x42\t\n\x07\x63hannel"N\n\x14WalletAccountBalance\x12\x19\n\x11\x63onfirmed_balance\x18\x01 \x01(\x03\x12\x1b\n\x13unconfirmed_balance\x18\x02 \x01(\x03"\x16\n\x14WalletBalanceRequest"\x85\x02\n\x15WalletBalanceResponse\x12\x15\n\rtotal_balance\x18\x01 \x01(\x03\x12\x19\n\x11\x63onfirmed_balance\x18\x02 \x01(\x03\x12\x1b\n\x13unconfirmed_balance\x18\x03 \x01(\x03\x12I\n\x0f\x61\x63\x63ount_balance\x18\x04 \x03(\x0b\x32\x30.lnrpc.WalletBalanceResponse.AccountBalanceEntry\x1aR\n\x13\x41\x63\x63ountBalanceEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12*\n\x05value\x18\x02 \x01(\x0b\x32\x1b.lnrpc.WalletAccountBalance:\x02\x38\x01"#\n\x06\x41mount\x12\x0b\n\x03sat\x18\x01 \x01(\x04\x12\x0c\n\x04msat\x18\x02 \x01(\x04"\x17\n\x15\x43hannelBalanceRequest"\xe4\x02\n\x16\x43hannelBalanceResponse\x12\x13\n\x07\x62\x61lance\x18\x01 \x01(\x03\x42\x02\x18\x01\x12 \n\x14pending_open_balance\x18\x02 \x01(\x03\x42\x02\x18\x01\x12$\n\rlocal_balance\x18\x03 \x01(\x0b\x32\r.lnrpc.Amount\x12%\n\x0eremote_balance\x18\x04 \x01(\x0b\x32\r.lnrpc.Amount\x12.\n\x17unsettled_local_balance\x18\x05 \x01(\x0b\x32\r.lnrpc.Amount\x12/\n\x18unsettled_remote_balance\x18\x06 \x01(\x0b\x32\r.lnrpc.Amount\x12\x31\n\x1apending_open_local_balance\x18\x07 \x01(\x0b\x32\r.lnrpc.Amount\x12\x32\n\x1bpending_open_remote_balance\x18\x08 \x01(\x0b\x32\r.lnrpc.Amount"\xd0\x04\n\x12QueryRoutesRequest\x12\x0f\n\x07pub_key\x18\x01 \x01(\t\x12\x0b\n\x03\x61mt\x18\x02 \x01(\x03\x12\x10\n\x08\x61mt_msat\x18\x0c \x01(\x03\x12\x18\n\x10\x66inal_cltv_delta\x18\x04 \x01(\x05\x12"\n\tfee_limit\x18\x05 \x01(\x0b\x32\x0f.lnrpc.FeeLimit\x12\x15\n\rignored_nodes\x18\x06 \x03(\x0c\x12-\n\rignored_edges\x18\x07 \x03(\x0b\x32\x12.lnrpc.EdgeLocatorB\x02\x18\x01\x12\x16\n\x0esource_pub_key\x18\x08 \x01(\t\x12\x1b\n\x13use_mission_control\x18\t \x01(\x08\x12&\n\rignored_pairs\x18\n \x03(\x0b\x32\x0f.lnrpc.NodePair\x12\x12\n\ncltv_limit\x18\x0b \x01(\r\x12M\n\x13\x64\x65st_custom_records\x18\r \x03(\x0b\x32\x30.lnrpc.QueryRoutesRequest.DestCustomRecordsEntry\x12\x1c\n\x10outgoing_chan_id\x18\x0e \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0flast_hop_pubkey\x18\x0f \x01(\x0c\x12%\n\x0broute_hints\x18\x10 \x03(\x0b\x32\x10.lnrpc.RouteHint\x12(\n\rdest_features\x18\x11 \x03(\x0e\x32\x11.lnrpc.FeatureBit\x1a\x38\n\x16\x44\x65stCustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01J\x04\x08\x03\x10\x04"$\n\x08NodePair\x12\x0c\n\x04\x66rom\x18\x01 \x01(\x0c\x12\n\n\x02to\x18\x02 \x01(\x0c"@\n\x0b\x45\x64geLocator\x12\x16\n\nchannel_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x64irection_reverse\x18\x02 \x01(\x08"I\n\x13QueryRoutesResponse\x12\x1c\n\x06routes\x18\x01 \x03(\x0b\x32\x0c.lnrpc.Route\x12\x14\n\x0csuccess_prob\x18\x02 \x01(\x01"\x80\x03\n\x03Hop\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x19\n\rchan_capacity\x18\x02 \x01(\x03\x42\x02\x18\x01\x12\x1a\n\x0e\x61mt_to_forward\x18\x03 \x01(\x03\x42\x02\x18\x01\x12\x0f\n\x03\x66\x65\x65\x18\x04 \x01(\x03\x42\x02\x18\x01\x12\x0e\n\x06\x65xpiry\x18\x05 \x01(\r\x12\x1b\n\x13\x61mt_to_forward_msat\x18\x06 \x01(\x03\x12\x10\n\x08\x66\x65\x65_msat\x18\x07 \x01(\x03\x12\x0f\n\x07pub_key\x18\x08 \x01(\t\x12\x13\n\x0btlv_payload\x18\t \x01(\x08\x12$\n\nmpp_record\x18\n \x01(\x0b\x32\x10.lnrpc.MPPRecord\x12$\n\namp_record\x18\x0c \x01(\x0b\x32\x10.lnrpc.AMPRecord\x12\x35\n\x0e\x63ustom_records\x18\x0b \x03(\x0b\x32\x1d.lnrpc.Hop.CustomRecordsEntry\x1a\x34\n\x12\x43ustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01"9\n\tMPPRecord\x12\x14\n\x0cpayment_addr\x18\x0b \x01(\x0c\x12\x16\n\x0etotal_amt_msat\x18\n \x01(\x03"D\n\tAMPRecord\x12\x12\n\nroot_share\x18\x01 \x01(\x0c\x12\x0e\n\x06set_id\x18\x02 \x01(\x0c\x12\x13\n\x0b\x63hild_index\x18\x03 \x01(\r"\x9a\x01\n\x05Route\x12\x17\n\x0ftotal_time_lock\x18\x01 \x01(\r\x12\x16\n\ntotal_fees\x18\x02 \x01(\x03\x42\x02\x18\x01\x12\x15\n\ttotal_amt\x18\x03 \x01(\x03\x42\x02\x18\x01\x12\x18\n\x04hops\x18\x04 \x03(\x0b\x32\n.lnrpc.Hop\x12\x17\n\x0ftotal_fees_msat\x18\x05 \x01(\x03\x12\x16\n\x0etotal_amt_msat\x18\x06 \x01(\x03"<\n\x0fNodeInfoRequest\x12\x0f\n\x07pub_key\x18\x01 \x01(\t\x12\x18\n\x10include_channels\x18\x02 \x01(\x08"\x82\x01\n\x08NodeInfo\x12"\n\x04node\x18\x01 \x01(\x0b\x32\x14.lnrpc.LightningNode\x12\x14\n\x0cnum_channels\x18\x02 \x01(\r\x12\x16\n\x0etotal_capacity\x18\x03 \x01(\x03\x12$\n\x08\x63hannels\x18\x04 \x03(\x0b\x32\x12.lnrpc.ChannelEdge"\xf1\x01\n\rLightningNode\x12\x13\n\x0blast_update\x18\x01 \x01(\r\x12\x0f\n\x07pub_key\x18\x02 \x01(\t\x12\r\n\x05\x61lias\x18\x03 \x01(\t\x12%\n\taddresses\x18\x04 \x03(\x0b\x32\x12.lnrpc.NodeAddress\x12\r\n\x05\x63olor\x18\x05 \x01(\t\x12\x34\n\x08\x66\x65\x61tures\x18\x06 \x03(\x0b\x32".lnrpc.LightningNode.FeaturesEntry\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01",\n\x0bNodeAddress\x12\x0f\n\x07network\x18\x01 \x01(\t\x12\x0c\n\x04\x61\x64\x64r\x18\x02 \x01(\t"\xac\x01\n\rRoutingPolicy\x12\x17\n\x0ftime_lock_delta\x18\x01 \x01(\r\x12\x10\n\x08min_htlc\x18\x02 \x01(\x03\x12\x15\n\rfee_base_msat\x18\x03 \x01(\x03\x12\x1b\n\x13\x66\x65\x65_rate_milli_msat\x18\x04 \x01(\x03\x12\x10\n\x08\x64isabled\x18\x05 \x01(\x08\x12\x15\n\rmax_htlc_msat\x18\x06 \x01(\x04\x12\x13\n\x0blast_update\x18\x07 \x01(\r"\xe2\x01\n\x0b\x43hannelEdge\x12\x16\n\nchannel_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x12\n\nchan_point\x18\x02 \x01(\t\x12\x17\n\x0blast_update\x18\x03 \x01(\rB\x02\x18\x01\x12\x11\n\tnode1_pub\x18\x04 \x01(\t\x12\x11\n\tnode2_pub\x18\x05 \x01(\t\x12\x10\n\x08\x63\x61pacity\x18\x06 \x01(\x03\x12*\n\x0cnode1_policy\x18\x07 \x01(\x0b\x32\x14.lnrpc.RoutingPolicy\x12*\n\x0cnode2_policy\x18\x08 \x01(\x0b\x32\x14.lnrpc.RoutingPolicy"2\n\x13\x43hannelGraphRequest\x12\x1b\n\x13include_unannounced\x18\x01 \x01(\x08"V\n\x0c\x43hannelGraph\x12#\n\x05nodes\x18\x01 \x03(\x0b\x32\x14.lnrpc.LightningNode\x12!\n\x05\x65\x64ges\x18\x02 \x03(\x0b\x32\x12.lnrpc.ChannelEdge":\n\x12NodeMetricsRequest\x12$\n\x05types\x18\x01 \x03(\x0e\x32\x15.lnrpc.NodeMetricType"\xbe\x01\n\x13NodeMetricsResponse\x12U\n\x16\x62\x65tweenness_centrality\x18\x01 \x03(\x0b\x32\x35.lnrpc.NodeMetricsResponse.BetweennessCentralityEntry\x1aP\n\x1a\x42\x65tweennessCentralityEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.lnrpc.FloatMetric:\x02\x38\x01"6\n\x0b\x46loatMetric\x12\r\n\x05value\x18\x01 \x01(\x01\x12\x18\n\x10normalized_value\x18\x02 \x01(\x01"&\n\x0f\x43hanInfoRequest\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01"\x14\n\x12NetworkInfoRequest"\xa7\x02\n\x0bNetworkInfo\x12\x16\n\x0egraph_diameter\x18\x01 \x01(\r\x12\x16\n\x0e\x61vg_out_degree\x18\x02 \x01(\x01\x12\x16\n\x0emax_out_degree\x18\x03 \x01(\r\x12\x11\n\tnum_nodes\x18\x04 \x01(\r\x12\x14\n\x0cnum_channels\x18\x05 \x01(\r\x12\x1e\n\x16total_network_capacity\x18\x06 \x01(\x03\x12\x18\n\x10\x61vg_channel_size\x18\x07 \x01(\x01\x12\x18\n\x10min_channel_size\x18\x08 \x01(\x03\x12\x18\n\x10max_channel_size\x18\t \x01(\x03\x12\x1f\n\x17median_channel_size_sat\x18\n \x01(\x03\x12\x18\n\x10num_zombie_chans\x18\x0b \x01(\x04"\r\n\x0bStopRequest"\x0e\n\x0cStopResponse"\x1b\n\x19GraphTopologySubscription"\xa3\x01\n\x13GraphTopologyUpdate\x12\'\n\x0cnode_updates\x18\x01 \x03(\x0b\x32\x11.lnrpc.NodeUpdate\x12\x31\n\x0f\x63hannel_updates\x18\x02 \x03(\x0b\x32\x18.lnrpc.ChannelEdgeUpdate\x12\x30\n\x0c\x63losed_chans\x18\x03 \x03(\x0b\x32\x1a.lnrpc.ClosedChannelUpdate"\x94\x02\n\nNodeUpdate\x12\x15\n\taddresses\x18\x01 \x03(\tB\x02\x18\x01\x12\x14\n\x0cidentity_key\x18\x02 \x01(\t\x12\x1b\n\x0fglobal_features\x18\x03 \x01(\x0c\x42\x02\x18\x01\x12\r\n\x05\x61lias\x18\x04 \x01(\t\x12\r\n\x05\x63olor\x18\x05 \x01(\t\x12*\n\x0enode_addresses\x18\x07 \x03(\x0b\x32\x12.lnrpc.NodeAddress\x12\x31\n\x08\x66\x65\x61tures\x18\x06 \x03(\x0b\x32\x1f.lnrpc.NodeUpdate.FeaturesEntry\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01"\xc4\x01\n\x11\x43hannelEdgeUpdate\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\'\n\nchan_point\x18\x02 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12\x10\n\x08\x63\x61pacity\x18\x03 \x01(\x03\x12,\n\x0erouting_policy\x18\x04 \x01(\x0b\x32\x14.lnrpc.RoutingPolicy\x12\x18\n\x10\x61\x64vertising_node\x18\x05 \x01(\t\x12\x17\n\x0f\x63onnecting_node\x18\x06 \x01(\t"|\n\x13\x43losedChannelUpdate\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x10\n\x08\x63\x61pacity\x18\x02 \x01(\x03\x12\x15\n\rclosed_height\x18\x03 \x01(\r\x12\'\n\nchan_point\x18\x04 \x01(\x0b\x32\x13.lnrpc.ChannelPoint"\x86\x01\n\x07HopHint\x12\x0f\n\x07node_id\x18\x01 \x01(\t\x12\x13\n\x07\x63han_id\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x15\n\rfee_base_msat\x18\x03 \x01(\r\x12#\n\x1b\x66\x65\x65_proportional_millionths\x18\x04 \x01(\r\x12\x19\n\x11\x63ltv_expiry_delta\x18\x05 \x01(\r"\x17\n\x05SetID\x12\x0e\n\x06set_id\x18\x01 \x01(\x0c".\n\tRouteHint\x12!\n\thop_hints\x18\x01 \x03(\x0b\x32\x0e.lnrpc.HopHint"{\n\x0f\x41MPInvoiceState\x12&\n\x05state\x18\x01 \x01(\x0e\x32\x17.lnrpc.InvoiceHTLCState\x12\x14\n\x0csettle_index\x18\x02 \x01(\x04\x12\x13\n\x0bsettle_time\x18\x03 \x01(\x03\x12\x15\n\ramt_paid_msat\x18\x05 \x01(\x03"\x85\x07\n\x07Invoice\x12\x0c\n\x04memo\x18\x01 \x01(\t\x12\x12\n\nr_preimage\x18\x03 \x01(\x0c\x12\x0e\n\x06r_hash\x18\x04 \x01(\x0c\x12\r\n\x05value\x18\x05 \x01(\x03\x12\x12\n\nvalue_msat\x18\x17 \x01(\x03\x12\x13\n\x07settled\x18\x06 \x01(\x08\x42\x02\x18\x01\x12\x15\n\rcreation_date\x18\x07 \x01(\x03\x12\x13\n\x0bsettle_date\x18\x08 \x01(\x03\x12\x17\n\x0fpayment_request\x18\t \x01(\t\x12\x18\n\x10\x64\x65scription_hash\x18\n \x01(\x0c\x12\x0e\n\x06\x65xpiry\x18\x0b \x01(\x03\x12\x15\n\rfallback_addr\x18\x0c \x01(\t\x12\x13\n\x0b\x63ltv_expiry\x18\r \x01(\x04\x12%\n\x0broute_hints\x18\x0e \x03(\x0b\x32\x10.lnrpc.RouteHint\x12\x0f\n\x07private\x18\x0f \x01(\x08\x12\x11\n\tadd_index\x18\x10 \x01(\x04\x12\x14\n\x0csettle_index\x18\x11 \x01(\x04\x12\x14\n\x08\x61mt_paid\x18\x12 \x01(\x03\x42\x02\x18\x01\x12\x14\n\x0c\x61mt_paid_sat\x18\x13 \x01(\x03\x12\x15\n\ramt_paid_msat\x18\x14 \x01(\x03\x12*\n\x05state\x18\x15 \x01(\x0e\x32\x1b.lnrpc.Invoice.InvoiceState\x12!\n\x05htlcs\x18\x16 \x03(\x0b\x32\x12.lnrpc.InvoiceHTLC\x12.\n\x08\x66\x65\x61tures\x18\x18 \x03(\x0b\x32\x1c.lnrpc.Invoice.FeaturesEntry\x12\x12\n\nis_keysend\x18\x19 \x01(\x08\x12\x14\n\x0cpayment_addr\x18\x1a \x01(\x0c\x12\x0e\n\x06is_amp\x18\x1b \x01(\x08\x12>\n\x11\x61mp_invoice_state\x18\x1c \x03(\x0b\x32#.lnrpc.Invoice.AmpInvoiceStateEntry\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01\x1aN\n\x14\x41mpInvoiceStateEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.lnrpc.AMPInvoiceState:\x02\x38\x01"A\n\x0cInvoiceState\x12\x08\n\x04OPEN\x10\x00\x12\x0b\n\x07SETTLED\x10\x01\x12\x0c\n\x08\x43\x41NCELED\x10\x02\x12\x0c\n\x08\x41\x43\x43\x45PTED\x10\x03J\x04\x08\x02\x10\x03"\xf3\x02\n\x0bInvoiceHTLC\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x12\n\nhtlc_index\x18\x02 \x01(\x04\x12\x10\n\x08\x61mt_msat\x18\x03 \x01(\x04\x12\x15\n\raccept_height\x18\x04 \x01(\x05\x12\x13\n\x0b\x61\x63\x63\x65pt_time\x18\x05 \x01(\x03\x12\x14\n\x0cresolve_time\x18\x06 \x01(\x03\x12\x15\n\rexpiry_height\x18\x07 \x01(\x05\x12&\n\x05state\x18\x08 \x01(\x0e\x32\x17.lnrpc.InvoiceHTLCState\x12=\n\x0e\x63ustom_records\x18\t \x03(\x0b\x32%.lnrpc.InvoiceHTLC.CustomRecordsEntry\x12\x1a\n\x12mpp_total_amt_msat\x18\n \x01(\x04\x12\x17\n\x03\x61mp\x18\x0b \x01(\x0b\x32\n.lnrpc.AMP\x1a\x34\n\x12\x43ustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01"^\n\x03\x41MP\x12\x12\n\nroot_share\x18\x01 \x01(\x0c\x12\x0e\n\x06set_id\x18\x02 \x01(\x0c\x12\x13\n\x0b\x63hild_index\x18\x03 \x01(\r\x12\x0c\n\x04hash\x18\x04 \x01(\x0c\x12\x10\n\x08preimage\x18\x05 \x01(\x0c"f\n\x12\x41\x64\x64InvoiceResponse\x12\x0e\n\x06r_hash\x18\x01 \x01(\x0c\x12\x17\n\x0fpayment_request\x18\x02 \x01(\t\x12\x11\n\tadd_index\x18\x10 \x01(\x04\x12\x14\n\x0cpayment_addr\x18\x11 \x01(\x0c"5\n\x0bPaymentHash\x12\x16\n\nr_hash_str\x18\x01 \x01(\tB\x02\x18\x01\x12\x0e\n\x06r_hash\x18\x02 \x01(\x0c"l\n\x12ListInvoiceRequest\x12\x14\n\x0cpending_only\x18\x01 \x01(\x08\x12\x14\n\x0cindex_offset\x18\x04 \x01(\x04\x12\x18\n\x10num_max_invoices\x18\x05 \x01(\x04\x12\x10\n\x08reversed\x18\x06 \x01(\x08"n\n\x13ListInvoiceResponse\x12 \n\x08invoices\x18\x01 \x03(\x0b\x32\x0e.lnrpc.Invoice\x12\x19\n\x11last_index_offset\x18\x02 \x01(\x04\x12\x1a\n\x12\x66irst_index_offset\x18\x03 \x01(\x04">\n\x13InvoiceSubscription\x12\x11\n\tadd_index\x18\x01 \x01(\x04\x12\x14\n\x0csettle_index\x18\x02 \x01(\x04"\xe0\x03\n\x07Payment\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\t\x12\x11\n\x05value\x18\x02 \x01(\x03\x42\x02\x18\x01\x12\x19\n\rcreation_date\x18\x03 \x01(\x03\x42\x02\x18\x01\x12\x0f\n\x03\x66\x65\x65\x18\x05 \x01(\x03\x42\x02\x18\x01\x12\x18\n\x10payment_preimage\x18\x06 \x01(\t\x12\x11\n\tvalue_sat\x18\x07 \x01(\x03\x12\x12\n\nvalue_msat\x18\x08 \x01(\x03\x12\x17\n\x0fpayment_request\x18\t \x01(\t\x12,\n\x06status\x18\n \x01(\x0e\x32\x1c.lnrpc.Payment.PaymentStatus\x12\x0f\n\x07\x66\x65\x65_sat\x18\x0b \x01(\x03\x12\x10\n\x08\x66\x65\x65_msat\x18\x0c \x01(\x03\x12\x18\n\x10\x63reation_time_ns\x18\r \x01(\x03\x12!\n\x05htlcs\x18\x0e \x03(\x0b\x32\x12.lnrpc.HTLCAttempt\x12\x15\n\rpayment_index\x18\x0f \x01(\x04\x12\x33\n\x0e\x66\x61ilure_reason\x18\x10 \x01(\x0e\x32\x1b.lnrpc.PaymentFailureReason"F\n\rPaymentStatus\x12\x0b\n\x07UNKNOWN\x10\x00\x12\r\n\tIN_FLIGHT\x10\x01\x12\r\n\tSUCCEEDED\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03J\x04\x08\x04\x10\x05"\x8a\x02\n\x0bHTLCAttempt\x12\x12\n\nattempt_id\x18\x07 \x01(\x04\x12-\n\x06status\x18\x01 \x01(\x0e\x32\x1d.lnrpc.HTLCAttempt.HTLCStatus\x12\x1b\n\x05route\x18\x02 \x01(\x0b\x32\x0c.lnrpc.Route\x12\x17\n\x0f\x61ttempt_time_ns\x18\x03 \x01(\x03\x12\x17\n\x0fresolve_time_ns\x18\x04 \x01(\x03\x12\x1f\n\x07\x66\x61ilure\x18\x05 \x01(\x0b\x32\x0e.lnrpc.Failure\x12\x10\n\x08preimage\x18\x06 \x01(\x0c"6\n\nHTLCStatus\x12\r\n\tIN_FLIGHT\x10\x00\x12\r\n\tSUCCEEDED\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02"o\n\x13ListPaymentsRequest\x12\x1a\n\x12include_incomplete\x18\x01 \x01(\x08\x12\x14\n\x0cindex_offset\x18\x02 \x01(\x04\x12\x14\n\x0cmax_payments\x18\x03 \x01(\x04\x12\x10\n\x08reversed\x18\x04 \x01(\x08"o\n\x14ListPaymentsResponse\x12 \n\x08payments\x18\x01 \x03(\x0b\x32\x0e.lnrpc.Payment\x12\x1a\n\x12\x66irst_index_offset\x18\x02 \x01(\x04\x12\x19\n\x11last_index_offset\x18\x03 \x01(\x04"G\n\x14\x44\x65letePaymentRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x19\n\x11\x66\x61iled_htlcs_only\x18\x02 \x01(\x08"S\n\x18\x44\x65leteAllPaymentsRequest\x12\x1c\n\x14\x66\x61iled_payments_only\x18\x01 \x01(\x08\x12\x19\n\x11\x66\x61iled_htlcs_only\x18\x02 \x01(\x08"\x17\n\x15\x44\x65letePaymentResponse"\x1b\n\x19\x44\x65leteAllPaymentsResponse"\x86\x01\n\x15\x41\x62\x61ndonChannelRequest\x12*\n\rchannel_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12!\n\x19pending_funding_shim_only\x18\x02 \x01(\x08\x12\x1e\n\x16i_know_what_i_am_doing\x18\x03 \x01(\x08"\x18\n\x16\x41\x62\x61ndonChannelResponse"5\n\x11\x44\x65\x62ugLevelRequest\x12\x0c\n\x04show\x18\x01 \x01(\x08\x12\x12\n\nlevel_spec\x18\x02 \x01(\t")\n\x12\x44\x65\x62ugLevelResponse\x12\x13\n\x0bsub_systems\x18\x01 \x01(\t"\x1f\n\x0cPayReqString\x12\x0f\n\x07pay_req\x18\x01 \x01(\t"\x86\x03\n\x06PayReq\x12\x13\n\x0b\x64\x65stination\x18\x01 \x01(\t\x12\x14\n\x0cpayment_hash\x18\x02 \x01(\t\x12\x14\n\x0cnum_satoshis\x18\x03 \x01(\x03\x12\x11\n\ttimestamp\x18\x04 \x01(\x03\x12\x0e\n\x06\x65xpiry\x18\x05 \x01(\x03\x12\x13\n\x0b\x64\x65scription\x18\x06 \x01(\t\x12\x18\n\x10\x64\x65scription_hash\x18\x07 \x01(\t\x12\x15\n\rfallback_addr\x18\x08 \x01(\t\x12\x13\n\x0b\x63ltv_expiry\x18\t \x01(\x03\x12%\n\x0broute_hints\x18\n \x03(\x0b\x32\x10.lnrpc.RouteHint\x12\x14\n\x0cpayment_addr\x18\x0b \x01(\x0c\x12\x10\n\x08num_msat\x18\x0c \x01(\x03\x12-\n\x08\x66\x65\x61tures\x18\r \x03(\x0b\x32\x1b.lnrpc.PayReq.FeaturesEntry\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01">\n\x07\x46\x65\x61ture\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0bis_required\x18\x03 \x01(\x08\x12\x10\n\x08is_known\x18\x04 \x01(\x08"\x12\n\x10\x46\x65\x65ReportRequest"|\n\x10\x43hannelFeeReport\x12\x13\n\x07\x63han_id\x18\x05 \x01(\x04\x42\x02\x30\x01\x12\x15\n\rchannel_point\x18\x01 \x01(\t\x12\x15\n\rbase_fee_msat\x18\x02 \x01(\x03\x12\x13\n\x0b\x66\x65\x65_per_mil\x18\x03 \x01(\x03\x12\x10\n\x08\x66\x65\x65_rate\x18\x04 \x01(\x01"\x84\x01\n\x11\x46\x65\x65ReportResponse\x12-\n\x0c\x63hannel_fees\x18\x01 \x03(\x0b\x32\x17.lnrpc.ChannelFeeReport\x12\x13\n\x0b\x64\x61y_fee_sum\x18\x02 \x01(\x04\x12\x14\n\x0cweek_fee_sum\x18\x03 \x01(\x04\x12\x15\n\rmonth_fee_sum\x18\x04 \x01(\x04"\xec\x01\n\x13PolicyUpdateRequest\x12\x10\n\x06global\x18\x01 \x01(\x08H\x00\x12)\n\nchan_point\x18\x02 \x01(\x0b\x32\x13.lnrpc.ChannelPointH\x00\x12\x15\n\rbase_fee_msat\x18\x03 \x01(\x03\x12\x10\n\x08\x66\x65\x65_rate\x18\x04 \x01(\x01\x12\x17\n\x0ftime_lock_delta\x18\x05 \x01(\r\x12\x15\n\rmax_htlc_msat\x18\x06 \x01(\x04\x12\x15\n\rmin_htlc_msat\x18\x07 \x01(\x04\x12\x1f\n\x17min_htlc_msat_specified\x18\x08 \x01(\x08\x42\x07\n\x05scope"m\n\x0c\x46\x61iledUpdate\x12!\n\x08outpoint\x18\x01 \x01(\x0b\x32\x0f.lnrpc.OutPoint\x12$\n\x06reason\x18\x02 \x01(\x0e\x32\x14.lnrpc.UpdateFailure\x12\x14\n\x0cupdate_error\x18\x03 \x01(\t"C\n\x14PolicyUpdateResponse\x12+\n\x0e\x66\x61iled_updates\x18\x01 \x03(\x0b\x32\x13.lnrpc.FailedUpdate"n\n\x18\x46orwardingHistoryRequest\x12\x12\n\nstart_time\x18\x01 \x01(\x04\x12\x10\n\x08\x65nd_time\x18\x02 \x01(\x04\x12\x14\n\x0cindex_offset\x18\x03 \x01(\r\x12\x16\n\x0enum_max_events\x18\x04 \x01(\r"\xda\x01\n\x0f\x46orwardingEvent\x12\x15\n\ttimestamp\x18\x01 \x01(\x04\x42\x02\x18\x01\x12\x16\n\nchan_id_in\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0b\x63han_id_out\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x0e\n\x06\x61mt_in\x18\x05 \x01(\x04\x12\x0f\n\x07\x61mt_out\x18\x06 \x01(\x04\x12\x0b\n\x03\x66\x65\x65\x18\x07 \x01(\x04\x12\x10\n\x08\x66\x65\x65_msat\x18\x08 \x01(\x04\x12\x13\n\x0b\x61mt_in_msat\x18\t \x01(\x04\x12\x14\n\x0c\x61mt_out_msat\x18\n \x01(\x04\x12\x14\n\x0ctimestamp_ns\x18\x0b \x01(\x04"i\n\x19\x46orwardingHistoryResponse\x12\x31\n\x11\x66orwarding_events\x18\x01 \x03(\x0b\x32\x16.lnrpc.ForwardingEvent\x12\x19\n\x11last_offset_index\x18\x02 \x01(\r"E\n\x1a\x45xportChannelBackupRequest\x12\'\n\nchan_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint"M\n\rChannelBackup\x12\'\n\nchan_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12\x13\n\x0b\x63han_backup\x18\x02 \x01(\x0c"V\n\x0fMultiChanBackup\x12(\n\x0b\x63han_points\x18\x01 \x03(\x0b\x32\x13.lnrpc.ChannelPoint\x12\x19\n\x11multi_chan_backup\x18\x02 \x01(\x0c"\x19\n\x17\x43hanBackupExportRequest"{\n\x12\x43hanBackupSnapshot\x12\x32\n\x13single_chan_backups\x18\x01 \x01(\x0b\x32\x15.lnrpc.ChannelBackups\x12\x31\n\x11multi_chan_backup\x18\x02 \x01(\x0b\x32\x16.lnrpc.MultiChanBackup"<\n\x0e\x43hannelBackups\x12*\n\x0c\x63han_backups\x18\x01 \x03(\x0b\x32\x14.lnrpc.ChannelBackup"p\n\x18RestoreChanBackupRequest\x12-\n\x0c\x63han_backups\x18\x01 \x01(\x0b\x32\x15.lnrpc.ChannelBackupsH\x00\x12\x1b\n\x11multi_chan_backup\x18\x02 \x01(\x0cH\x00\x42\x08\n\x06\x62\x61\x63kup"\x17\n\x15RestoreBackupResponse"\x1b\n\x19\x43hannelBackupSubscription"\x1a\n\x18VerifyChanBackupResponse"4\n\x12MacaroonPermission\x12\x0e\n\x06\x65ntity\x18\x01 \x01(\t\x12\x0e\n\x06\x61\x63tion\x18\x02 \x01(\t"~\n\x13\x42\x61keMacaroonRequest\x12.\n\x0bpermissions\x18\x01 \x03(\x0b\x32\x19.lnrpc.MacaroonPermission\x12\x13\n\x0broot_key_id\x18\x02 \x01(\x04\x12"\n\x1a\x61llow_external_permissions\x18\x03 \x01(\x08"(\n\x14\x42\x61keMacaroonResponse\x12\x10\n\x08macaroon\x18\x01 \x01(\t"\x18\n\x16ListMacaroonIDsRequest"/\n\x17ListMacaroonIDsResponse\x12\x14\n\x0croot_key_ids\x18\x01 \x03(\x04".\n\x17\x44\x65leteMacaroonIDRequest\x12\x13\n\x0broot_key_id\x18\x01 \x01(\x04"+\n\x18\x44\x65leteMacaroonIDResponse\x12\x0f\n\x07\x64\x65leted\x18\x01 \x01(\x08"H\n\x16MacaroonPermissionList\x12.\n\x0bpermissions\x18\x01 \x03(\x0b\x32\x19.lnrpc.MacaroonPermission"\x18\n\x16ListPermissionsRequest"\xc5\x01\n\x17ListPermissionsResponse\x12Q\n\x12method_permissions\x18\x01 \x03(\x0b\x32\x35.lnrpc.ListPermissionsResponse.MethodPermissionsEntry\x1aW\n\x16MethodPermissionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x1d.lnrpc.MacaroonPermissionList:\x02\x38\x01"\xd5\x07\n\x07\x46\x61ilure\x12(\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x1a.lnrpc.Failure.FailureCode\x12,\n\x0e\x63hannel_update\x18\x03 \x01(\x0b\x32\x14.lnrpc.ChannelUpdate\x12\x11\n\thtlc_msat\x18\x04 \x01(\x04\x12\x15\n\ronion_sha_256\x18\x05 \x01(\x0c\x12\x13\n\x0b\x63ltv_expiry\x18\x06 \x01(\r\x12\r\n\x05\x66lags\x18\x07 \x01(\r\x12\x1c\n\x14\x66\x61ilure_source_index\x18\x08 \x01(\r\x12\x0e\n\x06height\x18\t \x01(\r"\xef\x05\n\x0b\x46\x61ilureCode\x12\x0c\n\x08RESERVED\x10\x00\x12(\n$INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS\x10\x01\x12\x1c\n\x18INCORRECT_PAYMENT_AMOUNT\x10\x02\x12\x1f\n\x1b\x46INAL_INCORRECT_CLTV_EXPIRY\x10\x03\x12\x1f\n\x1b\x46INAL_INCORRECT_HTLC_AMOUNT\x10\x04\x12\x19\n\x15\x46INAL_EXPIRY_TOO_SOON\x10\x05\x12\x11\n\rINVALID_REALM\x10\x06\x12\x13\n\x0f\x45XPIRY_TOO_SOON\x10\x07\x12\x19\n\x15INVALID_ONION_VERSION\x10\x08\x12\x16\n\x12INVALID_ONION_HMAC\x10\t\x12\x15\n\x11INVALID_ONION_KEY\x10\n\x12\x18\n\x14\x41MOUNT_BELOW_MINIMUM\x10\x0b\x12\x14\n\x10\x46\x45\x45_INSUFFICIENT\x10\x0c\x12\x19\n\x15INCORRECT_CLTV_EXPIRY\x10\r\x12\x14\n\x10\x43HANNEL_DISABLED\x10\x0e\x12\x1d\n\x19TEMPORARY_CHANNEL_FAILURE\x10\x0f\x12!\n\x1dREQUIRED_NODE_FEATURE_MISSING\x10\x10\x12$\n REQUIRED_CHANNEL_FEATURE_MISSING\x10\x11\x12\x15\n\x11UNKNOWN_NEXT_PEER\x10\x12\x12\x1a\n\x16TEMPORARY_NODE_FAILURE\x10\x13\x12\x1a\n\x16PERMANENT_NODE_FAILURE\x10\x14\x12\x1d\n\x19PERMANENT_CHANNEL_FAILURE\x10\x15\x12\x12\n\x0e\x45XPIRY_TOO_FAR\x10\x16\x12\x0f\n\x0bMPP_TIMEOUT\x10\x17\x12\x19\n\x15INVALID_ONION_PAYLOAD\x10\x18\x12\x15\n\x10INTERNAL_FAILURE\x10\xe5\x07\x12\x14\n\x0fUNKNOWN_FAILURE\x10\xe6\x07\x12\x17\n\x12UNREADABLE_FAILURE\x10\xe7\x07J\x04\x08\x02\x10\x03"\x9a\x02\n\rChannelUpdate\x12\x11\n\tsignature\x18\x01 \x01(\x0c\x12\x12\n\nchain_hash\x18\x02 \x01(\x0c\x12\x13\n\x07\x63han_id\x18\x03 \x01(\x04\x42\x02\x30\x01\x12\x11\n\ttimestamp\x18\x04 \x01(\r\x12\x15\n\rmessage_flags\x18\n \x01(\r\x12\x15\n\rchannel_flags\x18\x05 \x01(\r\x12\x17\n\x0ftime_lock_delta\x18\x06 \x01(\r\x12\x19\n\x11htlc_minimum_msat\x18\x07 \x01(\x04\x12\x10\n\x08\x62\x61se_fee\x18\x08 \x01(\r\x12\x10\n\x08\x66\x65\x65_rate\x18\t \x01(\r\x12\x19\n\x11htlc_maximum_msat\x18\x0b \x01(\x04\x12\x19\n\x11\x65xtra_opaque_data\x18\x0c \x01(\x0c"F\n\nMacaroonId\x12\r\n\x05nonce\x18\x01 \x01(\x0c\x12\x11\n\tstorageId\x18\x02 \x01(\x0c\x12\x16\n\x03ops\x18\x03 \x03(\x0b\x32\t.lnrpc.Op"%\n\x02Op\x12\x0e\n\x06\x65ntity\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x63tions\x18\x02 \x03(\t"k\n\x13\x43heckMacPermRequest\x12\x10\n\x08macaroon\x18\x01 \x01(\x0c\x12.\n\x0bpermissions\x18\x02 \x03(\x0b\x32\x19.lnrpc.MacaroonPermission\x12\x12\n\nfullMethod\x18\x03 \x01(\t"%\n\x14\x43heckMacPermResponse\x12\r\n\x05valid\x18\x01 \x01(\x08"\xea\x01\n\x14RPCMiddlewareRequest\x12\x12\n\nrequest_id\x18\x01 \x01(\x04\x12\x14\n\x0craw_macaroon\x18\x02 \x01(\x0c\x12\x1f\n\x17\x63ustom_caveat_condition\x18\x03 \x01(\t\x12(\n\x0bstream_auth\x18\x04 \x01(\x0b\x32\x11.lnrpc.StreamAuthH\x00\x12$\n\x07request\x18\x05 \x01(\x0b\x32\x11.lnrpc.RPCMessageH\x00\x12%\n\x08response\x18\x06 \x01(\x0b\x32\x11.lnrpc.RPCMessageH\x00\x42\x10\n\x0eintercept_type"%\n\nStreamAuth\x12\x17\n\x0fmethod_full_uri\x18\x01 \x01(\t"`\n\nRPCMessage\x12\x17\n\x0fmethod_full_uri\x18\x01 \x01(\t\x12\x12\n\nstream_rpc\x18\x02 \x01(\x08\x12\x11\n\ttype_name\x18\x03 \x01(\t\x12\x12\n\nserialized\x18\x04 \x01(\x0c"\xa2\x01\n\x15RPCMiddlewareResponse\x12\x12\n\nrequest_id\x18\x01 \x01(\x04\x12\x31\n\x08register\x18\x02 \x01(\x0b\x32\x1d.lnrpc.MiddlewareRegistrationH\x00\x12,\n\x08\x66\x65\x65\x64\x62\x61\x63k\x18\x03 \x01(\x0b\x32\x18.lnrpc.InterceptFeedbackH\x00\x42\x14\n\x12middleware_message"n\n\x16MiddlewareRegistration\x12\x17\n\x0fmiddleware_name\x18\x01 \x01(\t\x12#\n\x1b\x63ustom_macaroon_caveat_name\x18\x02 \x01(\t\x12\x16\n\x0eread_only_mode\x18\x03 \x01(\x08"\\\n\x11InterceptFeedback\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\x18\n\x10replace_response\x18\x02 \x01(\x08\x12\x1e\n\x16replacement_serialized\x18\x03 \x01(\x0c*}\n\x0b\x41\x64\x64ressType\x12\x17\n\x13WITNESS_PUBKEY_HASH\x10\x00\x12\x16\n\x12NESTED_PUBKEY_HASH\x10\x01\x12\x1e\n\x1aUNUSED_WITNESS_PUBKEY_HASH\x10\x02\x12\x1d\n\x19UNUSED_NESTED_PUBKEY_HASH\x10\x03*x\n\x0e\x43ommitmentType\x12\x1b\n\x17UNKNOWN_COMMITMENT_TYPE\x10\x00\x12\n\n\x06LEGACY\x10\x01\x12\x15\n\x11STATIC_REMOTE_KEY\x10\x02\x12\x0b\n\x07\x41NCHORS\x10\x03\x12\x19\n\x15SCRIPT_ENFORCED_LEASE\x10\x04*a\n\tInitiator\x12\x15\n\x11INITIATOR_UNKNOWN\x10\x00\x12\x13\n\x0fINITIATOR_LOCAL\x10\x01\x12\x14\n\x10INITIATOR_REMOTE\x10\x02\x12\x12\n\x0eINITIATOR_BOTH\x10\x03*`\n\x0eResolutionType\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\n\n\x06\x41NCHOR\x10\x01\x12\x11\n\rINCOMING_HTLC\x10\x02\x12\x11\n\rOUTGOING_HTLC\x10\x03\x12\n\n\x06\x43OMMIT\x10\x04*q\n\x11ResolutionOutcome\x12\x13\n\x0fOUTCOME_UNKNOWN\x10\x00\x12\x0b\n\x07\x43LAIMED\x10\x01\x12\r\n\tUNCLAIMED\x10\x02\x12\r\n\tABANDONED\x10\x03\x12\x0f\n\x0b\x46IRST_STAGE\x10\x04\x12\x0b\n\x07TIMEOUT\x10\x05*9\n\x0eNodeMetricType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x1a\n\x16\x42\x45TWEENNESS_CENTRALITY\x10\x01*;\n\x10InvoiceHTLCState\x12\x0c\n\x08\x41\x43\x43\x45PTED\x10\x00\x12\x0b\n\x07SETTLED\x10\x01\x12\x0c\n\x08\x43\x41NCELED\x10\x02*\xd9\x01\n\x14PaymentFailureReason\x12\x17\n\x13\x46\x41ILURE_REASON_NONE\x10\x00\x12\x1a\n\x16\x46\x41ILURE_REASON_TIMEOUT\x10\x01\x12\x1b\n\x17\x46\x41ILURE_REASON_NO_ROUTE\x10\x02\x12\x18\n\x14\x46\x41ILURE_REASON_ERROR\x10\x03\x12,\n(FAILURE_REASON_INCORRECT_PAYMENT_DETAILS\x10\x04\x12\'\n#FAILURE_REASON_INSUFFICIENT_BALANCE\x10\x05*\xcf\x04\n\nFeatureBit\x12\x18\n\x14\x44\x41TALOSS_PROTECT_REQ\x10\x00\x12\x18\n\x14\x44\x41TALOSS_PROTECT_OPT\x10\x01\x12\x17\n\x13INITIAL_ROUING_SYNC\x10\x03\x12\x1f\n\x1bUPFRONT_SHUTDOWN_SCRIPT_REQ\x10\x04\x12\x1f\n\x1bUPFRONT_SHUTDOWN_SCRIPT_OPT\x10\x05\x12\x16\n\x12GOSSIP_QUERIES_REQ\x10\x06\x12\x16\n\x12GOSSIP_QUERIES_OPT\x10\x07\x12\x11\n\rTLV_ONION_REQ\x10\x08\x12\x11\n\rTLV_ONION_OPT\x10\t\x12\x1a\n\x16\x45XT_GOSSIP_QUERIES_REQ\x10\n\x12\x1a\n\x16\x45XT_GOSSIP_QUERIES_OPT\x10\x0b\x12\x19\n\x15STATIC_REMOTE_KEY_REQ\x10\x0c\x12\x19\n\x15STATIC_REMOTE_KEY_OPT\x10\r\x12\x14\n\x10PAYMENT_ADDR_REQ\x10\x0e\x12\x14\n\x10PAYMENT_ADDR_OPT\x10\x0f\x12\x0b\n\x07MPP_REQ\x10\x10\x12\x0b\n\x07MPP_OPT\x10\x11\x12\x16\n\x12WUMBO_CHANNELS_REQ\x10\x12\x12\x16\n\x12WUMBO_CHANNELS_OPT\x10\x13\x12\x0f\n\x0b\x41NCHORS_REQ\x10\x14\x12\x0f\n\x0b\x41NCHORS_OPT\x10\x15\x12\x1d\n\x19\x41NCHORS_ZERO_FEE_HTLC_REQ\x10\x16\x12\x1d\n\x19\x41NCHORS_ZERO_FEE_HTLC_OPT\x10\x17\x12\x0b\n\x07\x41MP_REQ\x10\x1e\x12\x0b\n\x07\x41MP_OPT\x10\x1f*\xac\x01\n\rUpdateFailure\x12\x1a\n\x16UPDATE_FAILURE_UNKNOWN\x10\x00\x12\x1a\n\x16UPDATE_FAILURE_PENDING\x10\x01\x12\x1c\n\x18UPDATE_FAILURE_NOT_FOUND\x10\x02\x12\x1f\n\x1bUPDATE_FAILURE_INTERNAL_ERR\x10\x03\x12$\n UPDATE_FAILURE_INVALID_PARAMETER\x10\x04\x32\xc9%\n\tLightning\x12J\n\rWalletBalance\x12\x1b.lnrpc.WalletBalanceRequest\x1a\x1c.lnrpc.WalletBalanceResponse\x12M\n\x0e\x43hannelBalance\x12\x1c.lnrpc.ChannelBalanceRequest\x1a\x1d.lnrpc.ChannelBalanceResponse\x12K\n\x0fGetTransactions\x12\x1d.lnrpc.GetTransactionsRequest\x1a\x19.lnrpc.TransactionDetails\x12\x44\n\x0b\x45stimateFee\x12\x19.lnrpc.EstimateFeeRequest\x1a\x1a.lnrpc.EstimateFeeResponse\x12>\n\tSendCoins\x12\x17.lnrpc.SendCoinsRequest\x1a\x18.lnrpc.SendCoinsResponse\x12\x44\n\x0bListUnspent\x12\x19.lnrpc.ListUnspentRequest\x1a\x1a.lnrpc.ListUnspentResponse\x12L\n\x15SubscribeTransactions\x12\x1d.lnrpc.GetTransactionsRequest\x1a\x12.lnrpc.Transaction0\x01\x12;\n\x08SendMany\x12\x16.lnrpc.SendManyRequest\x1a\x17.lnrpc.SendManyResponse\x12\x41\n\nNewAddress\x12\x18.lnrpc.NewAddressRequest\x1a\x19.lnrpc.NewAddressResponse\x12\x44\n\x0bSignMessage\x12\x19.lnrpc.SignMessageRequest\x1a\x1a.lnrpc.SignMessageResponse\x12J\n\rVerifyMessage\x12\x1b.lnrpc.VerifyMessageRequest\x1a\x1c.lnrpc.VerifyMessageResponse\x12\x44\n\x0b\x43onnectPeer\x12\x19.lnrpc.ConnectPeerRequest\x1a\x1a.lnrpc.ConnectPeerResponse\x12M\n\x0e\x44isconnectPeer\x12\x1c.lnrpc.DisconnectPeerRequest\x1a\x1d.lnrpc.DisconnectPeerResponse\x12>\n\tListPeers\x12\x17.lnrpc.ListPeersRequest\x1a\x18.lnrpc.ListPeersResponse\x12G\n\x13SubscribePeerEvents\x12\x1c.lnrpc.PeerEventSubscription\x1a\x10.lnrpc.PeerEvent0\x01\x12\x38\n\x07GetInfo\x12\x15.lnrpc.GetInfoRequest\x1a\x16.lnrpc.GetInfoResponse\x12P\n\x0fGetRecoveryInfo\x12\x1d.lnrpc.GetRecoveryInfoRequest\x1a\x1e.lnrpc.GetRecoveryInfoResponse\x12P\n\x0fPendingChannels\x12\x1d.lnrpc.PendingChannelsRequest\x1a\x1e.lnrpc.PendingChannelsResponse\x12G\n\x0cListChannels\x12\x1a.lnrpc.ListChannelsRequest\x1a\x1b.lnrpc.ListChannelsResponse\x12V\n\x16SubscribeChannelEvents\x12\x1f.lnrpc.ChannelEventSubscription\x1a\x19.lnrpc.ChannelEventUpdate0\x01\x12M\n\x0e\x43losedChannels\x12\x1c.lnrpc.ClosedChannelsRequest\x1a\x1d.lnrpc.ClosedChannelsResponse\x12\x41\n\x0fOpenChannelSync\x12\x19.lnrpc.OpenChannelRequest\x1a\x13.lnrpc.ChannelPoint\x12\x43\n\x0bOpenChannel\x12\x19.lnrpc.OpenChannelRequest\x1a\x17.lnrpc.OpenStatusUpdate0\x01\x12S\n\x10\x42\x61tchOpenChannel\x12\x1e.lnrpc.BatchOpenChannelRequest\x1a\x1f.lnrpc.BatchOpenChannelResponse\x12L\n\x10\x46undingStateStep\x12\x1b.lnrpc.FundingTransitionMsg\x1a\x1b.lnrpc.FundingStateStepResp\x12P\n\x0f\x43hannelAcceptor\x12\x1c.lnrpc.ChannelAcceptResponse\x1a\x1b.lnrpc.ChannelAcceptRequest(\x01\x30\x01\x12\x46\n\x0c\x43loseChannel\x12\x1a.lnrpc.CloseChannelRequest\x1a\x18.lnrpc.CloseStatusUpdate0\x01\x12M\n\x0e\x41\x62\x61ndonChannel\x12\x1c.lnrpc.AbandonChannelRequest\x1a\x1d.lnrpc.AbandonChannelResponse\x12?\n\x0bSendPayment\x12\x12.lnrpc.SendRequest\x1a\x13.lnrpc.SendResponse"\x03\x88\x02\x01(\x01\x30\x01\x12:\n\x0fSendPaymentSync\x12\x12.lnrpc.SendRequest\x1a\x13.lnrpc.SendResponse\x12\x46\n\x0bSendToRoute\x12\x19.lnrpc.SendToRouteRequest\x1a\x13.lnrpc.SendResponse"\x03\x88\x02\x01(\x01\x30\x01\x12\x41\n\x0fSendToRouteSync\x12\x19.lnrpc.SendToRouteRequest\x1a\x13.lnrpc.SendResponse\x12\x37\n\nAddInvoice\x12\x0e.lnrpc.Invoice\x1a\x19.lnrpc.AddInvoiceResponse\x12\x45\n\x0cListInvoices\x12\x19.lnrpc.ListInvoiceRequest\x1a\x1a.lnrpc.ListInvoiceResponse\x12\x33\n\rLookupInvoice\x12\x12.lnrpc.PaymentHash\x1a\x0e.lnrpc.Invoice\x12\x41\n\x11SubscribeInvoices\x12\x1a.lnrpc.InvoiceSubscription\x1a\x0e.lnrpc.Invoice0\x01\x12\x32\n\x0c\x44\x65\x63odePayReq\x12\x13.lnrpc.PayReqString\x1a\r.lnrpc.PayReq\x12G\n\x0cListPayments\x12\x1a.lnrpc.ListPaymentsRequest\x1a\x1b.lnrpc.ListPaymentsResponse\x12J\n\rDeletePayment\x12\x1b.lnrpc.DeletePaymentRequest\x1a\x1c.lnrpc.DeletePaymentResponse\x12V\n\x11\x44\x65leteAllPayments\x12\x1f.lnrpc.DeleteAllPaymentsRequest\x1a .lnrpc.DeleteAllPaymentsResponse\x12@\n\rDescribeGraph\x12\x1a.lnrpc.ChannelGraphRequest\x1a\x13.lnrpc.ChannelGraph\x12G\n\x0eGetNodeMetrics\x12\x19.lnrpc.NodeMetricsRequest\x1a\x1a.lnrpc.NodeMetricsResponse\x12\x39\n\x0bGetChanInfo\x12\x16.lnrpc.ChanInfoRequest\x1a\x12.lnrpc.ChannelEdge\x12\x36\n\x0bGetNodeInfo\x12\x16.lnrpc.NodeInfoRequest\x1a\x0f.lnrpc.NodeInfo\x12\x44\n\x0bQueryRoutes\x12\x19.lnrpc.QueryRoutesRequest\x1a\x1a.lnrpc.QueryRoutesResponse\x12?\n\x0eGetNetworkInfo\x12\x19.lnrpc.NetworkInfoRequest\x1a\x12.lnrpc.NetworkInfo\x12\x35\n\nStopDaemon\x12\x12.lnrpc.StopRequest\x1a\x13.lnrpc.StopResponse\x12W\n\x15SubscribeChannelGraph\x12 .lnrpc.GraphTopologySubscription\x1a\x1a.lnrpc.GraphTopologyUpdate0\x01\x12\x41\n\nDebugLevel\x12\x18.lnrpc.DebugLevelRequest\x1a\x19.lnrpc.DebugLevelResponse\x12>\n\tFeeReport\x12\x17.lnrpc.FeeReportRequest\x1a\x18.lnrpc.FeeReportResponse\x12N\n\x13UpdateChannelPolicy\x12\x1a.lnrpc.PolicyUpdateRequest\x1a\x1b.lnrpc.PolicyUpdateResponse\x12V\n\x11\x46orwardingHistory\x12\x1f.lnrpc.ForwardingHistoryRequest\x1a .lnrpc.ForwardingHistoryResponse\x12N\n\x13\x45xportChannelBackup\x12!.lnrpc.ExportChannelBackupRequest\x1a\x14.lnrpc.ChannelBackup\x12T\n\x17\x45xportAllChannelBackups\x12\x1e.lnrpc.ChanBackupExportRequest\x1a\x19.lnrpc.ChanBackupSnapshot\x12N\n\x10VerifyChanBackup\x12\x19.lnrpc.ChanBackupSnapshot\x1a\x1f.lnrpc.VerifyChanBackupResponse\x12V\n\x15RestoreChannelBackups\x12\x1f.lnrpc.RestoreChanBackupRequest\x1a\x1c.lnrpc.RestoreBackupResponse\x12X\n\x17SubscribeChannelBackups\x12 .lnrpc.ChannelBackupSubscription\x1a\x19.lnrpc.ChanBackupSnapshot0\x01\x12G\n\x0c\x42\x61keMacaroon\x12\x1a.lnrpc.BakeMacaroonRequest\x1a\x1b.lnrpc.BakeMacaroonResponse\x12P\n\x0fListMacaroonIDs\x12\x1d.lnrpc.ListMacaroonIDsRequest\x1a\x1e.lnrpc.ListMacaroonIDsResponse\x12S\n\x10\x44\x65leteMacaroonID\x12\x1e.lnrpc.DeleteMacaroonIDRequest\x1a\x1f.lnrpc.DeleteMacaroonIDResponse\x12P\n\x0fListPermissions\x12\x1d.lnrpc.ListPermissionsRequest\x1a\x1e.lnrpc.ListPermissionsResponse\x12S\n\x18\x43heckMacaroonPermissions\x12\x1a.lnrpc.CheckMacPermRequest\x1a\x1b.lnrpc.CheckMacPermResponse\x12V\n\x15RegisterRPCMiddleware\x12\x1c.lnrpc.RPCMiddlewareResponse\x1a\x1b.lnrpc.RPCMiddlewareRequest(\x01\x30\x01\x12V\n\x11SendCustomMessage\x12\x1f.lnrpc.SendCustomMessageRequest\x1a .lnrpc.SendCustomMessageResponse\x12X\n\x17SubscribeCustomMessages\x12%.lnrpc.SubscribeCustomMessagesRequest\x1a\x14.lnrpc.CustomMessage0\x01\x42\'Z%github.com/lightningnetwork/lnd/lnrpcb\x06proto3', +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n\x0flightning.proto\x12\x05lnrpc" \n\x1eSubscribeCustomMessagesRequest"9\n\rCustomMessage\x12\x0c\n\x04peer\x18\x01 \x01(\x0c\x12\x0c\n\x04type\x18\x02 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c"D\n\x18SendCustomMessageRequest\x12\x0c\n\x04peer\x18\x01 \x01(\x0c\x12\x0c\n\x04type\x18\x02 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c"\x1b\n\x19SendCustomMessageResponse"\xa2\x01\n\x04Utxo\x12(\n\x0c\x61\x64\x64ress_type\x18\x01 \x01(\x0e\x32\x12.lnrpc.AddressType\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\x12\x12\n\namount_sat\x18\x03 \x01(\x03\x12\x11\n\tpk_script\x18\x04 \x01(\t\x12!\n\x08outpoint\x18\x05 \x01(\x0b\x32\x0f.lnrpc.OutPoint\x12\x15\n\rconfirmations\x18\x06 \x01(\x03"\x9e\x01\n\x0cOutputDetail\x12,\n\x0boutput_type\x18\x01 \x01(\x0e\x32\x17.lnrpc.OutputScriptType\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\x12\x11\n\tpk_script\x18\x03 \x01(\t\x12\x14\n\x0coutput_index\x18\x04 \x01(\x03\x12\x0e\n\x06\x61mount\x18\x05 \x01(\x03\x12\x16\n\x0eis_our_address\x18\x06 \x01(\x08"\xbc\x02\n\x0bTransaction\x12\x0f\n\x07tx_hash\x18\x01 \x01(\t\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x03\x12\x19\n\x11num_confirmations\x18\x03 \x01(\x05\x12\x12\n\nblock_hash\x18\x04 \x01(\t\x12\x14\n\x0c\x62lock_height\x18\x05 \x01(\x05\x12\x12\n\ntime_stamp\x18\x06 \x01(\x03\x12\x12\n\ntotal_fees\x18\x07 \x01(\x03\x12\x1a\n\x0e\x64\x65st_addresses\x18\x08 \x03(\tB\x02\x18\x01\x12+\n\x0eoutput_details\x18\x0b \x03(\x0b\x32\x13.lnrpc.OutputDetail\x12\x12\n\nraw_tx_hex\x18\t \x01(\t\x12\r\n\x05label\x18\n \x01(\t\x12\x33\n\x12previous_outpoints\x18\x0c \x03(\x0b\x32\x17.lnrpc.PreviousOutPoint"S\n\x16GetTransactionsRequest\x12\x14\n\x0cstart_height\x18\x01 \x01(\x05\x12\x12\n\nend_height\x18\x02 \x01(\x05\x12\x0f\n\x07\x61\x63\x63ount\x18\x03 \x01(\t">\n\x12TransactionDetails\x12(\n\x0ctransactions\x18\x01 \x03(\x0b\x32\x12.lnrpc.Transaction"M\n\x08\x46\x65\x65Limit\x12\x0f\n\x05\x66ixed\x18\x01 \x01(\x03H\x00\x12\x14\n\nfixed_msat\x18\x03 \x01(\x03H\x00\x12\x11\n\x07percent\x18\x02 \x01(\x03H\x00\x42\x07\n\x05limit"\x8a\x04\n\x0bSendRequest\x12\x0c\n\x04\x64\x65st\x18\x01 \x01(\x0c\x12\x17\n\x0b\x64\x65st_string\x18\x02 \x01(\tB\x02\x18\x01\x12\x0b\n\x03\x61mt\x18\x03 \x01(\x03\x12\x10\n\x08\x61mt_msat\x18\x0c \x01(\x03\x12\x14\n\x0cpayment_hash\x18\x04 \x01(\x0c\x12\x1f\n\x13payment_hash_string\x18\x05 \x01(\tB\x02\x18\x01\x12\x17\n\x0fpayment_request\x18\x06 \x01(\t\x12\x18\n\x10\x66inal_cltv_delta\x18\x07 \x01(\x05\x12"\n\tfee_limit\x18\x08 \x01(\x0b\x32\x0f.lnrpc.FeeLimit\x12\x1c\n\x10outgoing_chan_id\x18\t \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0flast_hop_pubkey\x18\r \x01(\x0c\x12\x12\n\ncltv_limit\x18\n \x01(\r\x12\x46\n\x13\x64\x65st_custom_records\x18\x0b \x03(\x0b\x32).lnrpc.SendRequest.DestCustomRecordsEntry\x12\x1a\n\x12\x61llow_self_payment\x18\x0e \x01(\x08\x12(\n\rdest_features\x18\x0f \x03(\x0e\x32\x11.lnrpc.FeatureBit\x12\x14\n\x0cpayment_addr\x18\x10 \x01(\x0c\x1a\x38\n\x16\x44\x65stCustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01"z\n\x0cSendResponse\x12\x15\n\rpayment_error\x18\x01 \x01(\t\x12\x18\n\x10payment_preimage\x18\x02 \x01(\x0c\x12#\n\rpayment_route\x18\x03 \x01(\x0b\x32\x0c.lnrpc.Route\x12\x14\n\x0cpayment_hash\x18\x04 \x01(\x0c"n\n\x12SendToRouteRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x1f\n\x13payment_hash_string\x18\x02 \x01(\tB\x02\x18\x01\x12\x1b\n\x05route\x18\x04 \x01(\x0b\x32\x0c.lnrpc.RouteJ\x04\x08\x03\x10\x04"\xe5\x02\n\x14\x43hannelAcceptRequest\x12\x13\n\x0bnode_pubkey\x18\x01 \x01(\x0c\x12\x12\n\nchain_hash\x18\x02 \x01(\x0c\x12\x17\n\x0fpending_chan_id\x18\x03 \x01(\x0c\x12\x13\n\x0b\x66unding_amt\x18\x04 \x01(\x04\x12\x10\n\x08push_amt\x18\x05 \x01(\x04\x12\x12\n\ndust_limit\x18\x06 \x01(\x04\x12\x1b\n\x13max_value_in_flight\x18\x07 \x01(\x04\x12\x17\n\x0f\x63hannel_reserve\x18\x08 \x01(\x04\x12\x10\n\x08min_htlc\x18\t \x01(\x04\x12\x12\n\nfee_per_kw\x18\n \x01(\x04\x12\x11\n\tcsv_delay\x18\x0b \x01(\r\x12\x1a\n\x12max_accepted_htlcs\x18\x0c \x01(\r\x12\x15\n\rchannel_flags\x18\r \x01(\r\x12.\n\x0f\x63ommitment_type\x18\x0e \x01(\x0e\x32\x15.lnrpc.CommitmentType"\x87\x02\n\x15\x43hannelAcceptResponse\x12\x0e\n\x06\x61\x63\x63\x65pt\x18\x01 \x01(\x08\x12\x17\n\x0fpending_chan_id\x18\x02 \x01(\x0c\x12\r\n\x05\x65rror\x18\x03 \x01(\t\x12\x18\n\x10upfront_shutdown\x18\x04 \x01(\t\x12\x11\n\tcsv_delay\x18\x05 \x01(\r\x12\x13\n\x0breserve_sat\x18\x06 \x01(\x04\x12\x1a\n\x12in_flight_max_msat\x18\x07 \x01(\x04\x12\x16\n\x0emax_htlc_count\x18\x08 \x01(\r\x12\x13\n\x0bmin_htlc_in\x18\t \x01(\x04\x12\x18\n\x10min_accept_depth\x18\n \x01(\r\x12\x11\n\tzero_conf\x18\x0b \x01(\x08"n\n\x0c\x43hannelPoint\x12\x1c\n\x12\x66unding_txid_bytes\x18\x01 \x01(\x0cH\x00\x12\x1a\n\x10\x66unding_txid_str\x18\x02 \x01(\tH\x00\x12\x14\n\x0coutput_index\x18\x03 \x01(\rB\x0e\n\x0c\x66unding_txid"F\n\x08OutPoint\x12\x12\n\ntxid_bytes\x18\x01 \x01(\x0c\x12\x10\n\x08txid_str\x18\x02 \x01(\t\x12\x14\n\x0coutput_index\x18\x03 \x01(\r";\n\x10PreviousOutPoint\x12\x10\n\x08outpoint\x18\x01 \x01(\t\x12\x15\n\ris_our_output\x18\x02 \x01(\x08"0\n\x10LightningAddress\x12\x0e\n\x06pubkey\x18\x01 \x01(\t\x12\x0c\n\x04host\x18\x02 \x01(\t"\xcf\x01\n\x12\x45stimateFeeRequest\x12\x41\n\x0c\x41\x64\x64rToAmount\x18\x01 \x03(\x0b\x32+.lnrpc.EstimateFeeRequest.AddrToAmountEntry\x12\x13\n\x0btarget_conf\x18\x02 \x01(\x05\x12\x11\n\tmin_confs\x18\x03 \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\x04 \x01(\x08\x1a\x33\n\x11\x41\x64\x64rToAmountEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01"_\n\x13\x45stimateFeeResponse\x12\x0f\n\x07\x66\x65\x65_sat\x18\x01 \x01(\x03\x12 \n\x14\x66\x65\x65rate_sat_per_byte\x18\x02 \x01(\x03\x42\x02\x18\x01\x12\x15\n\rsat_per_vbyte\x18\x03 \x01(\x04"\x89\x02\n\x0fSendManyRequest\x12>\n\x0c\x41\x64\x64rToAmount\x18\x01 \x03(\x0b\x32(.lnrpc.SendManyRequest.AddrToAmountEntry\x12\x13\n\x0btarget_conf\x18\x03 \x01(\x05\x12\x15\n\rsat_per_vbyte\x18\x04 \x01(\x04\x12\x18\n\x0csat_per_byte\x18\x05 \x01(\x03\x42\x02\x18\x01\x12\r\n\x05label\x18\x06 \x01(\t\x12\x11\n\tmin_confs\x18\x07 \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\x08 \x01(\x08\x1a\x33\n\x11\x41\x64\x64rToAmountEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01" \n\x10SendManyResponse\x12\x0c\n\x04txid\x18\x01 \x01(\t"\xc5\x01\n\x10SendCoinsRequest\x12\x0c\n\x04\x61\x64\x64r\x18\x01 \x01(\t\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x03\x12\x13\n\x0btarget_conf\x18\x03 \x01(\x05\x12\x15\n\rsat_per_vbyte\x18\x04 \x01(\x04\x12\x18\n\x0csat_per_byte\x18\x05 \x01(\x03\x42\x02\x18\x01\x12\x10\n\x08send_all\x18\x06 \x01(\x08\x12\r\n\x05label\x18\x07 \x01(\t\x12\x11\n\tmin_confs\x18\x08 \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\t \x01(\x08"!\n\x11SendCoinsResponse\x12\x0c\n\x04txid\x18\x01 \x01(\t"K\n\x12ListUnspentRequest\x12\x11\n\tmin_confs\x18\x01 \x01(\x05\x12\x11\n\tmax_confs\x18\x02 \x01(\x05\x12\x0f\n\x07\x61\x63\x63ount\x18\x03 \x01(\t"1\n\x13ListUnspentResponse\x12\x1a\n\x05utxos\x18\x01 \x03(\x0b\x32\x0b.lnrpc.Utxo"F\n\x11NewAddressRequest\x12 \n\x04type\x18\x01 \x01(\x0e\x32\x12.lnrpc.AddressType\x12\x0f\n\x07\x61\x63\x63ount\x18\x02 \x01(\t"%\n\x12NewAddressResponse\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t"6\n\x12SignMessageRequest\x12\x0b\n\x03msg\x18\x01 \x01(\x0c\x12\x13\n\x0bsingle_hash\x18\x02 \x01(\x08"(\n\x13SignMessageResponse\x12\x11\n\tsignature\x18\x01 \x01(\t"6\n\x14VerifyMessageRequest\x12\x0b\n\x03msg\x18\x01 \x01(\x0c\x12\x11\n\tsignature\x18\x02 \x01(\t"6\n\x15VerifyMessageResponse\x12\r\n\x05valid\x18\x01 \x01(\x08\x12\x0e\n\x06pubkey\x18\x02 \x01(\t"Z\n\x12\x43onnectPeerRequest\x12%\n\x04\x61\x64\x64r\x18\x01 \x01(\x0b\x32\x17.lnrpc.LightningAddress\x12\x0c\n\x04perm\x18\x02 \x01(\x08\x12\x0f\n\x07timeout\x18\x03 \x01(\x04"\x15\n\x13\x43onnectPeerResponse"(\n\x15\x44isconnectPeerRequest\x12\x0f\n\x07pub_key\x18\x01 \x01(\t"\x18\n\x16\x44isconnectPeerResponse"\xa5\x01\n\x04HTLC\x12\x10\n\x08incoming\x18\x01 \x01(\x08\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x03\x12\x11\n\thash_lock\x18\x03 \x01(\x0c\x12\x19\n\x11\x65xpiration_height\x18\x04 \x01(\r\x12\x12\n\nhtlc_index\x18\x05 \x01(\x04\x12\x1a\n\x12\x66orwarding_channel\x18\x06 \x01(\x04\x12\x1d\n\x15\x66orwarding_htlc_index\x18\x07 \x01(\x04"\xaa\x01\n\x12\x43hannelConstraints\x12\x11\n\tcsv_delay\x18\x01 \x01(\r\x12\x18\n\x10\x63han_reserve_sat\x18\x02 \x01(\x04\x12\x16\n\x0e\x64ust_limit_sat\x18\x03 \x01(\x04\x12\x1c\n\x14max_pending_amt_msat\x18\x04 \x01(\x04\x12\x15\n\rmin_htlc_msat\x18\x05 \x01(\x04\x12\x1a\n\x12max_accepted_htlcs\x18\x06 \x01(\r"\xb0\x06\n\x07\x43hannel\x12\x0e\n\x06\x61\x63tive\x18\x01 \x01(\x08\x12\x15\n\rremote_pubkey\x18\x02 \x01(\t\x12\x15\n\rchannel_point\x18\x03 \x01(\t\x12\x13\n\x07\x63han_id\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x10\n\x08\x63\x61pacity\x18\x05 \x01(\x03\x12\x15\n\rlocal_balance\x18\x06 \x01(\x03\x12\x16\n\x0eremote_balance\x18\x07 \x01(\x03\x12\x12\n\ncommit_fee\x18\x08 \x01(\x03\x12\x15\n\rcommit_weight\x18\t \x01(\x03\x12\x12\n\nfee_per_kw\x18\n \x01(\x03\x12\x19\n\x11unsettled_balance\x18\x0b \x01(\x03\x12\x1b\n\x13total_satoshis_sent\x18\x0c \x01(\x03\x12\x1f\n\x17total_satoshis_received\x18\r \x01(\x03\x12\x13\n\x0bnum_updates\x18\x0e \x01(\x04\x12"\n\rpending_htlcs\x18\x0f \x03(\x0b\x32\x0b.lnrpc.HTLC\x12\x15\n\tcsv_delay\x18\x10 \x01(\rB\x02\x18\x01\x12\x0f\n\x07private\x18\x11 \x01(\x08\x12\x11\n\tinitiator\x18\x12 \x01(\x08\x12\x19\n\x11\x63han_status_flags\x18\x13 \x01(\t\x12"\n\x16local_chan_reserve_sat\x18\x14 \x01(\x03\x42\x02\x18\x01\x12#\n\x17remote_chan_reserve_sat\x18\x15 \x01(\x03\x42\x02\x18\x01\x12\x1d\n\x11static_remote_key\x18\x16 \x01(\x08\x42\x02\x18\x01\x12.\n\x0f\x63ommitment_type\x18\x1a \x01(\x0e\x32\x15.lnrpc.CommitmentType\x12\x10\n\x08lifetime\x18\x17 \x01(\x03\x12\x0e\n\x06uptime\x18\x18 \x01(\x03\x12\x15\n\rclose_address\x18\x19 \x01(\t\x12\x17\n\x0fpush_amount_sat\x18\x1b \x01(\x04\x12\x13\n\x0bthaw_height\x18\x1c \x01(\r\x12\x34\n\x11local_constraints\x18\x1d \x01(\x0b\x32\x19.lnrpc.ChannelConstraints\x12\x35\n\x12remote_constraints\x18\x1e \x01(\x0b\x32\x19.lnrpc.ChannelConstraints"z\n\x13ListChannelsRequest\x12\x13\n\x0b\x61\x63tive_only\x18\x01 \x01(\x08\x12\x15\n\rinactive_only\x18\x02 \x01(\x08\x12\x13\n\x0bpublic_only\x18\x03 \x01(\x08\x12\x14\n\x0cprivate_only\x18\x04 \x01(\x08\x12\x0c\n\x04peer\x18\x05 \x01(\x0c"8\n\x14ListChannelsResponse\x12 \n\x08\x63hannels\x18\x0b \x03(\x0b\x32\x0e.lnrpc.Channel"\xa9\x04\n\x13\x43hannelCloseSummary\x12\x15\n\rchannel_point\x18\x01 \x01(\t\x12\x13\n\x07\x63han_id\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x12\n\nchain_hash\x18\x03 \x01(\t\x12\x17\n\x0f\x63losing_tx_hash\x18\x04 \x01(\t\x12\x15\n\rremote_pubkey\x18\x05 \x01(\t\x12\x10\n\x08\x63\x61pacity\x18\x06 \x01(\x03\x12\x14\n\x0c\x63lose_height\x18\x07 \x01(\r\x12\x17\n\x0fsettled_balance\x18\x08 \x01(\x03\x12\x1b\n\x13time_locked_balance\x18\t \x01(\x03\x12:\n\nclose_type\x18\n \x01(\x0e\x32&.lnrpc.ChannelCloseSummary.ClosureType\x12(\n\x0eopen_initiator\x18\x0b \x01(\x0e\x32\x10.lnrpc.Initiator\x12)\n\x0f\x63lose_initiator\x18\x0c \x01(\x0e\x32\x10.lnrpc.Initiator\x12&\n\x0bresolutions\x18\r \x03(\x0b\x32\x11.lnrpc.Resolution"\x8a\x01\n\x0b\x43losureType\x12\x15\n\x11\x43OOPERATIVE_CLOSE\x10\x00\x12\x15\n\x11LOCAL_FORCE_CLOSE\x10\x01\x12\x16\n\x12REMOTE_FORCE_CLOSE\x10\x02\x12\x10\n\x0c\x42REACH_CLOSE\x10\x03\x12\x14\n\x10\x46UNDING_CANCELED\x10\x04\x12\r\n\tABANDONED\x10\x05"\xb2\x01\n\nResolution\x12.\n\x0fresolution_type\x18\x01 \x01(\x0e\x32\x15.lnrpc.ResolutionType\x12)\n\x07outcome\x18\x02 \x01(\x0e\x32\x18.lnrpc.ResolutionOutcome\x12!\n\x08outpoint\x18\x03 \x01(\x0b\x32\x0f.lnrpc.OutPoint\x12\x12\n\namount_sat\x18\x04 \x01(\x04\x12\x12\n\nsweep_txid\x18\x05 \x01(\t"\x94\x01\n\x15\x43losedChannelsRequest\x12\x13\n\x0b\x63ooperative\x18\x01 \x01(\x08\x12\x13\n\x0blocal_force\x18\x02 \x01(\x08\x12\x14\n\x0cremote_force\x18\x03 \x01(\x08\x12\x0e\n\x06\x62reach\x18\x04 \x01(\x08\x12\x18\n\x10\x66unding_canceled\x18\x05 \x01(\x08\x12\x11\n\tabandoned\x18\x06 \x01(\x08"F\n\x16\x43losedChannelsResponse\x12,\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x1a.lnrpc.ChannelCloseSummary"\xef\x03\n\x04Peer\x12\x0f\n\x07pub_key\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x64\x64ress\x18\x03 \x01(\t\x12\x12\n\nbytes_sent\x18\x04 \x01(\x04\x12\x12\n\nbytes_recv\x18\x05 \x01(\x04\x12\x10\n\x08sat_sent\x18\x06 \x01(\x03\x12\x10\n\x08sat_recv\x18\x07 \x01(\x03\x12\x0f\n\x07inbound\x18\x08 \x01(\x08\x12\x11\n\tping_time\x18\t \x01(\x03\x12\'\n\tsync_type\x18\n \x01(\x0e\x32\x14.lnrpc.Peer.SyncType\x12+\n\x08\x66\x65\x61tures\x18\x0b \x03(\x0b\x32\x19.lnrpc.Peer.FeaturesEntry\x12\'\n\x06\x65rrors\x18\x0c \x03(\x0b\x32\x17.lnrpc.TimestampedError\x12\x12\n\nflap_count\x18\r \x01(\x05\x12\x14\n\x0clast_flap_ns\x18\x0e \x01(\x03\x12\x19\n\x11last_ping_payload\x18\x0f \x01(\x0c\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01"P\n\x08SyncType\x12\x10\n\x0cUNKNOWN_SYNC\x10\x00\x12\x0f\n\x0b\x41\x43TIVE_SYNC\x10\x01\x12\x10\n\x0cPASSIVE_SYNC\x10\x02\x12\x0f\n\x0bPINNED_SYNC\x10\x03"4\n\x10TimestampedError\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\r\n\x05\x65rror\x18\x02 \x01(\t"(\n\x10ListPeersRequest\x12\x14\n\x0clatest_error\x18\x01 \x01(\x08"/\n\x11ListPeersResponse\x12\x1a\n\x05peers\x18\x01 \x03(\x0b\x32\x0b.lnrpc.Peer"\x17\n\x15PeerEventSubscription"v\n\tPeerEvent\x12\x0f\n\x07pub_key\x18\x01 \x01(\t\x12(\n\x04type\x18\x02 \x01(\x0e\x32\x1a.lnrpc.PeerEvent.EventType".\n\tEventType\x12\x0f\n\x0bPEER_ONLINE\x10\x00\x12\x10\n\x0cPEER_OFFLINE\x10\x01"\x10\n\x0eGetInfoRequest"\xb8\x04\n\x0fGetInfoResponse\x12\x0f\n\x07version\x18\x0e \x01(\t\x12\x13\n\x0b\x63ommit_hash\x18\x14 \x01(\t\x12\x17\n\x0fidentity_pubkey\x18\x01 \x01(\t\x12\r\n\x05\x61lias\x18\x02 \x01(\t\x12\r\n\x05\x63olor\x18\x11 \x01(\t\x12\x1c\n\x14num_pending_channels\x18\x03 \x01(\r\x12\x1b\n\x13num_active_channels\x18\x04 \x01(\r\x12\x1d\n\x15num_inactive_channels\x18\x0f \x01(\r\x12\x11\n\tnum_peers\x18\x05 \x01(\r\x12\x14\n\x0c\x62lock_height\x18\x06 \x01(\r\x12\x12\n\nblock_hash\x18\x08 \x01(\t\x12\x1d\n\x15\x62\x65st_header_timestamp\x18\r \x01(\x03\x12\x17\n\x0fsynced_to_chain\x18\t \x01(\x08\x12\x17\n\x0fsynced_to_graph\x18\x12 \x01(\x08\x12\x13\n\x07testnet\x18\n \x01(\x08\x42\x02\x18\x01\x12\x1c\n\x06\x63hains\x18\x10 \x03(\x0b\x32\x0c.lnrpc.Chain\x12\x0c\n\x04uris\x18\x0c \x03(\t\x12\x36\n\x08\x66\x65\x61tures\x18\x13 \x03(\x0b\x32$.lnrpc.GetInfoResponse.FeaturesEntry\x12 \n\x18require_htlc_interceptor\x18\x15 \x01(\x08\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01J\x04\x08\x0b\x10\x0c"\x18\n\x16GetRecoveryInfoRequest"]\n\x17GetRecoveryInfoResponse\x12\x15\n\rrecovery_mode\x18\x01 \x01(\x08\x12\x19\n\x11recovery_finished\x18\x02 \x01(\x08\x12\x10\n\x08progress\x18\x03 \x01(\x01"\'\n\x05\x43hain\x12\r\n\x05\x63hain\x18\x01 \x01(\t\x12\x0f\n\x07network\x18\x02 \x01(\t"U\n\x12\x43onfirmationUpdate\x12\x11\n\tblock_sha\x18\x01 \x01(\x0c\x12\x14\n\x0c\x62lock_height\x18\x02 \x01(\x05\x12\x16\n\x0enum_confs_left\x18\x03 \x01(\r"?\n\x11\x43hannelOpenUpdate\x12*\n\rchannel_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint";\n\x12\x43hannelCloseUpdate\x12\x14\n\x0c\x63losing_txid\x18\x01 \x01(\x0c\x12\x0f\n\x07success\x18\x02 \x01(\x08"\xb0\x01\n\x13\x43loseChannelRequest\x12*\n\rchannel_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12\r\n\x05\x66orce\x18\x02 \x01(\x08\x12\x13\n\x0btarget_conf\x18\x03 \x01(\x05\x12\x18\n\x0csat_per_byte\x18\x04 \x01(\x03\x42\x02\x18\x01\x12\x18\n\x10\x64\x65livery_address\x18\x05 \x01(\t\x12\x15\n\rsat_per_vbyte\x18\x06 \x01(\x04"}\n\x11\x43loseStatusUpdate\x12-\n\rclose_pending\x18\x01 \x01(\x0b\x32\x14.lnrpc.PendingUpdateH\x00\x12/\n\nchan_close\x18\x03 \x01(\x0b\x32\x19.lnrpc.ChannelCloseUpdateH\x00\x42\x08\n\x06update"3\n\rPendingUpdate\x12\x0c\n\x04txid\x18\x01 \x01(\x0c\x12\x14\n\x0coutput_index\x18\x02 \x01(\r"T\n\x13ReadyForPsbtFunding\x12\x17\n\x0f\x66unding_address\x18\x01 \x01(\t\x12\x16\n\x0e\x66unding_amount\x18\x02 \x01(\x03\x12\x0c\n\x04psbt\x18\x03 \x01(\x0c"\xad\x01\n\x17\x42\x61tchOpenChannelRequest\x12)\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x17.lnrpc.BatchOpenChannel\x12\x13\n\x0btarget_conf\x18\x02 \x01(\x05\x12\x15\n\rsat_per_vbyte\x18\x03 \x01(\x03\x12\x11\n\tmin_confs\x18\x04 \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\x05 \x01(\x08\x12\r\n\x05label\x18\x06 \x01(\t"\xf9\x01\n\x10\x42\x61tchOpenChannel\x12\x13\n\x0bnode_pubkey\x18\x01 \x01(\x0c\x12\x1c\n\x14local_funding_amount\x18\x02 \x01(\x03\x12\x10\n\x08push_sat\x18\x03 \x01(\x03\x12\x0f\n\x07private\x18\x04 \x01(\x08\x12\x15\n\rmin_htlc_msat\x18\x05 \x01(\x03\x12\x18\n\x10remote_csv_delay\x18\x06 \x01(\r\x12\x15\n\rclose_address\x18\x07 \x01(\t\x12\x17\n\x0fpending_chan_id\x18\x08 \x01(\x0c\x12.\n\x0f\x63ommitment_type\x18\t \x01(\x0e\x32\x15.lnrpc.CommitmentType"J\n\x18\x42\x61tchOpenChannelResponse\x12.\n\x10pending_channels\x18\x01 \x03(\x0b\x32\x14.lnrpc.PendingUpdate"\xa1\x04\n\x12OpenChannelRequest\x12\x15\n\rsat_per_vbyte\x18\x01 \x01(\x04\x12\x13\n\x0bnode_pubkey\x18\x02 \x01(\x0c\x12\x1e\n\x12node_pubkey_string\x18\x03 \x01(\tB\x02\x18\x01\x12\x1c\n\x14local_funding_amount\x18\x04 \x01(\x03\x12\x10\n\x08push_sat\x18\x05 \x01(\x03\x12\x13\n\x0btarget_conf\x18\x06 \x01(\x05\x12\x18\n\x0csat_per_byte\x18\x07 \x01(\x03\x42\x02\x18\x01\x12\x0f\n\x07private\x18\x08 \x01(\x08\x12\x15\n\rmin_htlc_msat\x18\t \x01(\x03\x12\x18\n\x10remote_csv_delay\x18\n \x01(\r\x12\x11\n\tmin_confs\x18\x0b \x01(\x05\x12\x19\n\x11spend_unconfirmed\x18\x0c \x01(\x08\x12\x15\n\rclose_address\x18\r \x01(\t\x12(\n\x0c\x66unding_shim\x18\x0e \x01(\x0b\x32\x12.lnrpc.FundingShim\x12\'\n\x1fremote_max_value_in_flight_msat\x18\x0f \x01(\x04\x12\x18\n\x10remote_max_htlcs\x18\x10 \x01(\r\x12\x15\n\rmax_local_csv\x18\x11 \x01(\r\x12.\n\x0f\x63ommitment_type\x18\x12 \x01(\x0e\x32\x15.lnrpc.CommitmentType\x12\x11\n\tzero_conf\x18\x13 \x01(\x08\x12\x12\n\nscid_alias\x18\x14 \x01(\x08"\xc3\x01\n\x10OpenStatusUpdate\x12,\n\x0c\x63han_pending\x18\x01 \x01(\x0b\x32\x14.lnrpc.PendingUpdateH\x00\x12-\n\tchan_open\x18\x03 \x01(\x0b\x32\x18.lnrpc.ChannelOpenUpdateH\x00\x12/\n\tpsbt_fund\x18\x05 \x01(\x0b\x32\x1a.lnrpc.ReadyForPsbtFundingH\x00\x12\x17\n\x0fpending_chan_id\x18\x04 \x01(\x0c\x42\x08\n\x06update"3\n\nKeyLocator\x12\x12\n\nkey_family\x18\x01 \x01(\x05\x12\x11\n\tkey_index\x18\x02 \x01(\x05"J\n\rKeyDescriptor\x12\x15\n\rraw_key_bytes\x18\x01 \x01(\x0c\x12"\n\x07key_loc\x18\x02 \x01(\x0b\x32\x11.lnrpc.KeyLocator"\xb0\x01\n\rChanPointShim\x12\x0b\n\x03\x61mt\x18\x01 \x01(\x03\x12\'\n\nchan_point\x18\x02 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12\'\n\tlocal_key\x18\x03 \x01(\x0b\x32\x14.lnrpc.KeyDescriptor\x12\x12\n\nremote_key\x18\x04 \x01(\x0c\x12\x17\n\x0fpending_chan_id\x18\x05 \x01(\x0c\x12\x13\n\x0bthaw_height\x18\x06 \x01(\r"J\n\x08PsbtShim\x12\x17\n\x0fpending_chan_id\x18\x01 \x01(\x0c\x12\x11\n\tbase_psbt\x18\x02 \x01(\x0c\x12\x12\n\nno_publish\x18\x03 \x01(\x08"l\n\x0b\x46undingShim\x12/\n\x0f\x63han_point_shim\x18\x01 \x01(\x0b\x32\x14.lnrpc.ChanPointShimH\x00\x12$\n\tpsbt_shim\x18\x02 \x01(\x0b\x32\x0f.lnrpc.PsbtShimH\x00\x42\x06\n\x04shim",\n\x11\x46undingShimCancel\x12\x17\n\x0fpending_chan_id\x18\x01 \x01(\x0c"X\n\x11\x46undingPsbtVerify\x12\x13\n\x0b\x66unded_psbt\x18\x01 \x01(\x0c\x12\x17\n\x0fpending_chan_id\x18\x02 \x01(\x0c\x12\x15\n\rskip_finalize\x18\x03 \x01(\x08"Y\n\x13\x46undingPsbtFinalize\x12\x13\n\x0bsigned_psbt\x18\x01 \x01(\x0c\x12\x17\n\x0fpending_chan_id\x18\x02 \x01(\x0c\x12\x14\n\x0c\x66inal_raw_tx\x18\x03 \x01(\x0c"\xe5\x01\n\x14\x46undingTransitionMsg\x12+\n\rshim_register\x18\x01 \x01(\x0b\x32\x12.lnrpc.FundingShimH\x00\x12/\n\x0bshim_cancel\x18\x02 \x01(\x0b\x32\x18.lnrpc.FundingShimCancelH\x00\x12/\n\x0bpsbt_verify\x18\x03 \x01(\x0b\x32\x18.lnrpc.FundingPsbtVerifyH\x00\x12\x33\n\rpsbt_finalize\x18\x04 \x01(\x0b\x32\x1a.lnrpc.FundingPsbtFinalizeH\x00\x42\t\n\x07trigger"\x16\n\x14\x46undingStateStepResp"\x86\x01\n\x0bPendingHTLC\x12\x10\n\x08incoming\x18\x01 \x01(\x08\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x03\x12\x10\n\x08outpoint\x18\x03 \x01(\t\x12\x17\n\x0fmaturity_height\x18\x04 \x01(\r\x12\x1b\n\x13\x62locks_til_maturity\x18\x05 \x01(\x05\x12\r\n\x05stage\x18\x06 \x01(\r"\x18\n\x16PendingChannelsRequest"\xf7\r\n\x17PendingChannelsResponse\x12\x1b\n\x13total_limbo_balance\x18\x01 \x01(\x03\x12P\n\x15pending_open_channels\x18\x02 \x03(\x0b\x32\x31.lnrpc.PendingChannelsResponse.PendingOpenChannel\x12R\n\x18pending_closing_channels\x18\x03 \x03(\x0b\x32,.lnrpc.PendingChannelsResponse.ClosedChannelB\x02\x18\x01\x12Y\n\x1epending_force_closing_channels\x18\x04 \x03(\x0b\x32\x31.lnrpc.PendingChannelsResponse.ForceClosedChannel\x12R\n\x16waiting_close_channels\x18\x05 \x03(\x0b\x32\x32.lnrpc.PendingChannelsResponse.WaitingCloseChannel\x1a\xe4\x02\n\x0ePendingChannel\x12\x17\n\x0fremote_node_pub\x18\x01 \x01(\t\x12\x15\n\rchannel_point\x18\x02 \x01(\t\x12\x10\n\x08\x63\x61pacity\x18\x03 \x01(\x03\x12\x15\n\rlocal_balance\x18\x04 \x01(\x03\x12\x16\n\x0eremote_balance\x18\x05 \x01(\x03\x12\x1e\n\x16local_chan_reserve_sat\x18\x06 \x01(\x03\x12\x1f\n\x17remote_chan_reserve_sat\x18\x07 \x01(\x03\x12#\n\tinitiator\x18\x08 \x01(\x0e\x32\x10.lnrpc.Initiator\x12.\n\x0f\x63ommitment_type\x18\t \x01(\x0e\x32\x15.lnrpc.CommitmentType\x12\x1f\n\x17num_forwarding_packages\x18\n \x01(\x03\x12\x19\n\x11\x63han_status_flags\x18\x0b \x01(\t\x12\x0f\n\x07private\x18\x0c \x01(\x08\x1a\x99\x01\n\x12PendingOpenChannel\x12>\n\x07\x63hannel\x18\x01 \x01(\x0b\x32-.lnrpc.PendingChannelsResponse.PendingChannel\x12\x12\n\ncommit_fee\x18\x04 \x01(\x03\x12\x15\n\rcommit_weight\x18\x05 \x01(\x03\x12\x12\n\nfee_per_kw\x18\x06 \x01(\x03J\x04\x08\x02\x10\x03\x1a\xc3\x01\n\x13WaitingCloseChannel\x12>\n\x07\x63hannel\x18\x01 \x01(\x0b\x32-.lnrpc.PendingChannelsResponse.PendingChannel\x12\x15\n\rlimbo_balance\x18\x02 \x01(\x03\x12?\n\x0b\x63ommitments\x18\x03 \x01(\x0b\x32*.lnrpc.PendingChannelsResponse.Commitments\x12\x14\n\x0c\x63losing_txid\x18\x04 \x01(\t\x1a\xb7\x01\n\x0b\x43ommitments\x12\x12\n\nlocal_txid\x18\x01 \x01(\t\x12\x13\n\x0bremote_txid\x18\x02 \x01(\t\x12\x1b\n\x13remote_pending_txid\x18\x03 \x01(\t\x12\x1c\n\x14local_commit_fee_sat\x18\x04 \x01(\x04\x12\x1d\n\x15remote_commit_fee_sat\x18\x05 \x01(\x04\x12%\n\x1dremote_pending_commit_fee_sat\x18\x06 \x01(\x04\x1a\x65\n\rClosedChannel\x12>\n\x07\x63hannel\x18\x01 \x01(\x0b\x32-.lnrpc.PendingChannelsResponse.PendingChannel\x12\x14\n\x0c\x63losing_txid\x18\x02 \x01(\t\x1a\xff\x02\n\x12\x46orceClosedChannel\x12>\n\x07\x63hannel\x18\x01 \x01(\x0b\x32-.lnrpc.PendingChannelsResponse.PendingChannel\x12\x14\n\x0c\x63losing_txid\x18\x02 \x01(\t\x12\x15\n\rlimbo_balance\x18\x03 \x01(\x03\x12\x17\n\x0fmaturity_height\x18\x04 \x01(\r\x12\x1b\n\x13\x62locks_til_maturity\x18\x05 \x01(\x05\x12\x19\n\x11recovered_balance\x18\x06 \x01(\x03\x12)\n\rpending_htlcs\x18\x08 \x03(\x0b\x32\x12.lnrpc.PendingHTLC\x12M\n\x06\x61nchor\x18\t \x01(\x0e\x32=.lnrpc.PendingChannelsResponse.ForceClosedChannel.AnchorState"1\n\x0b\x41nchorState\x12\t\n\x05LIMBO\x10\x00\x12\r\n\tRECOVERED\x10\x01\x12\x08\n\x04LOST\x10\x02"\x1a\n\x18\x43hannelEventSubscription"\x93\x04\n\x12\x43hannelEventUpdate\x12&\n\x0copen_channel\x18\x01 \x01(\x0b\x32\x0e.lnrpc.ChannelH\x00\x12\x34\n\x0e\x63losed_channel\x18\x02 \x01(\x0b\x32\x1a.lnrpc.ChannelCloseSummaryH\x00\x12-\n\x0e\x61\x63tive_channel\x18\x03 \x01(\x0b\x32\x13.lnrpc.ChannelPointH\x00\x12/\n\x10inactive_channel\x18\x04 \x01(\x0b\x32\x13.lnrpc.ChannelPointH\x00\x12\x34\n\x14pending_open_channel\x18\x06 \x01(\x0b\x32\x14.lnrpc.PendingUpdateH\x00\x12\x35\n\x16\x66ully_resolved_channel\x18\x07 \x01(\x0b\x32\x13.lnrpc.ChannelPointH\x00\x12\x32\n\x04type\x18\x05 \x01(\x0e\x32$.lnrpc.ChannelEventUpdate.UpdateType"\x92\x01\n\nUpdateType\x12\x10\n\x0cOPEN_CHANNEL\x10\x00\x12\x12\n\x0e\x43LOSED_CHANNEL\x10\x01\x12\x12\n\x0e\x41\x43TIVE_CHANNEL\x10\x02\x12\x14\n\x10INACTIVE_CHANNEL\x10\x03\x12\x18\n\x14PENDING_OPEN_CHANNEL\x10\x04\x12\x1a\n\x16\x46ULLY_RESOLVED_CHANNEL\x10\x05\x42\t\n\x07\x63hannel"N\n\x14WalletAccountBalance\x12\x19\n\x11\x63onfirmed_balance\x18\x01 \x01(\x03\x12\x1b\n\x13unconfirmed_balance\x18\x02 \x01(\x03"\x16\n\x14WalletBalanceRequest"\xc3\x02\n\x15WalletBalanceResponse\x12\x15\n\rtotal_balance\x18\x01 \x01(\x03\x12\x19\n\x11\x63onfirmed_balance\x18\x02 \x01(\x03\x12\x1b\n\x13unconfirmed_balance\x18\x03 \x01(\x03\x12\x16\n\x0elocked_balance\x18\x05 \x01(\x03\x12$\n\x1creserved_balance_anchor_chan\x18\x06 \x01(\x03\x12I\n\x0f\x61\x63\x63ount_balance\x18\x04 \x03(\x0b\x32\x30.lnrpc.WalletBalanceResponse.AccountBalanceEntry\x1aR\n\x13\x41\x63\x63ountBalanceEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12*\n\x05value\x18\x02 \x01(\x0b\x32\x1b.lnrpc.WalletAccountBalance:\x02\x38\x01"#\n\x06\x41mount\x12\x0b\n\x03sat\x18\x01 \x01(\x04\x12\x0c\n\x04msat\x18\x02 \x01(\x04"\x17\n\x15\x43hannelBalanceRequest"\xe4\x02\n\x16\x43hannelBalanceResponse\x12\x13\n\x07\x62\x61lance\x18\x01 \x01(\x03\x42\x02\x18\x01\x12 \n\x14pending_open_balance\x18\x02 \x01(\x03\x42\x02\x18\x01\x12$\n\rlocal_balance\x18\x03 \x01(\x0b\x32\r.lnrpc.Amount\x12%\n\x0eremote_balance\x18\x04 \x01(\x0b\x32\r.lnrpc.Amount\x12.\n\x17unsettled_local_balance\x18\x05 \x01(\x0b\x32\r.lnrpc.Amount\x12/\n\x18unsettled_remote_balance\x18\x06 \x01(\x0b\x32\r.lnrpc.Amount\x12\x31\n\x1apending_open_local_balance\x18\x07 \x01(\x0b\x32\r.lnrpc.Amount\x12\x32\n\x1bpending_open_remote_balance\x18\x08 \x01(\x0b\x32\r.lnrpc.Amount"\xe3\x04\n\x12QueryRoutesRequest\x12\x0f\n\x07pub_key\x18\x01 \x01(\t\x12\x0b\n\x03\x61mt\x18\x02 \x01(\x03\x12\x10\n\x08\x61mt_msat\x18\x0c \x01(\x03\x12\x18\n\x10\x66inal_cltv_delta\x18\x04 \x01(\x05\x12"\n\tfee_limit\x18\x05 \x01(\x0b\x32\x0f.lnrpc.FeeLimit\x12\x15\n\rignored_nodes\x18\x06 \x03(\x0c\x12-\n\rignored_edges\x18\x07 \x03(\x0b\x32\x12.lnrpc.EdgeLocatorB\x02\x18\x01\x12\x16\n\x0esource_pub_key\x18\x08 \x01(\t\x12\x1b\n\x13use_mission_control\x18\t \x01(\x08\x12&\n\rignored_pairs\x18\n \x03(\x0b\x32\x0f.lnrpc.NodePair\x12\x12\n\ncltv_limit\x18\x0b \x01(\r\x12M\n\x13\x64\x65st_custom_records\x18\r \x03(\x0b\x32\x30.lnrpc.QueryRoutesRequest.DestCustomRecordsEntry\x12\x1c\n\x10outgoing_chan_id\x18\x0e \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0flast_hop_pubkey\x18\x0f \x01(\x0c\x12%\n\x0broute_hints\x18\x10 \x03(\x0b\x32\x10.lnrpc.RouteHint\x12(\n\rdest_features\x18\x11 \x03(\x0e\x32\x11.lnrpc.FeatureBit\x12\x11\n\ttime_pref\x18\x12 \x01(\x01\x1a\x38\n\x16\x44\x65stCustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01J\x04\x08\x03\x10\x04"$\n\x08NodePair\x12\x0c\n\x04\x66rom\x18\x01 \x01(\x0c\x12\n\n\x02to\x18\x02 \x01(\x0c"@\n\x0b\x45\x64geLocator\x12\x16\n\nchannel_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x64irection_reverse\x18\x02 \x01(\x08"I\n\x13QueryRoutesResponse\x12\x1c\n\x06routes\x18\x01 \x03(\x0b\x32\x0c.lnrpc.Route\x12\x14\n\x0csuccess_prob\x18\x02 \x01(\x01"\x96\x03\n\x03Hop\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x19\n\rchan_capacity\x18\x02 \x01(\x03\x42\x02\x18\x01\x12\x1a\n\x0e\x61mt_to_forward\x18\x03 \x01(\x03\x42\x02\x18\x01\x12\x0f\n\x03\x66\x65\x65\x18\x04 \x01(\x03\x42\x02\x18\x01\x12\x0e\n\x06\x65xpiry\x18\x05 \x01(\r\x12\x1b\n\x13\x61mt_to_forward_msat\x18\x06 \x01(\x03\x12\x10\n\x08\x66\x65\x65_msat\x18\x07 \x01(\x03\x12\x0f\n\x07pub_key\x18\x08 \x01(\t\x12\x17\n\x0btlv_payload\x18\t \x01(\x08\x42\x02\x18\x01\x12$\n\nmpp_record\x18\n \x01(\x0b\x32\x10.lnrpc.MPPRecord\x12$\n\namp_record\x18\x0c \x01(\x0b\x32\x10.lnrpc.AMPRecord\x12\x35\n\x0e\x63ustom_records\x18\x0b \x03(\x0b\x32\x1d.lnrpc.Hop.CustomRecordsEntry\x12\x10\n\x08metadata\x18\r \x01(\x0c\x1a\x34\n\x12\x43ustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01"9\n\tMPPRecord\x12\x14\n\x0cpayment_addr\x18\x0b \x01(\x0c\x12\x16\n\x0etotal_amt_msat\x18\n \x01(\x03"D\n\tAMPRecord\x12\x12\n\nroot_share\x18\x01 \x01(\x0c\x12\x0e\n\x06set_id\x18\x02 \x01(\x0c\x12\x13\n\x0b\x63hild_index\x18\x03 \x01(\r"\x9a\x01\n\x05Route\x12\x17\n\x0ftotal_time_lock\x18\x01 \x01(\r\x12\x16\n\ntotal_fees\x18\x02 \x01(\x03\x42\x02\x18\x01\x12\x15\n\ttotal_amt\x18\x03 \x01(\x03\x42\x02\x18\x01\x12\x18\n\x04hops\x18\x04 \x03(\x0b\x32\n.lnrpc.Hop\x12\x17\n\x0ftotal_fees_msat\x18\x05 \x01(\x03\x12\x16\n\x0etotal_amt_msat\x18\x06 \x01(\x03"<\n\x0fNodeInfoRequest\x12\x0f\n\x07pub_key\x18\x01 \x01(\t\x12\x18\n\x10include_channels\x18\x02 \x01(\x08"\x82\x01\n\x08NodeInfo\x12"\n\x04node\x18\x01 \x01(\x0b\x32\x14.lnrpc.LightningNode\x12\x14\n\x0cnum_channels\x18\x02 \x01(\r\x12\x16\n\x0etotal_capacity\x18\x03 \x01(\x03\x12$\n\x08\x63hannels\x18\x04 \x03(\x0b\x32\x12.lnrpc.ChannelEdge"\xf1\x01\n\rLightningNode\x12\x13\n\x0blast_update\x18\x01 \x01(\r\x12\x0f\n\x07pub_key\x18\x02 \x01(\t\x12\r\n\x05\x61lias\x18\x03 \x01(\t\x12%\n\taddresses\x18\x04 \x03(\x0b\x32\x12.lnrpc.NodeAddress\x12\r\n\x05\x63olor\x18\x05 \x01(\t\x12\x34\n\x08\x66\x65\x61tures\x18\x06 \x03(\x0b\x32".lnrpc.LightningNode.FeaturesEntry\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01",\n\x0bNodeAddress\x12\x0f\n\x07network\x18\x01 \x01(\t\x12\x0c\n\x04\x61\x64\x64r\x18\x02 \x01(\t"\xac\x01\n\rRoutingPolicy\x12\x17\n\x0ftime_lock_delta\x18\x01 \x01(\r\x12\x10\n\x08min_htlc\x18\x02 \x01(\x03\x12\x15\n\rfee_base_msat\x18\x03 \x01(\x03\x12\x1b\n\x13\x66\x65\x65_rate_milli_msat\x18\x04 \x01(\x03\x12\x10\n\x08\x64isabled\x18\x05 \x01(\x08\x12\x15\n\rmax_htlc_msat\x18\x06 \x01(\x04\x12\x13\n\x0blast_update\x18\x07 \x01(\r"\xe2\x01\n\x0b\x43hannelEdge\x12\x16\n\nchannel_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x12\n\nchan_point\x18\x02 \x01(\t\x12\x17\n\x0blast_update\x18\x03 \x01(\rB\x02\x18\x01\x12\x11\n\tnode1_pub\x18\x04 \x01(\t\x12\x11\n\tnode2_pub\x18\x05 \x01(\t\x12\x10\n\x08\x63\x61pacity\x18\x06 \x01(\x03\x12*\n\x0cnode1_policy\x18\x07 \x01(\x0b\x32\x14.lnrpc.RoutingPolicy\x12*\n\x0cnode2_policy\x18\x08 \x01(\x0b\x32\x14.lnrpc.RoutingPolicy"2\n\x13\x43hannelGraphRequest\x12\x1b\n\x13include_unannounced\x18\x01 \x01(\x08"V\n\x0c\x43hannelGraph\x12#\n\x05nodes\x18\x01 \x03(\x0b\x32\x14.lnrpc.LightningNode\x12!\n\x05\x65\x64ges\x18\x02 \x03(\x0b\x32\x12.lnrpc.ChannelEdge":\n\x12NodeMetricsRequest\x12$\n\x05types\x18\x01 \x03(\x0e\x32\x15.lnrpc.NodeMetricType"\xbe\x01\n\x13NodeMetricsResponse\x12U\n\x16\x62\x65tweenness_centrality\x18\x01 \x03(\x0b\x32\x35.lnrpc.NodeMetricsResponse.BetweennessCentralityEntry\x1aP\n\x1a\x42\x65tweennessCentralityEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.lnrpc.FloatMetric:\x02\x38\x01"6\n\x0b\x46loatMetric\x12\r\n\x05value\x18\x01 \x01(\x01\x12\x18\n\x10normalized_value\x18\x02 \x01(\x01"&\n\x0f\x43hanInfoRequest\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01"\x14\n\x12NetworkInfoRequest"\xa7\x02\n\x0bNetworkInfo\x12\x16\n\x0egraph_diameter\x18\x01 \x01(\r\x12\x16\n\x0e\x61vg_out_degree\x18\x02 \x01(\x01\x12\x16\n\x0emax_out_degree\x18\x03 \x01(\r\x12\x11\n\tnum_nodes\x18\x04 \x01(\r\x12\x14\n\x0cnum_channels\x18\x05 \x01(\r\x12\x1e\n\x16total_network_capacity\x18\x06 \x01(\x03\x12\x18\n\x10\x61vg_channel_size\x18\x07 \x01(\x01\x12\x18\n\x10min_channel_size\x18\x08 \x01(\x03\x12\x18\n\x10max_channel_size\x18\t \x01(\x03\x12\x1f\n\x17median_channel_size_sat\x18\n \x01(\x03\x12\x18\n\x10num_zombie_chans\x18\x0b \x01(\x04"\r\n\x0bStopRequest"\x0e\n\x0cStopResponse"\x1b\n\x19GraphTopologySubscription"\xa3\x01\n\x13GraphTopologyUpdate\x12\'\n\x0cnode_updates\x18\x01 \x03(\x0b\x32\x11.lnrpc.NodeUpdate\x12\x31\n\x0f\x63hannel_updates\x18\x02 \x03(\x0b\x32\x18.lnrpc.ChannelEdgeUpdate\x12\x30\n\x0c\x63losed_chans\x18\x03 \x03(\x0b\x32\x1a.lnrpc.ClosedChannelUpdate"\x94\x02\n\nNodeUpdate\x12\x15\n\taddresses\x18\x01 \x03(\tB\x02\x18\x01\x12\x14\n\x0cidentity_key\x18\x02 \x01(\t\x12\x1b\n\x0fglobal_features\x18\x03 \x01(\x0c\x42\x02\x18\x01\x12\r\n\x05\x61lias\x18\x04 \x01(\t\x12\r\n\x05\x63olor\x18\x05 \x01(\t\x12*\n\x0enode_addresses\x18\x07 \x03(\x0b\x32\x12.lnrpc.NodeAddress\x12\x31\n\x08\x66\x65\x61tures\x18\x06 \x03(\x0b\x32\x1f.lnrpc.NodeUpdate.FeaturesEntry\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01"\xc4\x01\n\x11\x43hannelEdgeUpdate\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\'\n\nchan_point\x18\x02 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12\x10\n\x08\x63\x61pacity\x18\x03 \x01(\x03\x12,\n\x0erouting_policy\x18\x04 \x01(\x0b\x32\x14.lnrpc.RoutingPolicy\x12\x18\n\x10\x61\x64vertising_node\x18\x05 \x01(\t\x12\x17\n\x0f\x63onnecting_node\x18\x06 \x01(\t"|\n\x13\x43losedChannelUpdate\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x10\n\x08\x63\x61pacity\x18\x02 \x01(\x03\x12\x15\n\rclosed_height\x18\x03 \x01(\r\x12\'\n\nchan_point\x18\x04 \x01(\x0b\x32\x13.lnrpc.ChannelPoint"\x86\x01\n\x07HopHint\x12\x0f\n\x07node_id\x18\x01 \x01(\t\x12\x13\n\x07\x63han_id\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x15\n\rfee_base_msat\x18\x03 \x01(\r\x12#\n\x1b\x66\x65\x65_proportional_millionths\x18\x04 \x01(\r\x12\x19\n\x11\x63ltv_expiry_delta\x18\x05 \x01(\r"\x17\n\x05SetID\x12\x0e\n\x06set_id\x18\x01 \x01(\x0c".\n\tRouteHint\x12!\n\thop_hints\x18\x01 \x03(\x0b\x32\x0e.lnrpc.HopHint"{\n\x0f\x41MPInvoiceState\x12&\n\x05state\x18\x01 \x01(\x0e\x32\x17.lnrpc.InvoiceHTLCState\x12\x14\n\x0csettle_index\x18\x02 \x01(\x04\x12\x13\n\x0bsettle_time\x18\x03 \x01(\x03\x12\x15\n\ramt_paid_msat\x18\x05 \x01(\x03"\x85\x07\n\x07Invoice\x12\x0c\n\x04memo\x18\x01 \x01(\t\x12\x12\n\nr_preimage\x18\x03 \x01(\x0c\x12\x0e\n\x06r_hash\x18\x04 \x01(\x0c\x12\r\n\x05value\x18\x05 \x01(\x03\x12\x12\n\nvalue_msat\x18\x17 \x01(\x03\x12\x13\n\x07settled\x18\x06 \x01(\x08\x42\x02\x18\x01\x12\x15\n\rcreation_date\x18\x07 \x01(\x03\x12\x13\n\x0bsettle_date\x18\x08 \x01(\x03\x12\x17\n\x0fpayment_request\x18\t \x01(\t\x12\x18\n\x10\x64\x65scription_hash\x18\n \x01(\x0c\x12\x0e\n\x06\x65xpiry\x18\x0b \x01(\x03\x12\x15\n\rfallback_addr\x18\x0c \x01(\t\x12\x13\n\x0b\x63ltv_expiry\x18\r \x01(\x04\x12%\n\x0broute_hints\x18\x0e \x03(\x0b\x32\x10.lnrpc.RouteHint\x12\x0f\n\x07private\x18\x0f \x01(\x08\x12\x11\n\tadd_index\x18\x10 \x01(\x04\x12\x14\n\x0csettle_index\x18\x11 \x01(\x04\x12\x14\n\x08\x61mt_paid\x18\x12 \x01(\x03\x42\x02\x18\x01\x12\x14\n\x0c\x61mt_paid_sat\x18\x13 \x01(\x03\x12\x15\n\ramt_paid_msat\x18\x14 \x01(\x03\x12*\n\x05state\x18\x15 \x01(\x0e\x32\x1b.lnrpc.Invoice.InvoiceState\x12!\n\x05htlcs\x18\x16 \x03(\x0b\x32\x12.lnrpc.InvoiceHTLC\x12.\n\x08\x66\x65\x61tures\x18\x18 \x03(\x0b\x32\x1c.lnrpc.Invoice.FeaturesEntry\x12\x12\n\nis_keysend\x18\x19 \x01(\x08\x12\x14\n\x0cpayment_addr\x18\x1a \x01(\x0c\x12\x0e\n\x06is_amp\x18\x1b \x01(\x08\x12>\n\x11\x61mp_invoice_state\x18\x1c \x03(\x0b\x32#.lnrpc.Invoice.AmpInvoiceStateEntry\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01\x1aN\n\x14\x41mpInvoiceStateEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.lnrpc.AMPInvoiceState:\x02\x38\x01"A\n\x0cInvoiceState\x12\x08\n\x04OPEN\x10\x00\x12\x0b\n\x07SETTLED\x10\x01\x12\x0c\n\x08\x43\x41NCELED\x10\x02\x12\x0c\n\x08\x41\x43\x43\x45PTED\x10\x03J\x04\x08\x02\x10\x03"\xf3\x02\n\x0bInvoiceHTLC\x12\x13\n\x07\x63han_id\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x12\n\nhtlc_index\x18\x02 \x01(\x04\x12\x10\n\x08\x61mt_msat\x18\x03 \x01(\x04\x12\x15\n\raccept_height\x18\x04 \x01(\x05\x12\x13\n\x0b\x61\x63\x63\x65pt_time\x18\x05 \x01(\x03\x12\x14\n\x0cresolve_time\x18\x06 \x01(\x03\x12\x15\n\rexpiry_height\x18\x07 \x01(\x05\x12&\n\x05state\x18\x08 \x01(\x0e\x32\x17.lnrpc.InvoiceHTLCState\x12=\n\x0e\x63ustom_records\x18\t \x03(\x0b\x32%.lnrpc.InvoiceHTLC.CustomRecordsEntry\x12\x1a\n\x12mpp_total_amt_msat\x18\n \x01(\x04\x12\x17\n\x03\x61mp\x18\x0b \x01(\x0b\x32\n.lnrpc.AMP\x1a\x34\n\x12\x43ustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01"^\n\x03\x41MP\x12\x12\n\nroot_share\x18\x01 \x01(\x0c\x12\x0e\n\x06set_id\x18\x02 \x01(\x0c\x12\x13\n\x0b\x63hild_index\x18\x03 \x01(\r\x12\x0c\n\x04hash\x18\x04 \x01(\x0c\x12\x10\n\x08preimage\x18\x05 \x01(\x0c"f\n\x12\x41\x64\x64InvoiceResponse\x12\x0e\n\x06r_hash\x18\x01 \x01(\x0c\x12\x17\n\x0fpayment_request\x18\x02 \x01(\t\x12\x11\n\tadd_index\x18\x10 \x01(\x04\x12\x14\n\x0cpayment_addr\x18\x11 \x01(\x0c"5\n\x0bPaymentHash\x12\x16\n\nr_hash_str\x18\x01 \x01(\tB\x02\x18\x01\x12\x0e\n\x06r_hash\x18\x02 \x01(\x0c"l\n\x12ListInvoiceRequest\x12\x14\n\x0cpending_only\x18\x01 \x01(\x08\x12\x14\n\x0cindex_offset\x18\x04 \x01(\x04\x12\x18\n\x10num_max_invoices\x18\x05 \x01(\x04\x12\x10\n\x08reversed\x18\x06 \x01(\x08"n\n\x13ListInvoiceResponse\x12 \n\x08invoices\x18\x01 \x03(\x0b\x32\x0e.lnrpc.Invoice\x12\x19\n\x11last_index_offset\x18\x02 \x01(\x04\x12\x1a\n\x12\x66irst_index_offset\x18\x03 \x01(\x04">\n\x13InvoiceSubscription\x12\x11\n\tadd_index\x18\x01 \x01(\x04\x12\x14\n\x0csettle_index\x18\x02 \x01(\x04"\xe0\x03\n\x07Payment\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\t\x12\x11\n\x05value\x18\x02 \x01(\x03\x42\x02\x18\x01\x12\x19\n\rcreation_date\x18\x03 \x01(\x03\x42\x02\x18\x01\x12\x0f\n\x03\x66\x65\x65\x18\x05 \x01(\x03\x42\x02\x18\x01\x12\x18\n\x10payment_preimage\x18\x06 \x01(\t\x12\x11\n\tvalue_sat\x18\x07 \x01(\x03\x12\x12\n\nvalue_msat\x18\x08 \x01(\x03\x12\x17\n\x0fpayment_request\x18\t \x01(\t\x12,\n\x06status\x18\n \x01(\x0e\x32\x1c.lnrpc.Payment.PaymentStatus\x12\x0f\n\x07\x66\x65\x65_sat\x18\x0b \x01(\x03\x12\x10\n\x08\x66\x65\x65_msat\x18\x0c \x01(\x03\x12\x18\n\x10\x63reation_time_ns\x18\r \x01(\x03\x12!\n\x05htlcs\x18\x0e \x03(\x0b\x32\x12.lnrpc.HTLCAttempt\x12\x15\n\rpayment_index\x18\x0f \x01(\x04\x12\x33\n\x0e\x66\x61ilure_reason\x18\x10 \x01(\x0e\x32\x1b.lnrpc.PaymentFailureReason"F\n\rPaymentStatus\x12\x0b\n\x07UNKNOWN\x10\x00\x12\r\n\tIN_FLIGHT\x10\x01\x12\r\n\tSUCCEEDED\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03J\x04\x08\x04\x10\x05"\x8a\x02\n\x0bHTLCAttempt\x12\x12\n\nattempt_id\x18\x07 \x01(\x04\x12-\n\x06status\x18\x01 \x01(\x0e\x32\x1d.lnrpc.HTLCAttempt.HTLCStatus\x12\x1b\n\x05route\x18\x02 \x01(\x0b\x32\x0c.lnrpc.Route\x12\x17\n\x0f\x61ttempt_time_ns\x18\x03 \x01(\x03\x12\x17\n\x0fresolve_time_ns\x18\x04 \x01(\x03\x12\x1f\n\x07\x66\x61ilure\x18\x05 \x01(\x0b\x32\x0e.lnrpc.Failure\x12\x10\n\x08preimage\x18\x06 \x01(\x0c"6\n\nHTLCStatus\x12\r\n\tIN_FLIGHT\x10\x00\x12\r\n\tSUCCEEDED\x10\x01\x12\n\n\x06\x46\x41ILED\x10\x02"\x8d\x01\n\x13ListPaymentsRequest\x12\x1a\n\x12include_incomplete\x18\x01 \x01(\x08\x12\x14\n\x0cindex_offset\x18\x02 \x01(\x04\x12\x14\n\x0cmax_payments\x18\x03 \x01(\x04\x12\x10\n\x08reversed\x18\x04 \x01(\x08\x12\x1c\n\x14\x63ount_total_payments\x18\x05 \x01(\x08"\x8b\x01\n\x14ListPaymentsResponse\x12 \n\x08payments\x18\x01 \x03(\x0b\x32\x0e.lnrpc.Payment\x12\x1a\n\x12\x66irst_index_offset\x18\x02 \x01(\x04\x12\x19\n\x11last_index_offset\x18\x03 \x01(\x04\x12\x1a\n\x12total_num_payments\x18\x04 \x01(\x04"G\n\x14\x44\x65letePaymentRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x19\n\x11\x66\x61iled_htlcs_only\x18\x02 \x01(\x08"S\n\x18\x44\x65leteAllPaymentsRequest\x12\x1c\n\x14\x66\x61iled_payments_only\x18\x01 \x01(\x08\x12\x19\n\x11\x66\x61iled_htlcs_only\x18\x02 \x01(\x08"\x17\n\x15\x44\x65letePaymentResponse"\x1b\n\x19\x44\x65leteAllPaymentsResponse"\x86\x01\n\x15\x41\x62\x61ndonChannelRequest\x12*\n\rchannel_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12!\n\x19pending_funding_shim_only\x18\x02 \x01(\x08\x12\x1e\n\x16i_know_what_i_am_doing\x18\x03 \x01(\x08"\x18\n\x16\x41\x62\x61ndonChannelResponse"5\n\x11\x44\x65\x62ugLevelRequest\x12\x0c\n\x04show\x18\x01 \x01(\x08\x12\x12\n\nlevel_spec\x18\x02 \x01(\t")\n\x12\x44\x65\x62ugLevelResponse\x12\x13\n\x0bsub_systems\x18\x01 \x01(\t"\x1f\n\x0cPayReqString\x12\x0f\n\x07pay_req\x18\x01 \x01(\t"\x86\x03\n\x06PayReq\x12\x13\n\x0b\x64\x65stination\x18\x01 \x01(\t\x12\x14\n\x0cpayment_hash\x18\x02 \x01(\t\x12\x14\n\x0cnum_satoshis\x18\x03 \x01(\x03\x12\x11\n\ttimestamp\x18\x04 \x01(\x03\x12\x0e\n\x06\x65xpiry\x18\x05 \x01(\x03\x12\x13\n\x0b\x64\x65scription\x18\x06 \x01(\t\x12\x18\n\x10\x64\x65scription_hash\x18\x07 \x01(\t\x12\x15\n\rfallback_addr\x18\x08 \x01(\t\x12\x13\n\x0b\x63ltv_expiry\x18\t \x01(\x03\x12%\n\x0broute_hints\x18\n \x03(\x0b\x32\x10.lnrpc.RouteHint\x12\x14\n\x0cpayment_addr\x18\x0b \x01(\x0c\x12\x10\n\x08num_msat\x18\x0c \x01(\x03\x12-\n\x08\x66\x65\x61tures\x18\r \x03(\x0b\x32\x1b.lnrpc.PayReq.FeaturesEntry\x1a?\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Feature:\x02\x38\x01">\n\x07\x46\x65\x61ture\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0bis_required\x18\x03 \x01(\x08\x12\x10\n\x08is_known\x18\x04 \x01(\x08"\x12\n\x10\x46\x65\x65ReportRequest"|\n\x10\x43hannelFeeReport\x12\x13\n\x07\x63han_id\x18\x05 \x01(\x04\x42\x02\x30\x01\x12\x15\n\rchannel_point\x18\x01 \x01(\t\x12\x15\n\rbase_fee_msat\x18\x02 \x01(\x03\x12\x13\n\x0b\x66\x65\x65_per_mil\x18\x03 \x01(\x03\x12\x10\n\x08\x66\x65\x65_rate\x18\x04 \x01(\x01"\x84\x01\n\x11\x46\x65\x65ReportResponse\x12-\n\x0c\x63hannel_fees\x18\x01 \x03(\x0b\x32\x17.lnrpc.ChannelFeeReport\x12\x13\n\x0b\x64\x61y_fee_sum\x18\x02 \x01(\x04\x12\x14\n\x0cweek_fee_sum\x18\x03 \x01(\x04\x12\x15\n\rmonth_fee_sum\x18\x04 \x01(\x04"\x82\x02\n\x13PolicyUpdateRequest\x12\x10\n\x06global\x18\x01 \x01(\x08H\x00\x12)\n\nchan_point\x18\x02 \x01(\x0b\x32\x13.lnrpc.ChannelPointH\x00\x12\x15\n\rbase_fee_msat\x18\x03 \x01(\x03\x12\x10\n\x08\x66\x65\x65_rate\x18\x04 \x01(\x01\x12\x14\n\x0c\x66\x65\x65_rate_ppm\x18\t \x01(\r\x12\x17\n\x0ftime_lock_delta\x18\x05 \x01(\r\x12\x15\n\rmax_htlc_msat\x18\x06 \x01(\x04\x12\x15\n\rmin_htlc_msat\x18\x07 \x01(\x04\x12\x1f\n\x17min_htlc_msat_specified\x18\x08 \x01(\x08\x42\x07\n\x05scope"m\n\x0c\x46\x61iledUpdate\x12!\n\x08outpoint\x18\x01 \x01(\x0b\x32\x0f.lnrpc.OutPoint\x12$\n\x06reason\x18\x02 \x01(\x0e\x32\x14.lnrpc.UpdateFailure\x12\x14\n\x0cupdate_error\x18\x03 \x01(\t"C\n\x14PolicyUpdateResponse\x12+\n\x0e\x66\x61iled_updates\x18\x01 \x03(\x0b\x32\x13.lnrpc.FailedUpdate"n\n\x18\x46orwardingHistoryRequest\x12\x12\n\nstart_time\x18\x01 \x01(\x04\x12\x10\n\x08\x65nd_time\x18\x02 \x01(\x04\x12\x14\n\x0cindex_offset\x18\x03 \x01(\r\x12\x16\n\x0enum_max_events\x18\x04 \x01(\r"\xda\x01\n\x0f\x46orwardingEvent\x12\x15\n\ttimestamp\x18\x01 \x01(\x04\x42\x02\x18\x01\x12\x16\n\nchan_id_in\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0b\x63han_id_out\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x0e\n\x06\x61mt_in\x18\x05 \x01(\x04\x12\x0f\n\x07\x61mt_out\x18\x06 \x01(\x04\x12\x0b\n\x03\x66\x65\x65\x18\x07 \x01(\x04\x12\x10\n\x08\x66\x65\x65_msat\x18\x08 \x01(\x04\x12\x13\n\x0b\x61mt_in_msat\x18\t \x01(\x04\x12\x14\n\x0c\x61mt_out_msat\x18\n \x01(\x04\x12\x14\n\x0ctimestamp_ns\x18\x0b \x01(\x04"i\n\x19\x46orwardingHistoryResponse\x12\x31\n\x11\x66orwarding_events\x18\x01 \x03(\x0b\x32\x16.lnrpc.ForwardingEvent\x12\x19\n\x11last_offset_index\x18\x02 \x01(\r"E\n\x1a\x45xportChannelBackupRequest\x12\'\n\nchan_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint"M\n\rChannelBackup\x12\'\n\nchan_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12\x13\n\x0b\x63han_backup\x18\x02 \x01(\x0c"V\n\x0fMultiChanBackup\x12(\n\x0b\x63han_points\x18\x01 \x03(\x0b\x32\x13.lnrpc.ChannelPoint\x12\x19\n\x11multi_chan_backup\x18\x02 \x01(\x0c"\x19\n\x17\x43hanBackupExportRequest"{\n\x12\x43hanBackupSnapshot\x12\x32\n\x13single_chan_backups\x18\x01 \x01(\x0b\x32\x15.lnrpc.ChannelBackups\x12\x31\n\x11multi_chan_backup\x18\x02 \x01(\x0b\x32\x16.lnrpc.MultiChanBackup"<\n\x0e\x43hannelBackups\x12*\n\x0c\x63han_backups\x18\x01 \x03(\x0b\x32\x14.lnrpc.ChannelBackup"p\n\x18RestoreChanBackupRequest\x12-\n\x0c\x63han_backups\x18\x01 \x01(\x0b\x32\x15.lnrpc.ChannelBackupsH\x00\x12\x1b\n\x11multi_chan_backup\x18\x02 \x01(\x0cH\x00\x42\x08\n\x06\x62\x61\x63kup"\x17\n\x15RestoreBackupResponse"\x1b\n\x19\x43hannelBackupSubscription"\x1a\n\x18VerifyChanBackupResponse"4\n\x12MacaroonPermission\x12\x0e\n\x06\x65ntity\x18\x01 \x01(\t\x12\x0e\n\x06\x61\x63tion\x18\x02 \x01(\t"~\n\x13\x42\x61keMacaroonRequest\x12.\n\x0bpermissions\x18\x01 \x03(\x0b\x32\x19.lnrpc.MacaroonPermission\x12\x13\n\x0broot_key_id\x18\x02 \x01(\x04\x12"\n\x1a\x61llow_external_permissions\x18\x03 \x01(\x08"(\n\x14\x42\x61keMacaroonResponse\x12\x10\n\x08macaroon\x18\x01 \x01(\t"\x18\n\x16ListMacaroonIDsRequest"/\n\x17ListMacaroonIDsResponse\x12\x14\n\x0croot_key_ids\x18\x01 \x03(\x04".\n\x17\x44\x65leteMacaroonIDRequest\x12\x13\n\x0broot_key_id\x18\x01 \x01(\x04"+\n\x18\x44\x65leteMacaroonIDResponse\x12\x0f\n\x07\x64\x65leted\x18\x01 \x01(\x08"H\n\x16MacaroonPermissionList\x12.\n\x0bpermissions\x18\x01 \x03(\x0b\x32\x19.lnrpc.MacaroonPermission"\x18\n\x16ListPermissionsRequest"\xc5\x01\n\x17ListPermissionsResponse\x12Q\n\x12method_permissions\x18\x01 \x03(\x0b\x32\x35.lnrpc.ListPermissionsResponse.MethodPermissionsEntry\x1aW\n\x16MethodPermissionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x1d.lnrpc.MacaroonPermissionList:\x02\x38\x01"\xd5\x07\n\x07\x46\x61ilure\x12(\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x1a.lnrpc.Failure.FailureCode\x12,\n\x0e\x63hannel_update\x18\x03 \x01(\x0b\x32\x14.lnrpc.ChannelUpdate\x12\x11\n\thtlc_msat\x18\x04 \x01(\x04\x12\x15\n\ronion_sha_256\x18\x05 \x01(\x0c\x12\x13\n\x0b\x63ltv_expiry\x18\x06 \x01(\r\x12\r\n\x05\x66lags\x18\x07 \x01(\r\x12\x1c\n\x14\x66\x61ilure_source_index\x18\x08 \x01(\r\x12\x0e\n\x06height\x18\t \x01(\r"\xef\x05\n\x0b\x46\x61ilureCode\x12\x0c\n\x08RESERVED\x10\x00\x12(\n$INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS\x10\x01\x12\x1c\n\x18INCORRECT_PAYMENT_AMOUNT\x10\x02\x12\x1f\n\x1b\x46INAL_INCORRECT_CLTV_EXPIRY\x10\x03\x12\x1f\n\x1b\x46INAL_INCORRECT_HTLC_AMOUNT\x10\x04\x12\x19\n\x15\x46INAL_EXPIRY_TOO_SOON\x10\x05\x12\x11\n\rINVALID_REALM\x10\x06\x12\x13\n\x0f\x45XPIRY_TOO_SOON\x10\x07\x12\x19\n\x15INVALID_ONION_VERSION\x10\x08\x12\x16\n\x12INVALID_ONION_HMAC\x10\t\x12\x15\n\x11INVALID_ONION_KEY\x10\n\x12\x18\n\x14\x41MOUNT_BELOW_MINIMUM\x10\x0b\x12\x14\n\x10\x46\x45\x45_INSUFFICIENT\x10\x0c\x12\x19\n\x15INCORRECT_CLTV_EXPIRY\x10\r\x12\x14\n\x10\x43HANNEL_DISABLED\x10\x0e\x12\x1d\n\x19TEMPORARY_CHANNEL_FAILURE\x10\x0f\x12!\n\x1dREQUIRED_NODE_FEATURE_MISSING\x10\x10\x12$\n REQUIRED_CHANNEL_FEATURE_MISSING\x10\x11\x12\x15\n\x11UNKNOWN_NEXT_PEER\x10\x12\x12\x1a\n\x16TEMPORARY_NODE_FAILURE\x10\x13\x12\x1a\n\x16PERMANENT_NODE_FAILURE\x10\x14\x12\x1d\n\x19PERMANENT_CHANNEL_FAILURE\x10\x15\x12\x12\n\x0e\x45XPIRY_TOO_FAR\x10\x16\x12\x0f\n\x0bMPP_TIMEOUT\x10\x17\x12\x19\n\x15INVALID_ONION_PAYLOAD\x10\x18\x12\x15\n\x10INTERNAL_FAILURE\x10\xe5\x07\x12\x14\n\x0fUNKNOWN_FAILURE\x10\xe6\x07\x12\x17\n\x12UNREADABLE_FAILURE\x10\xe7\x07J\x04\x08\x02\x10\x03"\x9a\x02\n\rChannelUpdate\x12\x11\n\tsignature\x18\x01 \x01(\x0c\x12\x12\n\nchain_hash\x18\x02 \x01(\x0c\x12\x13\n\x07\x63han_id\x18\x03 \x01(\x04\x42\x02\x30\x01\x12\x11\n\ttimestamp\x18\x04 \x01(\r\x12\x15\n\rmessage_flags\x18\n \x01(\r\x12\x15\n\rchannel_flags\x18\x05 \x01(\r\x12\x17\n\x0ftime_lock_delta\x18\x06 \x01(\r\x12\x19\n\x11htlc_minimum_msat\x18\x07 \x01(\x04\x12\x10\n\x08\x62\x61se_fee\x18\x08 \x01(\r\x12\x10\n\x08\x66\x65\x65_rate\x18\t \x01(\r\x12\x19\n\x11htlc_maximum_msat\x18\x0b \x01(\x04\x12\x19\n\x11\x65xtra_opaque_data\x18\x0c \x01(\x0c"F\n\nMacaroonId\x12\r\n\x05nonce\x18\x01 \x01(\x0c\x12\x11\n\tstorageId\x18\x02 \x01(\x0c\x12\x16\n\x03ops\x18\x03 \x03(\x0b\x32\t.lnrpc.Op"%\n\x02Op\x12\x0e\n\x06\x65ntity\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x63tions\x18\x02 \x03(\t"k\n\x13\x43heckMacPermRequest\x12\x10\n\x08macaroon\x18\x01 \x01(\x0c\x12.\n\x0bpermissions\x18\x02 \x03(\x0b\x32\x19.lnrpc.MacaroonPermission\x12\x12\n\nfullMethod\x18\x03 \x01(\t"%\n\x14\x43heckMacPermResponse\x12\r\n\x05valid\x18\x01 \x01(\x08"\xfa\x01\n\x14RPCMiddlewareRequest\x12\x12\n\nrequest_id\x18\x01 \x01(\x04\x12\x14\n\x0craw_macaroon\x18\x02 \x01(\x0c\x12\x1f\n\x17\x63ustom_caveat_condition\x18\x03 \x01(\t\x12(\n\x0bstream_auth\x18\x04 \x01(\x0b\x32\x11.lnrpc.StreamAuthH\x00\x12$\n\x07request\x18\x05 \x01(\x0b\x32\x11.lnrpc.RPCMessageH\x00\x12%\n\x08response\x18\x06 \x01(\x0b\x32\x11.lnrpc.RPCMessageH\x00\x12\x0e\n\x06msg_id\x18\x07 \x01(\x04\x42\x10\n\x0eintercept_type"%\n\nStreamAuth\x12\x17\n\x0fmethod_full_uri\x18\x01 \x01(\t"r\n\nRPCMessage\x12\x17\n\x0fmethod_full_uri\x18\x01 \x01(\t\x12\x12\n\nstream_rpc\x18\x02 \x01(\x08\x12\x11\n\ttype_name\x18\x03 \x01(\t\x12\x12\n\nserialized\x18\x04 \x01(\x0c\x12\x10\n\x08is_error\x18\x05 \x01(\x08"\xa2\x01\n\x15RPCMiddlewareResponse\x12\x12\n\nref_msg_id\x18\x01 \x01(\x04\x12\x31\n\x08register\x18\x02 \x01(\x0b\x32\x1d.lnrpc.MiddlewareRegistrationH\x00\x12,\n\x08\x66\x65\x65\x64\x62\x61\x63k\x18\x03 \x01(\x0b\x32\x18.lnrpc.InterceptFeedbackH\x00\x42\x14\n\x12middleware_message"n\n\x16MiddlewareRegistration\x12\x17\n\x0fmiddleware_name\x18\x01 \x01(\t\x12#\n\x1b\x63ustom_macaroon_caveat_name\x18\x02 \x01(\t\x12\x16\n\x0eread_only_mode\x18\x03 \x01(\x08"\\\n\x11InterceptFeedback\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\x18\n\x10replace_response\x18\x02 \x01(\x08\x12\x1e\n\x16replacement_serialized\x18\x03 \x01(\x0c*\xa7\x02\n\x10OutputScriptType\x12\x1b\n\x17SCRIPT_TYPE_PUBKEY_HASH\x10\x00\x12\x1b\n\x17SCRIPT_TYPE_SCRIPT_HASH\x10\x01\x12&\n"SCRIPT_TYPE_WITNESS_V0_PUBKEY_HASH\x10\x02\x12&\n"SCRIPT_TYPE_WITNESS_V0_SCRIPT_HASH\x10\x03\x12\x16\n\x12SCRIPT_TYPE_PUBKEY\x10\x04\x12\x18\n\x14SCRIPT_TYPE_MULTISIG\x10\x05\x12\x18\n\x14SCRIPT_TYPE_NULLDATA\x10\x06\x12\x1c\n\x18SCRIPT_TYPE_NON_STANDARD\x10\x07\x12\x1f\n\x1bSCRIPT_TYPE_WITNESS_UNKNOWN\x10\x08*\xac\x01\n\x0b\x41\x64\x64ressType\x12\x17\n\x13WITNESS_PUBKEY_HASH\x10\x00\x12\x16\n\x12NESTED_PUBKEY_HASH\x10\x01\x12\x1e\n\x1aUNUSED_WITNESS_PUBKEY_HASH\x10\x02\x12\x1d\n\x19UNUSED_NESTED_PUBKEY_HASH\x10\x03\x12\x12\n\x0eTAPROOT_PUBKEY\x10\x04\x12\x19\n\x15UNUSED_TAPROOT_PUBKEY\x10\x05*x\n\x0e\x43ommitmentType\x12\x1b\n\x17UNKNOWN_COMMITMENT_TYPE\x10\x00\x12\n\n\x06LEGACY\x10\x01\x12\x15\n\x11STATIC_REMOTE_KEY\x10\x02\x12\x0b\n\x07\x41NCHORS\x10\x03\x12\x19\n\x15SCRIPT_ENFORCED_LEASE\x10\x04*a\n\tInitiator\x12\x15\n\x11INITIATOR_UNKNOWN\x10\x00\x12\x13\n\x0fINITIATOR_LOCAL\x10\x01\x12\x14\n\x10INITIATOR_REMOTE\x10\x02\x12\x12\n\x0eINITIATOR_BOTH\x10\x03*`\n\x0eResolutionType\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\n\n\x06\x41NCHOR\x10\x01\x12\x11\n\rINCOMING_HTLC\x10\x02\x12\x11\n\rOUTGOING_HTLC\x10\x03\x12\n\n\x06\x43OMMIT\x10\x04*q\n\x11ResolutionOutcome\x12\x13\n\x0fOUTCOME_UNKNOWN\x10\x00\x12\x0b\n\x07\x43LAIMED\x10\x01\x12\r\n\tUNCLAIMED\x10\x02\x12\r\n\tABANDONED\x10\x03\x12\x0f\n\x0b\x46IRST_STAGE\x10\x04\x12\x0b\n\x07TIMEOUT\x10\x05*9\n\x0eNodeMetricType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x1a\n\x16\x42\x45TWEENNESS_CENTRALITY\x10\x01*;\n\x10InvoiceHTLCState\x12\x0c\n\x08\x41\x43\x43\x45PTED\x10\x00\x12\x0b\n\x07SETTLED\x10\x01\x12\x0c\n\x08\x43\x41NCELED\x10\x02*\xd9\x01\n\x14PaymentFailureReason\x12\x17\n\x13\x46\x41ILURE_REASON_NONE\x10\x00\x12\x1a\n\x16\x46\x41ILURE_REASON_TIMEOUT\x10\x01\x12\x1b\n\x17\x46\x41ILURE_REASON_NO_ROUTE\x10\x02\x12\x18\n\x14\x46\x41ILURE_REASON_ERROR\x10\x03\x12,\n(FAILURE_REASON_INCORRECT_PAYMENT_DETAILS\x10\x04\x12\'\n#FAILURE_REASON_INSUFFICIENT_BALANCE\x10\x05*\xcf\x04\n\nFeatureBit\x12\x18\n\x14\x44\x41TALOSS_PROTECT_REQ\x10\x00\x12\x18\n\x14\x44\x41TALOSS_PROTECT_OPT\x10\x01\x12\x17\n\x13INITIAL_ROUING_SYNC\x10\x03\x12\x1f\n\x1bUPFRONT_SHUTDOWN_SCRIPT_REQ\x10\x04\x12\x1f\n\x1bUPFRONT_SHUTDOWN_SCRIPT_OPT\x10\x05\x12\x16\n\x12GOSSIP_QUERIES_REQ\x10\x06\x12\x16\n\x12GOSSIP_QUERIES_OPT\x10\x07\x12\x11\n\rTLV_ONION_REQ\x10\x08\x12\x11\n\rTLV_ONION_OPT\x10\t\x12\x1a\n\x16\x45XT_GOSSIP_QUERIES_REQ\x10\n\x12\x1a\n\x16\x45XT_GOSSIP_QUERIES_OPT\x10\x0b\x12\x19\n\x15STATIC_REMOTE_KEY_REQ\x10\x0c\x12\x19\n\x15STATIC_REMOTE_KEY_OPT\x10\r\x12\x14\n\x10PAYMENT_ADDR_REQ\x10\x0e\x12\x14\n\x10PAYMENT_ADDR_OPT\x10\x0f\x12\x0b\n\x07MPP_REQ\x10\x10\x12\x0b\n\x07MPP_OPT\x10\x11\x12\x16\n\x12WUMBO_CHANNELS_REQ\x10\x12\x12\x16\n\x12WUMBO_CHANNELS_OPT\x10\x13\x12\x0f\n\x0b\x41NCHORS_REQ\x10\x14\x12\x0f\n\x0b\x41NCHORS_OPT\x10\x15\x12\x1d\n\x19\x41NCHORS_ZERO_FEE_HTLC_REQ\x10\x16\x12\x1d\n\x19\x41NCHORS_ZERO_FEE_HTLC_OPT\x10\x17\x12\x0b\n\x07\x41MP_REQ\x10\x1e\x12\x0b\n\x07\x41MP_OPT\x10\x1f*\xac\x01\n\rUpdateFailure\x12\x1a\n\x16UPDATE_FAILURE_UNKNOWN\x10\x00\x12\x1a\n\x16UPDATE_FAILURE_PENDING\x10\x01\x12\x1c\n\x18UPDATE_FAILURE_NOT_FOUND\x10\x02\x12\x1f\n\x1bUPDATE_FAILURE_INTERNAL_ERR\x10\x03\x12$\n UPDATE_FAILURE_INVALID_PARAMETER\x10\x04\x32\xc9%\n\tLightning\x12J\n\rWalletBalance\x12\x1b.lnrpc.WalletBalanceRequest\x1a\x1c.lnrpc.WalletBalanceResponse\x12M\n\x0e\x43hannelBalance\x12\x1c.lnrpc.ChannelBalanceRequest\x1a\x1d.lnrpc.ChannelBalanceResponse\x12K\n\x0fGetTransactions\x12\x1d.lnrpc.GetTransactionsRequest\x1a\x19.lnrpc.TransactionDetails\x12\x44\n\x0b\x45stimateFee\x12\x19.lnrpc.EstimateFeeRequest\x1a\x1a.lnrpc.EstimateFeeResponse\x12>\n\tSendCoins\x12\x17.lnrpc.SendCoinsRequest\x1a\x18.lnrpc.SendCoinsResponse\x12\x44\n\x0bListUnspent\x12\x19.lnrpc.ListUnspentRequest\x1a\x1a.lnrpc.ListUnspentResponse\x12L\n\x15SubscribeTransactions\x12\x1d.lnrpc.GetTransactionsRequest\x1a\x12.lnrpc.Transaction0\x01\x12;\n\x08SendMany\x12\x16.lnrpc.SendManyRequest\x1a\x17.lnrpc.SendManyResponse\x12\x41\n\nNewAddress\x12\x18.lnrpc.NewAddressRequest\x1a\x19.lnrpc.NewAddressResponse\x12\x44\n\x0bSignMessage\x12\x19.lnrpc.SignMessageRequest\x1a\x1a.lnrpc.SignMessageResponse\x12J\n\rVerifyMessage\x12\x1b.lnrpc.VerifyMessageRequest\x1a\x1c.lnrpc.VerifyMessageResponse\x12\x44\n\x0b\x43onnectPeer\x12\x19.lnrpc.ConnectPeerRequest\x1a\x1a.lnrpc.ConnectPeerResponse\x12M\n\x0e\x44isconnectPeer\x12\x1c.lnrpc.DisconnectPeerRequest\x1a\x1d.lnrpc.DisconnectPeerResponse\x12>\n\tListPeers\x12\x17.lnrpc.ListPeersRequest\x1a\x18.lnrpc.ListPeersResponse\x12G\n\x13SubscribePeerEvents\x12\x1c.lnrpc.PeerEventSubscription\x1a\x10.lnrpc.PeerEvent0\x01\x12\x38\n\x07GetInfo\x12\x15.lnrpc.GetInfoRequest\x1a\x16.lnrpc.GetInfoResponse\x12P\n\x0fGetRecoveryInfo\x12\x1d.lnrpc.GetRecoveryInfoRequest\x1a\x1e.lnrpc.GetRecoveryInfoResponse\x12P\n\x0fPendingChannels\x12\x1d.lnrpc.PendingChannelsRequest\x1a\x1e.lnrpc.PendingChannelsResponse\x12G\n\x0cListChannels\x12\x1a.lnrpc.ListChannelsRequest\x1a\x1b.lnrpc.ListChannelsResponse\x12V\n\x16SubscribeChannelEvents\x12\x1f.lnrpc.ChannelEventSubscription\x1a\x19.lnrpc.ChannelEventUpdate0\x01\x12M\n\x0e\x43losedChannels\x12\x1c.lnrpc.ClosedChannelsRequest\x1a\x1d.lnrpc.ClosedChannelsResponse\x12\x41\n\x0fOpenChannelSync\x12\x19.lnrpc.OpenChannelRequest\x1a\x13.lnrpc.ChannelPoint\x12\x43\n\x0bOpenChannel\x12\x19.lnrpc.OpenChannelRequest\x1a\x17.lnrpc.OpenStatusUpdate0\x01\x12S\n\x10\x42\x61tchOpenChannel\x12\x1e.lnrpc.BatchOpenChannelRequest\x1a\x1f.lnrpc.BatchOpenChannelResponse\x12L\n\x10\x46undingStateStep\x12\x1b.lnrpc.FundingTransitionMsg\x1a\x1b.lnrpc.FundingStateStepResp\x12P\n\x0f\x43hannelAcceptor\x12\x1c.lnrpc.ChannelAcceptResponse\x1a\x1b.lnrpc.ChannelAcceptRequest(\x01\x30\x01\x12\x46\n\x0c\x43loseChannel\x12\x1a.lnrpc.CloseChannelRequest\x1a\x18.lnrpc.CloseStatusUpdate0\x01\x12M\n\x0e\x41\x62\x61ndonChannel\x12\x1c.lnrpc.AbandonChannelRequest\x1a\x1d.lnrpc.AbandonChannelResponse\x12?\n\x0bSendPayment\x12\x12.lnrpc.SendRequest\x1a\x13.lnrpc.SendResponse"\x03\x88\x02\x01(\x01\x30\x01\x12:\n\x0fSendPaymentSync\x12\x12.lnrpc.SendRequest\x1a\x13.lnrpc.SendResponse\x12\x46\n\x0bSendToRoute\x12\x19.lnrpc.SendToRouteRequest\x1a\x13.lnrpc.SendResponse"\x03\x88\x02\x01(\x01\x30\x01\x12\x41\n\x0fSendToRouteSync\x12\x19.lnrpc.SendToRouteRequest\x1a\x13.lnrpc.SendResponse\x12\x37\n\nAddInvoice\x12\x0e.lnrpc.Invoice\x1a\x19.lnrpc.AddInvoiceResponse\x12\x45\n\x0cListInvoices\x12\x19.lnrpc.ListInvoiceRequest\x1a\x1a.lnrpc.ListInvoiceResponse\x12\x33\n\rLookupInvoice\x12\x12.lnrpc.PaymentHash\x1a\x0e.lnrpc.Invoice\x12\x41\n\x11SubscribeInvoices\x12\x1a.lnrpc.InvoiceSubscription\x1a\x0e.lnrpc.Invoice0\x01\x12\x32\n\x0c\x44\x65\x63odePayReq\x12\x13.lnrpc.PayReqString\x1a\r.lnrpc.PayReq\x12G\n\x0cListPayments\x12\x1a.lnrpc.ListPaymentsRequest\x1a\x1b.lnrpc.ListPaymentsResponse\x12J\n\rDeletePayment\x12\x1b.lnrpc.DeletePaymentRequest\x1a\x1c.lnrpc.DeletePaymentResponse\x12V\n\x11\x44\x65leteAllPayments\x12\x1f.lnrpc.DeleteAllPaymentsRequest\x1a .lnrpc.DeleteAllPaymentsResponse\x12@\n\rDescribeGraph\x12\x1a.lnrpc.ChannelGraphRequest\x1a\x13.lnrpc.ChannelGraph\x12G\n\x0eGetNodeMetrics\x12\x19.lnrpc.NodeMetricsRequest\x1a\x1a.lnrpc.NodeMetricsResponse\x12\x39\n\x0bGetChanInfo\x12\x16.lnrpc.ChanInfoRequest\x1a\x12.lnrpc.ChannelEdge\x12\x36\n\x0bGetNodeInfo\x12\x16.lnrpc.NodeInfoRequest\x1a\x0f.lnrpc.NodeInfo\x12\x44\n\x0bQueryRoutes\x12\x19.lnrpc.QueryRoutesRequest\x1a\x1a.lnrpc.QueryRoutesResponse\x12?\n\x0eGetNetworkInfo\x12\x19.lnrpc.NetworkInfoRequest\x1a\x12.lnrpc.NetworkInfo\x12\x35\n\nStopDaemon\x12\x12.lnrpc.StopRequest\x1a\x13.lnrpc.StopResponse\x12W\n\x15SubscribeChannelGraph\x12 .lnrpc.GraphTopologySubscription\x1a\x1a.lnrpc.GraphTopologyUpdate0\x01\x12\x41\n\nDebugLevel\x12\x18.lnrpc.DebugLevelRequest\x1a\x19.lnrpc.DebugLevelResponse\x12>\n\tFeeReport\x12\x17.lnrpc.FeeReportRequest\x1a\x18.lnrpc.FeeReportResponse\x12N\n\x13UpdateChannelPolicy\x12\x1a.lnrpc.PolicyUpdateRequest\x1a\x1b.lnrpc.PolicyUpdateResponse\x12V\n\x11\x46orwardingHistory\x12\x1f.lnrpc.ForwardingHistoryRequest\x1a .lnrpc.ForwardingHistoryResponse\x12N\n\x13\x45xportChannelBackup\x12!.lnrpc.ExportChannelBackupRequest\x1a\x14.lnrpc.ChannelBackup\x12T\n\x17\x45xportAllChannelBackups\x12\x1e.lnrpc.ChanBackupExportRequest\x1a\x19.lnrpc.ChanBackupSnapshot\x12N\n\x10VerifyChanBackup\x12\x19.lnrpc.ChanBackupSnapshot\x1a\x1f.lnrpc.VerifyChanBackupResponse\x12V\n\x15RestoreChannelBackups\x12\x1f.lnrpc.RestoreChanBackupRequest\x1a\x1c.lnrpc.RestoreBackupResponse\x12X\n\x17SubscribeChannelBackups\x12 .lnrpc.ChannelBackupSubscription\x1a\x19.lnrpc.ChanBackupSnapshot0\x01\x12G\n\x0c\x42\x61keMacaroon\x12\x1a.lnrpc.BakeMacaroonRequest\x1a\x1b.lnrpc.BakeMacaroonResponse\x12P\n\x0fListMacaroonIDs\x12\x1d.lnrpc.ListMacaroonIDsRequest\x1a\x1e.lnrpc.ListMacaroonIDsResponse\x12S\n\x10\x44\x65leteMacaroonID\x12\x1e.lnrpc.DeleteMacaroonIDRequest\x1a\x1f.lnrpc.DeleteMacaroonIDResponse\x12P\n\x0fListPermissions\x12\x1d.lnrpc.ListPermissionsRequest\x1a\x1e.lnrpc.ListPermissionsResponse\x12S\n\x18\x43heckMacaroonPermissions\x12\x1a.lnrpc.CheckMacPermRequest\x1a\x1b.lnrpc.CheckMacPermResponse\x12V\n\x15RegisterRPCMiddleware\x12\x1c.lnrpc.RPCMiddlewareResponse\x1a\x1b.lnrpc.RPCMiddlewareRequest(\x01\x30\x01\x12V\n\x11SendCustomMessage\x12\x1f.lnrpc.SendCustomMessageRequest\x1a .lnrpc.SendCustomMessageResponse\x12X\n\x17SubscribeCustomMessages\x12%.lnrpc.SubscribeCustomMessagesRequest\x1a\x14.lnrpc.CustomMessage0\x01\x42\'Z%github.com/lightningnetwork/lnd/lnrpcb\x06proto3' ) -_ADDRESSTYPE = _descriptor.EnumDescriptor( - name="AddressType", - full_name="lnrpc.AddressType", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="WITNESS_PUBKEY_HASH", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="NESTED_PUBKEY_HASH", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="UNUSED_WITNESS_PUBKEY_HASH", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="UNUSED_NESTED_PUBKEY_HASH", - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=26639, - serialized_end=26764, -) -_sym_db.RegisterEnumDescriptor(_ADDRESSTYPE) - +_OUTPUTSCRIPTTYPE = DESCRIPTOR.enum_types_by_name["OutputScriptType"] +OutputScriptType = enum_type_wrapper.EnumTypeWrapper(_OUTPUTSCRIPTTYPE) +_ADDRESSTYPE = DESCRIPTOR.enum_types_by_name["AddressType"] AddressType = enum_type_wrapper.EnumTypeWrapper(_ADDRESSTYPE) -_COMMITMENTTYPE = _descriptor.EnumDescriptor( - name="CommitmentType", - full_name="lnrpc.CommitmentType", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="UNKNOWN_COMMITMENT_TYPE", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="LEGACY", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="STATIC_REMOTE_KEY", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="ANCHORS", - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="SCRIPT_ENFORCED_LEASE", - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=26766, - serialized_end=26886, -) -_sym_db.RegisterEnumDescriptor(_COMMITMENTTYPE) - +_COMMITMENTTYPE = DESCRIPTOR.enum_types_by_name["CommitmentType"] CommitmentType = enum_type_wrapper.EnumTypeWrapper(_COMMITMENTTYPE) -_INITIATOR = _descriptor.EnumDescriptor( - name="Initiator", - full_name="lnrpc.Initiator", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="INITIATOR_UNKNOWN", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="INITIATOR_LOCAL", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="INITIATOR_REMOTE", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="INITIATOR_BOTH", - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=26888, - serialized_end=26985, -) -_sym_db.RegisterEnumDescriptor(_INITIATOR) - +_INITIATOR = DESCRIPTOR.enum_types_by_name["Initiator"] Initiator = enum_type_wrapper.EnumTypeWrapper(_INITIATOR) -_RESOLUTIONTYPE = _descriptor.EnumDescriptor( - name="ResolutionType", - full_name="lnrpc.ResolutionType", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="TYPE_UNKNOWN", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="ANCHOR", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="INCOMING_HTLC", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="OUTGOING_HTLC", - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="COMMIT", - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=26987, - serialized_end=27083, -) -_sym_db.RegisterEnumDescriptor(_RESOLUTIONTYPE) - +_RESOLUTIONTYPE = DESCRIPTOR.enum_types_by_name["ResolutionType"] ResolutionType = enum_type_wrapper.EnumTypeWrapper(_RESOLUTIONTYPE) -_RESOLUTIONOUTCOME = _descriptor.EnumDescriptor( - name="ResolutionOutcome", - full_name="lnrpc.ResolutionOutcome", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="OUTCOME_UNKNOWN", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="CLAIMED", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="UNCLAIMED", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="ABANDONED", - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="FIRST_STAGE", - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="TIMEOUT", - index=5, - number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=27085, - serialized_end=27198, -) -_sym_db.RegisterEnumDescriptor(_RESOLUTIONOUTCOME) - +_RESOLUTIONOUTCOME = DESCRIPTOR.enum_types_by_name["ResolutionOutcome"] ResolutionOutcome = enum_type_wrapper.EnumTypeWrapper(_RESOLUTIONOUTCOME) -_NODEMETRICTYPE = _descriptor.EnumDescriptor( - name="NodeMetricType", - full_name="lnrpc.NodeMetricType", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="UNKNOWN", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="BETWEENNESS_CENTRALITY", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=27200, - serialized_end=27257, -) -_sym_db.RegisterEnumDescriptor(_NODEMETRICTYPE) - +_NODEMETRICTYPE = DESCRIPTOR.enum_types_by_name["NodeMetricType"] NodeMetricType = enum_type_wrapper.EnumTypeWrapper(_NODEMETRICTYPE) -_INVOICEHTLCSTATE = _descriptor.EnumDescriptor( - name="InvoiceHTLCState", - full_name="lnrpc.InvoiceHTLCState", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="ACCEPTED", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="SETTLED", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="CANCELED", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=27259, - serialized_end=27318, -) -_sym_db.RegisterEnumDescriptor(_INVOICEHTLCSTATE) - +_INVOICEHTLCSTATE = DESCRIPTOR.enum_types_by_name["InvoiceHTLCState"] InvoiceHTLCState = enum_type_wrapper.EnumTypeWrapper(_INVOICEHTLCSTATE) -_PAYMENTFAILUREREASON = _descriptor.EnumDescriptor( - name="PaymentFailureReason", - full_name="lnrpc.PaymentFailureReason", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="FAILURE_REASON_NONE", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="FAILURE_REASON_TIMEOUT", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="FAILURE_REASON_NO_ROUTE", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="FAILURE_REASON_ERROR", - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="FAILURE_REASON_INCORRECT_PAYMENT_DETAILS", - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="FAILURE_REASON_INSUFFICIENT_BALANCE", - index=5, - number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=27321, - serialized_end=27538, -) -_sym_db.RegisterEnumDescriptor(_PAYMENTFAILUREREASON) - +_PAYMENTFAILUREREASON = DESCRIPTOR.enum_types_by_name["PaymentFailureReason"] PaymentFailureReason = enum_type_wrapper.EnumTypeWrapper(_PAYMENTFAILUREREASON) -_FEATUREBIT = _descriptor.EnumDescriptor( - name="FeatureBit", - full_name="lnrpc.FeatureBit", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="DATALOSS_PROTECT_REQ", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="DATALOSS_PROTECT_OPT", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="INITIAL_ROUING_SYNC", - index=2, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="UPFRONT_SHUTDOWN_SCRIPT_REQ", - index=3, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="UPFRONT_SHUTDOWN_SCRIPT_OPT", - index=4, - number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="GOSSIP_QUERIES_REQ", - index=5, - number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="GOSSIP_QUERIES_OPT", - index=6, - number=7, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="TLV_ONION_REQ", - index=7, - number=8, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="TLV_ONION_OPT", - index=8, - number=9, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="EXT_GOSSIP_QUERIES_REQ", - index=9, - number=10, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="EXT_GOSSIP_QUERIES_OPT", - index=10, - number=11, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="STATIC_REMOTE_KEY_REQ", - index=11, - number=12, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="STATIC_REMOTE_KEY_OPT", - index=12, - number=13, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="PAYMENT_ADDR_REQ", - index=13, - number=14, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="PAYMENT_ADDR_OPT", - index=14, - number=15, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="MPP_REQ", - index=15, - number=16, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="MPP_OPT", - index=16, - number=17, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="WUMBO_CHANNELS_REQ", - index=17, - number=18, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="WUMBO_CHANNELS_OPT", - index=18, - number=19, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="ANCHORS_REQ", - index=19, - number=20, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="ANCHORS_OPT", - index=20, - number=21, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="ANCHORS_ZERO_FEE_HTLC_REQ", - index=21, - number=22, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="ANCHORS_ZERO_FEE_HTLC_OPT", - index=22, - number=23, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="AMP_REQ", - index=23, - number=30, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="AMP_OPT", - index=24, - number=31, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=27541, - serialized_end=28132, -) -_sym_db.RegisterEnumDescriptor(_FEATUREBIT) - +_FEATUREBIT = DESCRIPTOR.enum_types_by_name["FeatureBit"] FeatureBit = enum_type_wrapper.EnumTypeWrapper(_FEATUREBIT) -_UPDATEFAILURE = _descriptor.EnumDescriptor( - name="UpdateFailure", - full_name="lnrpc.UpdateFailure", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="UPDATE_FAILURE_UNKNOWN", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="UPDATE_FAILURE_PENDING", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="UPDATE_FAILURE_NOT_FOUND", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="UPDATE_FAILURE_INTERNAL_ERR", - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="UPDATE_FAILURE_INVALID_PARAMETER", - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=28135, - serialized_end=28307, -) -_sym_db.RegisterEnumDescriptor(_UPDATEFAILURE) - +_UPDATEFAILURE = DESCRIPTOR.enum_types_by_name["UpdateFailure"] UpdateFailure = enum_type_wrapper.EnumTypeWrapper(_UPDATEFAILURE) +SCRIPT_TYPE_PUBKEY_HASH = 0 +SCRIPT_TYPE_SCRIPT_HASH = 1 +SCRIPT_TYPE_WITNESS_V0_PUBKEY_HASH = 2 +SCRIPT_TYPE_WITNESS_V0_SCRIPT_HASH = 3 +SCRIPT_TYPE_PUBKEY = 4 +SCRIPT_TYPE_MULTISIG = 5 +SCRIPT_TYPE_NULLDATA = 6 +SCRIPT_TYPE_NON_STANDARD = 7 +SCRIPT_TYPE_WITNESS_UNKNOWN = 8 WITNESS_PUBKEY_HASH = 0 NESTED_PUBKEY_HASH = 1 UNUSED_WITNESS_PUBKEY_HASH = 2 UNUSED_NESTED_PUBKEY_HASH = 3 +TAPROOT_PUBKEY = 4 +UNUSED_TAPROOT_PUBKEY = 5 UNKNOWN_COMMITMENT_TYPE = 0 LEGACY = 1 STATIC_REMOTE_KEY = 2 @@ -769,20558 +118,270 @@ UPDATE_FAILURE_INTERNAL_ERR = 3 UPDATE_FAILURE_INVALID_PARAMETER = 4 -_CHANNELCLOSESUMMARY_CLOSURETYPE = _descriptor.EnumDescriptor( - name="ClosureType", - full_name="lnrpc.ChannelCloseSummary.ClosureType", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="COOPERATIVE_CLOSE", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="LOCAL_FORCE_CLOSE", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="REMOTE_FORCE_CLOSE", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="BREACH_CLOSE", - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="FUNDING_CANCELED", - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="ABANDONED", - index=5, - number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=5664, - serialized_end=5802, -) -_sym_db.RegisterEnumDescriptor(_CHANNELCLOSESUMMARY_CLOSURETYPE) - -_PEER_SYNCTYPE = _descriptor.EnumDescriptor( - name="SyncType", - full_name="lnrpc.Peer.SyncType", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="UNKNOWN_SYNC", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="ACTIVE_SYNC", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="PASSIVE_SYNC", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="PINNED_SYNC", - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=6624, - serialized_end=6704, -) -_sym_db.RegisterEnumDescriptor(_PEER_SYNCTYPE) - -_PEEREVENT_EVENTTYPE = _descriptor.EnumDescriptor( - name="EventType", - full_name="lnrpc.PeerEvent.EventType", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="PEER_ONLINE", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="PEER_OFFLINE", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=6948, - serialized_end=6994, -) -_sym_db.RegisterEnumDescriptor(_PEEREVENT_EVENTTYPE) - -_PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL_ANCHORSTATE = _descriptor.EnumDescriptor( - name="AnchorState", - full_name="lnrpc.PendingChannelsResponse.ForceClosedChannel.AnchorState", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="LIMBO", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="RECOVERED", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="LOST", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=12414, - serialized_end=12463, -) -_sym_db.RegisterEnumDescriptor(_PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL_ANCHORSTATE) - -_CHANNELEVENTUPDATE_UPDATETYPE = _descriptor.EnumDescriptor( - name="UpdateType", - full_name="lnrpc.ChannelEventUpdate.UpdateType", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="OPEN_CHANNEL", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="CLOSED_CHANNEL", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="ACTIVE_CHANNEL", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="INACTIVE_CHANNEL", - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="PENDING_OPEN_CHANNEL", - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="FULLY_RESOLVED_CHANNEL", - index=5, - number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=12868, - serialized_end=13014, -) -_sym_db.RegisterEnumDescriptor(_CHANNELEVENTUPDATE_UPDATETYPE) - -_INVOICE_INVOICESTATE = _descriptor.EnumDescriptor( - name="InvoiceState", - full_name="lnrpc.Invoice.InvoiceState", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="OPEN", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="SETTLED", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="CANCELED", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="ACCEPTED", - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=18957, - serialized_end=19022, -) -_sym_db.RegisterEnumDescriptor(_INVOICE_INVOICESTATE) - -_PAYMENT_PAYMENTSTATUS = _descriptor.EnumDescriptor( - name="PaymentStatus", - full_name="lnrpc.Payment.PaymentStatus", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="UNKNOWN", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="IN_FLIGHT", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="SUCCEEDED", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="FAILED", - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=20350, - serialized_end=20420, -) -_sym_db.RegisterEnumDescriptor(_PAYMENT_PAYMENTSTATUS) - -_HTLCATTEMPT_HTLCSTATUS = _descriptor.EnumDescriptor( - name="HTLCStatus", - full_name="lnrpc.HTLCAttempt.HTLCStatus", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="IN_FLIGHT", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="SUCCEEDED", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="FAILED", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=20641, - serialized_end=20695, -) -_sym_db.RegisterEnumDescriptor(_HTLCATTEMPT_HTLCSTATUS) - -_FAILURE_FAILURECODE = _descriptor.EnumDescriptor( - name="FailureCode", - full_name="lnrpc.Failure.FailureCode", - filename=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - values=[ - _descriptor.EnumValueDescriptor( - name="RESERVED", - index=0, - number=0, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS", - index=1, - number=1, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="INCORRECT_PAYMENT_AMOUNT", - index=2, - number=2, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="FINAL_INCORRECT_CLTV_EXPIRY", - index=3, - number=3, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="FINAL_INCORRECT_HTLC_AMOUNT", - index=4, - number=4, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="FINAL_EXPIRY_TOO_SOON", - index=5, - number=5, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="INVALID_REALM", - index=6, - number=6, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="EXPIRY_TOO_SOON", - index=7, - number=7, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="INVALID_ONION_VERSION", - index=8, - number=8, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="INVALID_ONION_HMAC", - index=9, - number=9, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="INVALID_ONION_KEY", - index=10, - number=10, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="AMOUNT_BELOW_MINIMUM", - index=11, - number=11, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="FEE_INSUFFICIENT", - index=12, - number=12, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="INCORRECT_CLTV_EXPIRY", - index=13, - number=13, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="CHANNEL_DISABLED", - index=14, - number=14, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="TEMPORARY_CHANNEL_FAILURE", - index=15, - number=15, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="REQUIRED_NODE_FEATURE_MISSING", - index=16, - number=16, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="REQUIRED_CHANNEL_FEATURE_MISSING", - index=17, - number=17, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="UNKNOWN_NEXT_PEER", - index=18, - number=18, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="TEMPORARY_NODE_FAILURE", - index=19, - number=19, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="PERMANENT_NODE_FAILURE", - index=20, - number=20, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="PERMANENT_CHANNEL_FAILURE", - index=21, - number=21, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="EXPIRY_TOO_FAR", - index=22, - number=22, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="MPP_TIMEOUT", - index=23, - number=23, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="INVALID_ONION_PAYLOAD", - index=24, - number=24, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="INTERNAL_FAILURE", - index=25, - number=997, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="UNKNOWN_FAILURE", - index=26, - number=998, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.EnumValueDescriptor( - name="UNREADABLE_FAILURE", - index=27, - number=999, - serialized_options=None, - type=None, - create_key=_descriptor._internal_create_key, - ), - ], - containing_type=None, - serialized_options=None, - serialized_start=24591, - serialized_end=25342, -) -_sym_db.RegisterEnumDescriptor(_FAILURE_FAILURECODE) - - -_SUBSCRIBECUSTOMMESSAGESREQUEST = _descriptor.Descriptor( - name="SubscribeCustomMessagesRequest", - full_name="lnrpc.SubscribeCustomMessagesRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=26, - serialized_end=58, -) - - -_CUSTOMMESSAGE = _descriptor.Descriptor( - name="CustomMessage", - full_name="lnrpc.CustomMessage", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="peer", - full_name="lnrpc.CustomMessage.peer", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="type", - full_name="lnrpc.CustomMessage.type", - index=1, - number=2, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="data", - full_name="lnrpc.CustomMessage.data", - index=2, - number=3, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=60, - serialized_end=117, -) - - -_SENDCUSTOMMESSAGEREQUEST = _descriptor.Descriptor( - name="SendCustomMessageRequest", - full_name="lnrpc.SendCustomMessageRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="peer", - full_name="lnrpc.SendCustomMessageRequest.peer", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="type", - full_name="lnrpc.SendCustomMessageRequest.type", - index=1, - number=2, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="data", - full_name="lnrpc.SendCustomMessageRequest.data", - index=2, - number=3, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=119, - serialized_end=187, -) - - -_SENDCUSTOMMESSAGERESPONSE = _descriptor.Descriptor( - name="SendCustomMessageResponse", - full_name="lnrpc.SendCustomMessageResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=189, - serialized_end=216, -) - - -_UTXO = _descriptor.Descriptor( - name="Utxo", - full_name="lnrpc.Utxo", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="address_type", - full_name="lnrpc.Utxo.address_type", - index=0, - number=1, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="address", - full_name="lnrpc.Utxo.address", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amount_sat", - full_name="lnrpc.Utxo.amount_sat", - index=2, - number=3, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pk_script", - full_name="lnrpc.Utxo.pk_script", - index=3, - number=4, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="outpoint", - full_name="lnrpc.Utxo.outpoint", - index=4, - number=5, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="confirmations", - full_name="lnrpc.Utxo.confirmations", - index=5, - number=6, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=219, - serialized_end=381, -) - - -_TRANSACTION = _descriptor.Descriptor( - name="Transaction", - full_name="lnrpc.Transaction", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="tx_hash", - full_name="lnrpc.Transaction.tx_hash", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amount", - full_name="lnrpc.Transaction.amount", - index=1, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="num_confirmations", - full_name="lnrpc.Transaction.num_confirmations", - index=2, - number=3, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="block_hash", - full_name="lnrpc.Transaction.block_hash", - index=3, - number=4, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="block_height", - full_name="lnrpc.Transaction.block_height", - index=4, - number=5, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="time_stamp", - full_name="lnrpc.Transaction.time_stamp", - index=5, - number=6, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="total_fees", - full_name="lnrpc.Transaction.total_fees", - index=6, - number=7, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="dest_addresses", - full_name="lnrpc.Transaction.dest_addresses", - index=7, - number=8, - type=9, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="raw_tx_hex", - full_name="lnrpc.Transaction.raw_tx_hex", - index=8, - number=9, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="label", - full_name="lnrpc.Transaction.label", - index=9, - number=10, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=384, - serialized_end=598, -) - - -_GETTRANSACTIONSREQUEST = _descriptor.Descriptor( - name="GetTransactionsRequest", - full_name="lnrpc.GetTransactionsRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="start_height", - full_name="lnrpc.GetTransactionsRequest.start_height", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="end_height", - full_name="lnrpc.GetTransactionsRequest.end_height", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="account", - full_name="lnrpc.GetTransactionsRequest.account", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=600, - serialized_end=683, -) - - -_TRANSACTIONDETAILS = _descriptor.Descriptor( - name="TransactionDetails", - full_name="lnrpc.TransactionDetails", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="transactions", - full_name="lnrpc.TransactionDetails.transactions", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=685, - serialized_end=747, -) - - -_FEELIMIT = _descriptor.Descriptor( - name="FeeLimit", - full_name="lnrpc.FeeLimit", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="fixed", - full_name="lnrpc.FeeLimit.fixed", - index=0, - number=1, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fixed_msat", - full_name="lnrpc.FeeLimit.fixed_msat", - index=1, - number=3, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="percent", - full_name="lnrpc.FeeLimit.percent", - index=2, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name="limit", - full_name="lnrpc.FeeLimit.limit", - index=0, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - ) - ], - serialized_start=749, - serialized_end=826, -) - - -_SENDREQUEST_DESTCUSTOMRECORDSENTRY = _descriptor.Descriptor( - name="DestCustomRecordsEntry", - full_name="lnrpc.SendRequest.DestCustomRecordsEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="lnrpc.SendRequest.DestCustomRecordsEntry.key", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="lnrpc.SendRequest.DestCustomRecordsEntry.value", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1295, - serialized_end=1351, -) - -_SENDREQUEST = _descriptor.Descriptor( - name="SendRequest", - full_name="lnrpc.SendRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="dest", - full_name="lnrpc.SendRequest.dest", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="dest_string", - full_name="lnrpc.SendRequest.dest_string", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amt", - full_name="lnrpc.SendRequest.amt", - index=2, - number=3, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amt_msat", - full_name="lnrpc.SendRequest.amt_msat", - index=3, - number=12, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="payment_hash", - full_name="lnrpc.SendRequest.payment_hash", - index=4, - number=4, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="payment_hash_string", - full_name="lnrpc.SendRequest.payment_hash_string", - index=5, - number=5, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="payment_request", - full_name="lnrpc.SendRequest.payment_request", - index=6, - number=6, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="final_cltv_delta", - full_name="lnrpc.SendRequest.final_cltv_delta", - index=7, - number=7, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fee_limit", - full_name="lnrpc.SendRequest.fee_limit", - index=8, - number=8, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="outgoing_chan_id", - full_name="lnrpc.SendRequest.outgoing_chan_id", - index=9, - number=9, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"0\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="last_hop_pubkey", - full_name="lnrpc.SendRequest.last_hop_pubkey", - index=10, - number=13, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="cltv_limit", - full_name="lnrpc.SendRequest.cltv_limit", - index=11, - number=10, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="dest_custom_records", - full_name="lnrpc.SendRequest.dest_custom_records", - index=12, - number=11, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="allow_self_payment", - full_name="lnrpc.SendRequest.allow_self_payment", - index=13, - number=14, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="dest_features", - full_name="lnrpc.SendRequest.dest_features", - index=14, - number=15, - type=14, - cpp_type=8, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="payment_addr", - full_name="lnrpc.SendRequest.payment_addr", - index=15, - number=16, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[_SENDREQUEST_DESTCUSTOMRECORDSENTRY], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=829, - serialized_end=1351, -) - - -_SENDRESPONSE = _descriptor.Descriptor( - name="SendResponse", - full_name="lnrpc.SendResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="payment_error", - full_name="lnrpc.SendResponse.payment_error", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="payment_preimage", - full_name="lnrpc.SendResponse.payment_preimage", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="payment_route", - full_name="lnrpc.SendResponse.payment_route", - index=2, - number=3, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="payment_hash", - full_name="lnrpc.SendResponse.payment_hash", - index=3, - number=4, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1353, - serialized_end=1475, -) - - -_SENDTOROUTEREQUEST = _descriptor.Descriptor( - name="SendToRouteRequest", - full_name="lnrpc.SendToRouteRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="payment_hash", - full_name="lnrpc.SendToRouteRequest.payment_hash", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="payment_hash_string", - full_name="lnrpc.SendToRouteRequest.payment_hash_string", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="route", - full_name="lnrpc.SendToRouteRequest.route", - index=2, - number=4, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1477, - serialized_end=1587, -) - - -_CHANNELACCEPTREQUEST = _descriptor.Descriptor( - name="ChannelAcceptRequest", - full_name="lnrpc.ChannelAcceptRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="node_pubkey", - full_name="lnrpc.ChannelAcceptRequest.node_pubkey", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chain_hash", - full_name="lnrpc.ChannelAcceptRequest.chain_hash", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pending_chan_id", - full_name="lnrpc.ChannelAcceptRequest.pending_chan_id", - index=2, - number=3, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="funding_amt", - full_name="lnrpc.ChannelAcceptRequest.funding_amt", - index=3, - number=4, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="push_amt", - full_name="lnrpc.ChannelAcceptRequest.push_amt", - index=4, - number=5, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="dust_limit", - full_name="lnrpc.ChannelAcceptRequest.dust_limit", - index=5, - number=6, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="max_value_in_flight", - full_name="lnrpc.ChannelAcceptRequest.max_value_in_flight", - index=6, - number=7, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="channel_reserve", - full_name="lnrpc.ChannelAcceptRequest.channel_reserve", - index=7, - number=8, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="min_htlc", - full_name="lnrpc.ChannelAcceptRequest.min_htlc", - index=8, - number=9, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fee_per_kw", - full_name="lnrpc.ChannelAcceptRequest.fee_per_kw", - index=9, - number=10, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="csv_delay", - full_name="lnrpc.ChannelAcceptRequest.csv_delay", - index=10, - number=11, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="max_accepted_htlcs", - full_name="lnrpc.ChannelAcceptRequest.max_accepted_htlcs", - index=11, - number=12, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="channel_flags", - full_name="lnrpc.ChannelAcceptRequest.channel_flags", - index=12, - number=13, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="commitment_type", - full_name="lnrpc.ChannelAcceptRequest.commitment_type", - index=13, - number=14, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1590, - serialized_end=1947, -) - - -_CHANNELACCEPTRESPONSE = _descriptor.Descriptor( - name="ChannelAcceptResponse", - full_name="lnrpc.ChannelAcceptResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="accept", - full_name="lnrpc.ChannelAcceptResponse.accept", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pending_chan_id", - full_name="lnrpc.ChannelAcceptResponse.pending_chan_id", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="error", - full_name="lnrpc.ChannelAcceptResponse.error", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="upfront_shutdown", - full_name="lnrpc.ChannelAcceptResponse.upfront_shutdown", - index=3, - number=4, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="csv_delay", - full_name="lnrpc.ChannelAcceptResponse.csv_delay", - index=4, - number=5, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="reserve_sat", - full_name="lnrpc.ChannelAcceptResponse.reserve_sat", - index=5, - number=6, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="in_flight_max_msat", - full_name="lnrpc.ChannelAcceptResponse.in_flight_max_msat", - index=6, - number=7, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="max_htlc_count", - full_name="lnrpc.ChannelAcceptResponse.max_htlc_count", - index=7, - number=8, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="min_htlc_in", - full_name="lnrpc.ChannelAcceptResponse.min_htlc_in", - index=8, - number=9, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="min_accept_depth", - full_name="lnrpc.ChannelAcceptResponse.min_accept_depth", - index=9, - number=10, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1950, - serialized_end=2194, -) - - -_CHANNELPOINT = _descriptor.Descriptor( - name="ChannelPoint", - full_name="lnrpc.ChannelPoint", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="funding_txid_bytes", - full_name="lnrpc.ChannelPoint.funding_txid_bytes", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="funding_txid_str", - full_name="lnrpc.ChannelPoint.funding_txid_str", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="output_index", - full_name="lnrpc.ChannelPoint.output_index", - index=2, - number=3, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name="funding_txid", - full_name="lnrpc.ChannelPoint.funding_txid", - index=0, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - ) - ], - serialized_start=2196, - serialized_end=2306, -) - - -_OUTPOINT = _descriptor.Descriptor( - name="OutPoint", - full_name="lnrpc.OutPoint", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="txid_bytes", - full_name="lnrpc.OutPoint.txid_bytes", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="txid_str", - full_name="lnrpc.OutPoint.txid_str", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="output_index", - full_name="lnrpc.OutPoint.output_index", - index=2, - number=3, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=2308, - serialized_end=2378, -) - - -_LIGHTNINGADDRESS = _descriptor.Descriptor( - name="LightningAddress", - full_name="lnrpc.LightningAddress", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="pubkey", - full_name="lnrpc.LightningAddress.pubkey", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="host", - full_name="lnrpc.LightningAddress.host", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=2380, - serialized_end=2428, -) - - -_ESTIMATEFEEREQUEST_ADDRTOAMOUNTENTRY = _descriptor.Descriptor( - name="AddrToAmountEntry", - full_name="lnrpc.EstimateFeeRequest.AddrToAmountEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="lnrpc.EstimateFeeRequest.AddrToAmountEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="lnrpc.EstimateFeeRequest.AddrToAmountEntry.value", - index=1, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=2587, - serialized_end=2638, -) - -_ESTIMATEFEEREQUEST = _descriptor.Descriptor( - name="EstimateFeeRequest", - full_name="lnrpc.EstimateFeeRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="AddrToAmount", - full_name="lnrpc.EstimateFeeRequest.AddrToAmount", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="target_conf", - full_name="lnrpc.EstimateFeeRequest.target_conf", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="min_confs", - full_name="lnrpc.EstimateFeeRequest.min_confs", - index=2, - number=3, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="spend_unconfirmed", - full_name="lnrpc.EstimateFeeRequest.spend_unconfirmed", - index=3, - number=4, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[_ESTIMATEFEEREQUEST_ADDRTOAMOUNTENTRY], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=2431, - serialized_end=2638, -) - - -_ESTIMATEFEERESPONSE = _descriptor.Descriptor( - name="EstimateFeeResponse", - full_name="lnrpc.EstimateFeeResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="fee_sat", - full_name="lnrpc.EstimateFeeResponse.fee_sat", - index=0, - number=1, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="feerate_sat_per_byte", - full_name="lnrpc.EstimateFeeResponse.feerate_sat_per_byte", - index=1, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="sat_per_vbyte", - full_name="lnrpc.EstimateFeeResponse.sat_per_vbyte", - index=2, - number=3, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=2640, - serialized_end=2735, -) - - -_SENDMANYREQUEST_ADDRTOAMOUNTENTRY = _descriptor.Descriptor( - name="AddrToAmountEntry", - full_name="lnrpc.SendManyRequest.AddrToAmountEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="lnrpc.SendManyRequest.AddrToAmountEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="lnrpc.SendManyRequest.AddrToAmountEntry.value", - index=1, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=2587, - serialized_end=2638, -) - -_SENDMANYREQUEST = _descriptor.Descriptor( - name="SendManyRequest", - full_name="lnrpc.SendManyRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="AddrToAmount", - full_name="lnrpc.SendManyRequest.AddrToAmount", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="target_conf", - full_name="lnrpc.SendManyRequest.target_conf", - index=1, - number=3, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="sat_per_vbyte", - full_name="lnrpc.SendManyRequest.sat_per_vbyte", - index=2, - number=4, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="sat_per_byte", - full_name="lnrpc.SendManyRequest.sat_per_byte", - index=3, - number=5, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="label", - full_name="lnrpc.SendManyRequest.label", - index=4, - number=6, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="min_confs", - full_name="lnrpc.SendManyRequest.min_confs", - index=5, - number=7, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="spend_unconfirmed", - full_name="lnrpc.SendManyRequest.spend_unconfirmed", - index=6, - number=8, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[_SENDMANYREQUEST_ADDRTOAMOUNTENTRY], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=2738, - serialized_end=3003, -) - - -_SENDMANYRESPONSE = _descriptor.Descriptor( - name="SendManyResponse", - full_name="lnrpc.SendManyResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="txid", - full_name="lnrpc.SendManyResponse.txid", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3005, - serialized_end=3037, -) - - -_SENDCOINSREQUEST = _descriptor.Descriptor( - name="SendCoinsRequest", - full_name="lnrpc.SendCoinsRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="addr", - full_name="lnrpc.SendCoinsRequest.addr", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amount", - full_name="lnrpc.SendCoinsRequest.amount", - index=1, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="target_conf", - full_name="lnrpc.SendCoinsRequest.target_conf", - index=2, - number=3, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="sat_per_vbyte", - full_name="lnrpc.SendCoinsRequest.sat_per_vbyte", - index=3, - number=4, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="sat_per_byte", - full_name="lnrpc.SendCoinsRequest.sat_per_byte", - index=4, - number=5, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="send_all", - full_name="lnrpc.SendCoinsRequest.send_all", - index=5, - number=6, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="label", - full_name="lnrpc.SendCoinsRequest.label", - index=6, - number=7, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="min_confs", - full_name="lnrpc.SendCoinsRequest.min_confs", - index=7, - number=8, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="spend_unconfirmed", - full_name="lnrpc.SendCoinsRequest.spend_unconfirmed", - index=8, - number=9, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3040, - serialized_end=3237, -) - - -_SENDCOINSRESPONSE = _descriptor.Descriptor( - name="SendCoinsResponse", - full_name="lnrpc.SendCoinsResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="txid", - full_name="lnrpc.SendCoinsResponse.txid", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3239, - serialized_end=3272, -) - - -_LISTUNSPENTREQUEST = _descriptor.Descriptor( - name="ListUnspentRequest", - full_name="lnrpc.ListUnspentRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="min_confs", - full_name="lnrpc.ListUnspentRequest.min_confs", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="max_confs", - full_name="lnrpc.ListUnspentRequest.max_confs", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="account", - full_name="lnrpc.ListUnspentRequest.account", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3274, - serialized_end=3349, -) - - -_LISTUNSPENTRESPONSE = _descriptor.Descriptor( - name="ListUnspentResponse", - full_name="lnrpc.ListUnspentResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="utxos", - full_name="lnrpc.ListUnspentResponse.utxos", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3351, - serialized_end=3400, -) - - -_NEWADDRESSREQUEST = _descriptor.Descriptor( - name="NewAddressRequest", - full_name="lnrpc.NewAddressRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="type", - full_name="lnrpc.NewAddressRequest.type", - index=0, - number=1, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="account", - full_name="lnrpc.NewAddressRequest.account", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3402, - serialized_end=3472, -) - - -_NEWADDRESSRESPONSE = _descriptor.Descriptor( - name="NewAddressResponse", - full_name="lnrpc.NewAddressResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="address", - full_name="lnrpc.NewAddressResponse.address", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3474, - serialized_end=3511, -) - - -_SIGNMESSAGEREQUEST = _descriptor.Descriptor( - name="SignMessageRequest", - full_name="lnrpc.SignMessageRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="msg", - full_name="lnrpc.SignMessageRequest.msg", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="single_hash", - full_name="lnrpc.SignMessageRequest.single_hash", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3513, - serialized_end=3567, -) - - -_SIGNMESSAGERESPONSE = _descriptor.Descriptor( - name="SignMessageResponse", - full_name="lnrpc.SignMessageResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="signature", - full_name="lnrpc.SignMessageResponse.signature", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3569, - serialized_end=3609, -) - - -_VERIFYMESSAGEREQUEST = _descriptor.Descriptor( - name="VerifyMessageRequest", - full_name="lnrpc.VerifyMessageRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="msg", - full_name="lnrpc.VerifyMessageRequest.msg", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="signature", - full_name="lnrpc.VerifyMessageRequest.signature", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3611, - serialized_end=3665, -) - - -_VERIFYMESSAGERESPONSE = _descriptor.Descriptor( - name="VerifyMessageResponse", - full_name="lnrpc.VerifyMessageResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="valid", - full_name="lnrpc.VerifyMessageResponse.valid", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pubkey", - full_name="lnrpc.VerifyMessageResponse.pubkey", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3667, - serialized_end=3721, -) - - -_CONNECTPEERREQUEST = _descriptor.Descriptor( - name="ConnectPeerRequest", - full_name="lnrpc.ConnectPeerRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="addr", - full_name="lnrpc.ConnectPeerRequest.addr", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="perm", - full_name="lnrpc.ConnectPeerRequest.perm", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="timeout", - full_name="lnrpc.ConnectPeerRequest.timeout", - index=2, - number=3, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3723, - serialized_end=3813, -) - - -_CONNECTPEERRESPONSE = _descriptor.Descriptor( - name="ConnectPeerResponse", - full_name="lnrpc.ConnectPeerResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3815, - serialized_end=3836, -) - - -_DISCONNECTPEERREQUEST = _descriptor.Descriptor( - name="DisconnectPeerRequest", - full_name="lnrpc.DisconnectPeerRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="pub_key", - full_name="lnrpc.DisconnectPeerRequest.pub_key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3838, - serialized_end=3878, -) - - -_DISCONNECTPEERRESPONSE = _descriptor.Descriptor( - name="DisconnectPeerResponse", - full_name="lnrpc.DisconnectPeerResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3880, - serialized_end=3904, -) - - -_HTLC = _descriptor.Descriptor( - name="HTLC", - full_name="lnrpc.HTLC", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="incoming", - full_name="lnrpc.HTLC.incoming", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amount", - full_name="lnrpc.HTLC.amount", - index=1, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="hash_lock", - full_name="lnrpc.HTLC.hash_lock", - index=2, - number=3, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="expiration_height", - full_name="lnrpc.HTLC.expiration_height", - index=3, - number=4, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="htlc_index", - full_name="lnrpc.HTLC.htlc_index", - index=4, - number=5, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="forwarding_channel", - full_name="lnrpc.HTLC.forwarding_channel", - index=5, - number=6, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="forwarding_htlc_index", - full_name="lnrpc.HTLC.forwarding_htlc_index", - index=6, - number=7, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=3907, - serialized_end=4072, -) - - -_CHANNELCONSTRAINTS = _descriptor.Descriptor( - name="ChannelConstraints", - full_name="lnrpc.ChannelConstraints", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="csv_delay", - full_name="lnrpc.ChannelConstraints.csv_delay", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chan_reserve_sat", - full_name="lnrpc.ChannelConstraints.chan_reserve_sat", - index=1, - number=2, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="dust_limit_sat", - full_name="lnrpc.ChannelConstraints.dust_limit_sat", - index=2, - number=3, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="max_pending_amt_msat", - full_name="lnrpc.ChannelConstraints.max_pending_amt_msat", - index=3, - number=4, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="min_htlc_msat", - full_name="lnrpc.ChannelConstraints.min_htlc_msat", - index=4, - number=5, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="max_accepted_htlcs", - full_name="lnrpc.ChannelConstraints.max_accepted_htlcs", - index=5, - number=6, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4075, - serialized_end=4245, -) - - -_CHANNEL = _descriptor.Descriptor( - name="Channel", - full_name="lnrpc.Channel", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="active", - full_name="lnrpc.Channel.active", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="remote_pubkey", - full_name="lnrpc.Channel.remote_pubkey", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="channel_point", - full_name="lnrpc.Channel.channel_point", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chan_id", - full_name="lnrpc.Channel.chan_id", - index=3, - number=4, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"0\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="capacity", - full_name="lnrpc.Channel.capacity", - index=4, - number=5, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="local_balance", - full_name="lnrpc.Channel.local_balance", - index=5, - number=6, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="remote_balance", - full_name="lnrpc.Channel.remote_balance", - index=6, - number=7, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="commit_fee", - full_name="lnrpc.Channel.commit_fee", - index=7, - number=8, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="commit_weight", - full_name="lnrpc.Channel.commit_weight", - index=8, - number=9, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fee_per_kw", - full_name="lnrpc.Channel.fee_per_kw", - index=9, - number=10, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="unsettled_balance", - full_name="lnrpc.Channel.unsettled_balance", - index=10, - number=11, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="total_satoshis_sent", - full_name="lnrpc.Channel.total_satoshis_sent", - index=11, - number=12, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="total_satoshis_received", - full_name="lnrpc.Channel.total_satoshis_received", - index=12, - number=13, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="num_updates", - full_name="lnrpc.Channel.num_updates", - index=13, - number=14, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pending_htlcs", - full_name="lnrpc.Channel.pending_htlcs", - index=14, - number=15, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="csv_delay", - full_name="lnrpc.Channel.csv_delay", - index=15, - number=16, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="private", - full_name="lnrpc.Channel.private", - index=16, - number=17, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="initiator", - full_name="lnrpc.Channel.initiator", - index=17, - number=18, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chan_status_flags", - full_name="lnrpc.Channel.chan_status_flags", - index=18, - number=19, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="local_chan_reserve_sat", - full_name="lnrpc.Channel.local_chan_reserve_sat", - index=19, - number=20, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="remote_chan_reserve_sat", - full_name="lnrpc.Channel.remote_chan_reserve_sat", - index=20, - number=21, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="static_remote_key", - full_name="lnrpc.Channel.static_remote_key", - index=21, - number=22, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="commitment_type", - full_name="lnrpc.Channel.commitment_type", - index=22, - number=26, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="lifetime", - full_name="lnrpc.Channel.lifetime", - index=23, - number=23, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="uptime", - full_name="lnrpc.Channel.uptime", - index=24, - number=24, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="close_address", - full_name="lnrpc.Channel.close_address", - index=25, - number=25, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="push_amount_sat", - full_name="lnrpc.Channel.push_amount_sat", - index=26, - number=27, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="thaw_height", - full_name="lnrpc.Channel.thaw_height", - index=27, - number=28, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="local_constraints", - full_name="lnrpc.Channel.local_constraints", - index=28, - number=29, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="remote_constraints", - full_name="lnrpc.Channel.remote_constraints", - index=29, - number=30, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=4248, - serialized_end=5064, -) - - -_LISTCHANNELSREQUEST = _descriptor.Descriptor( - name="ListChannelsRequest", - full_name="lnrpc.ListChannelsRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="active_only", - full_name="lnrpc.ListChannelsRequest.active_only", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="inactive_only", - full_name="lnrpc.ListChannelsRequest.inactive_only", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="public_only", - full_name="lnrpc.ListChannelsRequest.public_only", - index=2, - number=3, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="private_only", - full_name="lnrpc.ListChannelsRequest.private_only", - index=3, - number=4, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="peer", - full_name="lnrpc.ListChannelsRequest.peer", - index=4, - number=5, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=5066, - serialized_end=5188, -) - - -_LISTCHANNELSRESPONSE = _descriptor.Descriptor( - name="ListChannelsResponse", - full_name="lnrpc.ListChannelsResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="channels", - full_name="lnrpc.ListChannelsResponse.channels", - index=0, - number=11, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=5190, - serialized_end=5246, -) - - -_CHANNELCLOSESUMMARY = _descriptor.Descriptor( - name="ChannelCloseSummary", - full_name="lnrpc.ChannelCloseSummary", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="channel_point", - full_name="lnrpc.ChannelCloseSummary.channel_point", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chan_id", - full_name="lnrpc.ChannelCloseSummary.chan_id", - index=1, - number=2, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"0\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chain_hash", - full_name="lnrpc.ChannelCloseSummary.chain_hash", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="closing_tx_hash", - full_name="lnrpc.ChannelCloseSummary.closing_tx_hash", - index=3, - number=4, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="remote_pubkey", - full_name="lnrpc.ChannelCloseSummary.remote_pubkey", - index=4, - number=5, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="capacity", - full_name="lnrpc.ChannelCloseSummary.capacity", - index=5, - number=6, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="close_height", - full_name="lnrpc.ChannelCloseSummary.close_height", - index=6, - number=7, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="settled_balance", - full_name="lnrpc.ChannelCloseSummary.settled_balance", - index=7, - number=8, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="time_locked_balance", - full_name="lnrpc.ChannelCloseSummary.time_locked_balance", - index=8, - number=9, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="close_type", - full_name="lnrpc.ChannelCloseSummary.close_type", - index=9, - number=10, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="open_initiator", - full_name="lnrpc.ChannelCloseSummary.open_initiator", - index=10, - number=11, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="close_initiator", - full_name="lnrpc.ChannelCloseSummary.close_initiator", - index=11, - number=12, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="resolutions", - full_name="lnrpc.ChannelCloseSummary.resolutions", - index=12, - number=13, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[_CHANNELCLOSESUMMARY_CLOSURETYPE], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=5249, - serialized_end=5802, -) - - -_RESOLUTION = _descriptor.Descriptor( - name="Resolution", - full_name="lnrpc.Resolution", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="resolution_type", - full_name="lnrpc.Resolution.resolution_type", - index=0, - number=1, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="outcome", - full_name="lnrpc.Resolution.outcome", - index=1, - number=2, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="outpoint", - full_name="lnrpc.Resolution.outpoint", - index=2, - number=3, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amount_sat", - full_name="lnrpc.Resolution.amount_sat", - index=3, - number=4, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="sweep_txid", - full_name="lnrpc.Resolution.sweep_txid", - index=4, - number=5, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=5805, - serialized_end=5983, -) - - -_CLOSEDCHANNELSREQUEST = _descriptor.Descriptor( - name="ClosedChannelsRequest", - full_name="lnrpc.ClosedChannelsRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="cooperative", - full_name="lnrpc.ClosedChannelsRequest.cooperative", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="local_force", - full_name="lnrpc.ClosedChannelsRequest.local_force", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="remote_force", - full_name="lnrpc.ClosedChannelsRequest.remote_force", - index=2, - number=3, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="breach", - full_name="lnrpc.ClosedChannelsRequest.breach", - index=3, - number=4, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="funding_canceled", - full_name="lnrpc.ClosedChannelsRequest.funding_canceled", - index=4, - number=5, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="abandoned", - full_name="lnrpc.ClosedChannelsRequest.abandoned", - index=5, - number=6, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=5986, - serialized_end=6134, -) - - -_CLOSEDCHANNELSRESPONSE = _descriptor.Descriptor( - name="ClosedChannelsResponse", - full_name="lnrpc.ClosedChannelsResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="channels", - full_name="lnrpc.ClosedChannelsResponse.channels", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6136, - serialized_end=6206, -) - - -_PEER_FEATURESENTRY = _descriptor.Descriptor( - name="FeaturesEntry", - full_name="lnrpc.Peer.FeaturesEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="lnrpc.Peer.FeaturesEntry.key", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="lnrpc.Peer.FeaturesEntry.value", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6559, - serialized_end=6622, -) - -_PEER = _descriptor.Descriptor( - name="Peer", - full_name="lnrpc.Peer", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="pub_key", - full_name="lnrpc.Peer.pub_key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="address", - full_name="lnrpc.Peer.address", - index=1, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="bytes_sent", - full_name="lnrpc.Peer.bytes_sent", - index=2, - number=4, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="bytes_recv", - full_name="lnrpc.Peer.bytes_recv", - index=3, - number=5, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="sat_sent", - full_name="lnrpc.Peer.sat_sent", - index=4, - number=6, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="sat_recv", - full_name="lnrpc.Peer.sat_recv", - index=5, - number=7, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="inbound", - full_name="lnrpc.Peer.inbound", - index=6, - number=8, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="ping_time", - full_name="lnrpc.Peer.ping_time", - index=7, - number=9, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="sync_type", - full_name="lnrpc.Peer.sync_type", - index=8, - number=10, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="features", - full_name="lnrpc.Peer.features", - index=9, - number=11, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="errors", - full_name="lnrpc.Peer.errors", - index=10, - number=12, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="flap_count", - full_name="lnrpc.Peer.flap_count", - index=11, - number=13, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="last_flap_ns", - full_name="lnrpc.Peer.last_flap_ns", - index=12, - number=14, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="last_ping_payload", - full_name="lnrpc.Peer.last_ping_payload", - index=13, - number=15, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[_PEER_FEATURESENTRY], - enum_types=[_PEER_SYNCTYPE], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6209, - serialized_end=6704, -) - - -_TIMESTAMPEDERROR = _descriptor.Descriptor( - name="TimestampedError", - full_name="lnrpc.TimestampedError", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="timestamp", - full_name="lnrpc.TimestampedError.timestamp", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="error", - full_name="lnrpc.TimestampedError.error", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6706, - serialized_end=6758, -) - - -_LISTPEERSREQUEST = _descriptor.Descriptor( - name="ListPeersRequest", - full_name="lnrpc.ListPeersRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="latest_error", - full_name="lnrpc.ListPeersRequest.latest_error", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6760, - serialized_end=6800, -) - - -_LISTPEERSRESPONSE = _descriptor.Descriptor( - name="ListPeersResponse", - full_name="lnrpc.ListPeersResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="peers", - full_name="lnrpc.ListPeersResponse.peers", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6802, - serialized_end=6849, -) - - -_PEEREVENTSUBSCRIPTION = _descriptor.Descriptor( - name="PeerEventSubscription", - full_name="lnrpc.PeerEventSubscription", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6851, - serialized_end=6874, -) - - -_PEEREVENT = _descriptor.Descriptor( - name="PeerEvent", - full_name="lnrpc.PeerEvent", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="pub_key", - full_name="lnrpc.PeerEvent.pub_key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="type", - full_name="lnrpc.PeerEvent.type", - index=1, - number=2, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[_PEEREVENT_EVENTTYPE], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6876, - serialized_end=6994, -) - - -_GETINFOREQUEST = _descriptor.Descriptor( - name="GetInfoRequest", - full_name="lnrpc.GetInfoRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6996, - serialized_end=7012, -) - - -_GETINFORESPONSE_FEATURESENTRY = _descriptor.Descriptor( - name="FeaturesEntry", - full_name="lnrpc.GetInfoResponse.FeaturesEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="lnrpc.GetInfoResponse.FeaturesEntry.key", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="lnrpc.GetInfoResponse.FeaturesEntry.value", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6559, - serialized_end=6622, -) - -_GETINFORESPONSE = _descriptor.Descriptor( - name="GetInfoResponse", - full_name="lnrpc.GetInfoResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="version", - full_name="lnrpc.GetInfoResponse.version", - index=0, - number=14, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="commit_hash", - full_name="lnrpc.GetInfoResponse.commit_hash", - index=1, - number=20, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="identity_pubkey", - full_name="lnrpc.GetInfoResponse.identity_pubkey", - index=2, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="alias", - full_name="lnrpc.GetInfoResponse.alias", - index=3, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="color", - full_name="lnrpc.GetInfoResponse.color", - index=4, - number=17, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="num_pending_channels", - full_name="lnrpc.GetInfoResponse.num_pending_channels", - index=5, - number=3, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="num_active_channels", - full_name="lnrpc.GetInfoResponse.num_active_channels", - index=6, - number=4, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="num_inactive_channels", - full_name="lnrpc.GetInfoResponse.num_inactive_channels", - index=7, - number=15, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="num_peers", - full_name="lnrpc.GetInfoResponse.num_peers", - index=8, - number=5, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="block_height", - full_name="lnrpc.GetInfoResponse.block_height", - index=9, - number=6, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="block_hash", - full_name="lnrpc.GetInfoResponse.block_hash", - index=10, - number=8, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="best_header_timestamp", - full_name="lnrpc.GetInfoResponse.best_header_timestamp", - index=11, - number=13, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="synced_to_chain", - full_name="lnrpc.GetInfoResponse.synced_to_chain", - index=12, - number=9, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="synced_to_graph", - full_name="lnrpc.GetInfoResponse.synced_to_graph", - index=13, - number=18, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="testnet", - full_name="lnrpc.GetInfoResponse.testnet", - index=14, - number=10, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chains", - full_name="lnrpc.GetInfoResponse.chains", - index=15, - number=16, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="uris", - full_name="lnrpc.GetInfoResponse.uris", - index=16, - number=12, - type=9, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="features", - full_name="lnrpc.GetInfoResponse.features", - index=17, - number=19, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[_GETINFORESPONSE_FEATURESENTRY], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=7015, - serialized_end=7549, -) - - -_GETRECOVERYINFOREQUEST = _descriptor.Descriptor( - name="GetRecoveryInfoRequest", - full_name="lnrpc.GetRecoveryInfoRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=7551, - serialized_end=7575, -) - - -_GETRECOVERYINFORESPONSE = _descriptor.Descriptor( - name="GetRecoveryInfoResponse", - full_name="lnrpc.GetRecoveryInfoResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="recovery_mode", - full_name="lnrpc.GetRecoveryInfoResponse.recovery_mode", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="recovery_finished", - full_name="lnrpc.GetRecoveryInfoResponse.recovery_finished", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="progress", - full_name="lnrpc.GetRecoveryInfoResponse.progress", - index=2, - number=3, - type=1, - cpp_type=5, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=7577, - serialized_end=7670, -) - - -_CHAIN = _descriptor.Descriptor( - name="Chain", - full_name="lnrpc.Chain", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="chain", - full_name="lnrpc.Chain.chain", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="network", - full_name="lnrpc.Chain.network", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=7672, - serialized_end=7711, -) - - -_CONFIRMATIONUPDATE = _descriptor.Descriptor( - name="ConfirmationUpdate", - full_name="lnrpc.ConfirmationUpdate", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="block_sha", - full_name="lnrpc.ConfirmationUpdate.block_sha", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="block_height", - full_name="lnrpc.ConfirmationUpdate.block_height", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="num_confs_left", - full_name="lnrpc.ConfirmationUpdate.num_confs_left", - index=2, - number=3, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=7713, - serialized_end=7798, -) - - -_CHANNELOPENUPDATE = _descriptor.Descriptor( - name="ChannelOpenUpdate", - full_name="lnrpc.ChannelOpenUpdate", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="channel_point", - full_name="lnrpc.ChannelOpenUpdate.channel_point", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=7800, - serialized_end=7863, -) - - -_CHANNELCLOSEUPDATE = _descriptor.Descriptor( - name="ChannelCloseUpdate", - full_name="lnrpc.ChannelCloseUpdate", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="closing_txid", - full_name="lnrpc.ChannelCloseUpdate.closing_txid", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="success", - full_name="lnrpc.ChannelCloseUpdate.success", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=7865, - serialized_end=7924, -) - - -_CLOSECHANNELREQUEST = _descriptor.Descriptor( - name="CloseChannelRequest", - full_name="lnrpc.CloseChannelRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="channel_point", - full_name="lnrpc.CloseChannelRequest.channel_point", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="force", - full_name="lnrpc.CloseChannelRequest.force", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="target_conf", - full_name="lnrpc.CloseChannelRequest.target_conf", - index=2, - number=3, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="sat_per_byte", - full_name="lnrpc.CloseChannelRequest.sat_per_byte", - index=3, - number=4, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="delivery_address", - full_name="lnrpc.CloseChannelRequest.delivery_address", - index=4, - number=5, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="sat_per_vbyte", - full_name="lnrpc.CloseChannelRequest.sat_per_vbyte", - index=5, - number=6, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=7927, - serialized_end=8103, -) - - -_CLOSESTATUSUPDATE = _descriptor.Descriptor( - name="CloseStatusUpdate", - full_name="lnrpc.CloseStatusUpdate", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="close_pending", - full_name="lnrpc.CloseStatusUpdate.close_pending", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chan_close", - full_name="lnrpc.CloseStatusUpdate.chan_close", - index=1, - number=3, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name="update", - full_name="lnrpc.CloseStatusUpdate.update", - index=0, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - ) - ], - serialized_start=8105, - serialized_end=8230, -) - - -_PENDINGUPDATE = _descriptor.Descriptor( - name="PendingUpdate", - full_name="lnrpc.PendingUpdate", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="txid", - full_name="lnrpc.PendingUpdate.txid", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="output_index", - full_name="lnrpc.PendingUpdate.output_index", - index=1, - number=2, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=8232, - serialized_end=8283, -) - - -_READYFORPSBTFUNDING = _descriptor.Descriptor( - name="ReadyForPsbtFunding", - full_name="lnrpc.ReadyForPsbtFunding", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="funding_address", - full_name="lnrpc.ReadyForPsbtFunding.funding_address", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="funding_amount", - full_name="lnrpc.ReadyForPsbtFunding.funding_amount", - index=1, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="psbt", - full_name="lnrpc.ReadyForPsbtFunding.psbt", - index=2, - number=3, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=8285, - serialized_end=8369, -) - - -_BATCHOPENCHANNELREQUEST = _descriptor.Descriptor( - name="BatchOpenChannelRequest", - full_name="lnrpc.BatchOpenChannelRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="channels", - full_name="lnrpc.BatchOpenChannelRequest.channels", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="target_conf", - full_name="lnrpc.BatchOpenChannelRequest.target_conf", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="sat_per_vbyte", - full_name="lnrpc.BatchOpenChannelRequest.sat_per_vbyte", - index=2, - number=3, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="min_confs", - full_name="lnrpc.BatchOpenChannelRequest.min_confs", - index=3, - number=4, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="spend_unconfirmed", - full_name="lnrpc.BatchOpenChannelRequest.spend_unconfirmed", - index=4, - number=5, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="label", - full_name="lnrpc.BatchOpenChannelRequest.label", - index=5, - number=6, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=8372, - serialized_end=8545, -) - - -_BATCHOPENCHANNEL = _descriptor.Descriptor( - name="BatchOpenChannel", - full_name="lnrpc.BatchOpenChannel", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="node_pubkey", - full_name="lnrpc.BatchOpenChannel.node_pubkey", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="local_funding_amount", - full_name="lnrpc.BatchOpenChannel.local_funding_amount", - index=1, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="push_sat", - full_name="lnrpc.BatchOpenChannel.push_sat", - index=2, - number=3, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="private", - full_name="lnrpc.BatchOpenChannel.private", - index=3, - number=4, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="min_htlc_msat", - full_name="lnrpc.BatchOpenChannel.min_htlc_msat", - index=4, - number=5, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="remote_csv_delay", - full_name="lnrpc.BatchOpenChannel.remote_csv_delay", - index=5, - number=6, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="close_address", - full_name="lnrpc.BatchOpenChannel.close_address", - index=6, - number=7, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pending_chan_id", - full_name="lnrpc.BatchOpenChannel.pending_chan_id", - index=7, - number=8, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="commitment_type", - full_name="lnrpc.BatchOpenChannel.commitment_type", - index=8, - number=9, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=8548, - serialized_end=8797, -) - - -_BATCHOPENCHANNELRESPONSE = _descriptor.Descriptor( - name="BatchOpenChannelResponse", - full_name="lnrpc.BatchOpenChannelResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="pending_channels", - full_name="lnrpc.BatchOpenChannelResponse.pending_channels", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=8799, - serialized_end=8873, -) - - -_OPENCHANNELREQUEST = _descriptor.Descriptor( - name="OpenChannelRequest", - full_name="lnrpc.OpenChannelRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="sat_per_vbyte", - full_name="lnrpc.OpenChannelRequest.sat_per_vbyte", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="node_pubkey", - full_name="lnrpc.OpenChannelRequest.node_pubkey", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="node_pubkey_string", - full_name="lnrpc.OpenChannelRequest.node_pubkey_string", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="local_funding_amount", - full_name="lnrpc.OpenChannelRequest.local_funding_amount", - index=3, - number=4, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="push_sat", - full_name="lnrpc.OpenChannelRequest.push_sat", - index=4, - number=5, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="target_conf", - full_name="lnrpc.OpenChannelRequest.target_conf", - index=5, - number=6, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="sat_per_byte", - full_name="lnrpc.OpenChannelRequest.sat_per_byte", - index=6, - number=7, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="private", - full_name="lnrpc.OpenChannelRequest.private", - index=7, - number=8, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="min_htlc_msat", - full_name="lnrpc.OpenChannelRequest.min_htlc_msat", - index=8, - number=9, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="remote_csv_delay", - full_name="lnrpc.OpenChannelRequest.remote_csv_delay", - index=9, - number=10, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="min_confs", - full_name="lnrpc.OpenChannelRequest.min_confs", - index=10, - number=11, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="spend_unconfirmed", - full_name="lnrpc.OpenChannelRequest.spend_unconfirmed", - index=11, - number=12, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="close_address", - full_name="lnrpc.OpenChannelRequest.close_address", - index=12, - number=13, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="funding_shim", - full_name="lnrpc.OpenChannelRequest.funding_shim", - index=13, - number=14, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="remote_max_value_in_flight_msat", - full_name="lnrpc.OpenChannelRequest.remote_max_value_in_flight_msat", - index=14, - number=15, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="remote_max_htlcs", - full_name="lnrpc.OpenChannelRequest.remote_max_htlcs", - index=15, - number=16, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="max_local_csv", - full_name="lnrpc.OpenChannelRequest.max_local_csv", - index=16, - number=17, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="commitment_type", - full_name="lnrpc.OpenChannelRequest.commitment_type", - index=17, - number=18, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=8876, - serialized_end=9382, -) - - -_OPENSTATUSUPDATE = _descriptor.Descriptor( - name="OpenStatusUpdate", - full_name="lnrpc.OpenStatusUpdate", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="chan_pending", - full_name="lnrpc.OpenStatusUpdate.chan_pending", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chan_open", - full_name="lnrpc.OpenStatusUpdate.chan_open", - index=1, - number=3, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="psbt_fund", - full_name="lnrpc.OpenStatusUpdate.psbt_fund", - index=2, - number=5, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pending_chan_id", - full_name="lnrpc.OpenStatusUpdate.pending_chan_id", - index=3, - number=4, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name="update", - full_name="lnrpc.OpenStatusUpdate.update", - index=0, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - ) - ], - serialized_start=9385, - serialized_end=9580, -) - - -_KEYLOCATOR = _descriptor.Descriptor( - name="KeyLocator", - full_name="lnrpc.KeyLocator", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key_family", - full_name="lnrpc.KeyLocator.key_family", - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="key_index", - full_name="lnrpc.KeyLocator.key_index", - index=1, - number=2, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=9582, - serialized_end=9633, -) - - -_KEYDESCRIPTOR = _descriptor.Descriptor( - name="KeyDescriptor", - full_name="lnrpc.KeyDescriptor", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="raw_key_bytes", - full_name="lnrpc.KeyDescriptor.raw_key_bytes", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="key_loc", - full_name="lnrpc.KeyDescriptor.key_loc", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=9635, - serialized_end=9709, -) - - -_CHANPOINTSHIM = _descriptor.Descriptor( - name="ChanPointShim", - full_name="lnrpc.ChanPointShim", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="amt", - full_name="lnrpc.ChanPointShim.amt", - index=0, - number=1, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chan_point", - full_name="lnrpc.ChanPointShim.chan_point", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="local_key", - full_name="lnrpc.ChanPointShim.local_key", - index=2, - number=3, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="remote_key", - full_name="lnrpc.ChanPointShim.remote_key", - index=3, - number=4, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pending_chan_id", - full_name="lnrpc.ChanPointShim.pending_chan_id", - index=4, - number=5, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="thaw_height", - full_name="lnrpc.ChanPointShim.thaw_height", - index=5, - number=6, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=9712, - serialized_end=9888, -) - - -_PSBTSHIM = _descriptor.Descriptor( - name="PsbtShim", - full_name="lnrpc.PsbtShim", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="pending_chan_id", - full_name="lnrpc.PsbtShim.pending_chan_id", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="base_psbt", - full_name="lnrpc.PsbtShim.base_psbt", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="no_publish", - full_name="lnrpc.PsbtShim.no_publish", - index=2, - number=3, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=9890, - serialized_end=9964, -) - - -_FUNDINGSHIM = _descriptor.Descriptor( - name="FundingShim", - full_name="lnrpc.FundingShim", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="chan_point_shim", - full_name="lnrpc.FundingShim.chan_point_shim", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="psbt_shim", - full_name="lnrpc.FundingShim.psbt_shim", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name="shim", - full_name="lnrpc.FundingShim.shim", - index=0, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - ) - ], - serialized_start=9966, - serialized_end=10074, -) - - -_FUNDINGSHIMCANCEL = _descriptor.Descriptor( - name="FundingShimCancel", - full_name="lnrpc.FundingShimCancel", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="pending_chan_id", - full_name="lnrpc.FundingShimCancel.pending_chan_id", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=10076, - serialized_end=10120, -) - - -_FUNDINGPSBTVERIFY = _descriptor.Descriptor( - name="FundingPsbtVerify", - full_name="lnrpc.FundingPsbtVerify", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="funded_psbt", - full_name="lnrpc.FundingPsbtVerify.funded_psbt", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pending_chan_id", - full_name="lnrpc.FundingPsbtVerify.pending_chan_id", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="skip_finalize", - full_name="lnrpc.FundingPsbtVerify.skip_finalize", - index=2, - number=3, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=10122, - serialized_end=10210, -) - - -_FUNDINGPSBTFINALIZE = _descriptor.Descriptor( - name="FundingPsbtFinalize", - full_name="lnrpc.FundingPsbtFinalize", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="signed_psbt", - full_name="lnrpc.FundingPsbtFinalize.signed_psbt", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pending_chan_id", - full_name="lnrpc.FundingPsbtFinalize.pending_chan_id", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="final_raw_tx", - full_name="lnrpc.FundingPsbtFinalize.final_raw_tx", - index=2, - number=3, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=10212, - serialized_end=10301, -) - - -_FUNDINGTRANSITIONMSG = _descriptor.Descriptor( - name="FundingTransitionMsg", - full_name="lnrpc.FundingTransitionMsg", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="shim_register", - full_name="lnrpc.FundingTransitionMsg.shim_register", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="shim_cancel", - full_name="lnrpc.FundingTransitionMsg.shim_cancel", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="psbt_verify", - full_name="lnrpc.FundingTransitionMsg.psbt_verify", - index=2, - number=3, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="psbt_finalize", - full_name="lnrpc.FundingTransitionMsg.psbt_finalize", - index=3, - number=4, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name="trigger", - full_name="lnrpc.FundingTransitionMsg.trigger", - index=0, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - ) - ], - serialized_start=10304, - serialized_end=10533, -) - - -_FUNDINGSTATESTEPRESP = _descriptor.Descriptor( - name="FundingStateStepResp", - full_name="lnrpc.FundingStateStepResp", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=10535, - serialized_end=10557, -) - - -_PENDINGHTLC = _descriptor.Descriptor( - name="PendingHTLC", - full_name="lnrpc.PendingHTLC", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="incoming", - full_name="lnrpc.PendingHTLC.incoming", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amount", - full_name="lnrpc.PendingHTLC.amount", - index=1, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="outpoint", - full_name="lnrpc.PendingHTLC.outpoint", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="maturity_height", - full_name="lnrpc.PendingHTLC.maturity_height", - index=3, - number=4, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="blocks_til_maturity", - full_name="lnrpc.PendingHTLC.blocks_til_maturity", - index=4, - number=5, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="stage", - full_name="lnrpc.PendingHTLC.stage", - index=5, - number=6, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=10560, - serialized_end=10694, -) - - -_PENDINGCHANNELSREQUEST = _descriptor.Descriptor( - name="PendingChannelsRequest", - full_name="lnrpc.PendingChannelsRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=10696, - serialized_end=10720, -) - - -_PENDINGCHANNELSRESPONSE_PENDINGCHANNEL = _descriptor.Descriptor( - name="PendingChannel", - full_name="lnrpc.PendingChannelsResponse.PendingChannel", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="remote_node_pub", - full_name="lnrpc.PendingChannelsResponse.PendingChannel.remote_node_pub", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="channel_point", - full_name="lnrpc.PendingChannelsResponse.PendingChannel.channel_point", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="capacity", - full_name="lnrpc.PendingChannelsResponse.PendingChannel.capacity", - index=2, - number=3, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="local_balance", - full_name="lnrpc.PendingChannelsResponse.PendingChannel.local_balance", - index=3, - number=4, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="remote_balance", - full_name="lnrpc.PendingChannelsResponse.PendingChannel.remote_balance", - index=4, - number=5, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="local_chan_reserve_sat", - full_name="lnrpc.PendingChannelsResponse.PendingChannel.local_chan_reserve_sat", - index=5, - number=6, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="remote_chan_reserve_sat", - full_name="lnrpc.PendingChannelsResponse.PendingChannel.remote_chan_reserve_sat", - index=6, - number=7, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="initiator", - full_name="lnrpc.PendingChannelsResponse.PendingChannel.initiator", - index=7, - number=8, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="commitment_type", - full_name="lnrpc.PendingChannelsResponse.PendingChannel.commitment_type", - index=8, - number=9, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="num_forwarding_packages", - full_name="lnrpc.PendingChannelsResponse.PendingChannel.num_forwarding_packages", - index=9, - number=10, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=11121, - serialized_end=11433, -) - -_PENDINGCHANNELSRESPONSE_PENDINGOPENCHANNEL = _descriptor.Descriptor( - name="PendingOpenChannel", - full_name="lnrpc.PendingChannelsResponse.PendingOpenChannel", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="channel", - full_name="lnrpc.PendingChannelsResponse.PendingOpenChannel.channel", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="confirmation_height", - full_name="lnrpc.PendingChannelsResponse.PendingOpenChannel.confirmation_height", - index=1, - number=2, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="commit_fee", - full_name="lnrpc.PendingChannelsResponse.PendingOpenChannel.commit_fee", - index=2, - number=4, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="commit_weight", - full_name="lnrpc.PendingChannelsResponse.PendingOpenChannel.commit_weight", - index=3, - number=5, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fee_per_kw", - full_name="lnrpc.PendingChannelsResponse.PendingOpenChannel.fee_per_kw", - index=4, - number=6, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=11436, - serialized_end=11612, -) - -_PENDINGCHANNELSRESPONSE_WAITINGCLOSECHANNEL = _descriptor.Descriptor( - name="WaitingCloseChannel", - full_name="lnrpc.PendingChannelsResponse.WaitingCloseChannel", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="channel", - full_name="lnrpc.PendingChannelsResponse.WaitingCloseChannel.channel", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="limbo_balance", - full_name="lnrpc.PendingChannelsResponse.WaitingCloseChannel.limbo_balance", - index=1, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="commitments", - full_name="lnrpc.PendingChannelsResponse.WaitingCloseChannel.commitments", - index=2, - number=3, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=11615, - serialized_end=11788, -) - -_PENDINGCHANNELSRESPONSE_COMMITMENTS = _descriptor.Descriptor( - name="Commitments", - full_name="lnrpc.PendingChannelsResponse.Commitments", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="local_txid", - full_name="lnrpc.PendingChannelsResponse.Commitments.local_txid", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="remote_txid", - full_name="lnrpc.PendingChannelsResponse.Commitments.remote_txid", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="remote_pending_txid", - full_name="lnrpc.PendingChannelsResponse.Commitments.remote_pending_txid", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="local_commit_fee_sat", - full_name="lnrpc.PendingChannelsResponse.Commitments.local_commit_fee_sat", - index=3, - number=4, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="remote_commit_fee_sat", - full_name="lnrpc.PendingChannelsResponse.Commitments.remote_commit_fee_sat", - index=4, - number=5, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="remote_pending_commit_fee_sat", - full_name="lnrpc.PendingChannelsResponse.Commitments.remote_pending_commit_fee_sat", - index=5, - number=6, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=11791, - serialized_end=11974, -) - -_PENDINGCHANNELSRESPONSE_CLOSEDCHANNEL = _descriptor.Descriptor( - name="ClosedChannel", - full_name="lnrpc.PendingChannelsResponse.ClosedChannel", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="channel", - full_name="lnrpc.PendingChannelsResponse.ClosedChannel.channel", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="closing_txid", - full_name="lnrpc.PendingChannelsResponse.ClosedChannel.closing_txid", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=11976, - serialized_end=12077, -) - -_PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL = _descriptor.Descriptor( - name="ForceClosedChannel", - full_name="lnrpc.PendingChannelsResponse.ForceClosedChannel", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="channel", - full_name="lnrpc.PendingChannelsResponse.ForceClosedChannel.channel", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="closing_txid", - full_name="lnrpc.PendingChannelsResponse.ForceClosedChannel.closing_txid", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="limbo_balance", - full_name="lnrpc.PendingChannelsResponse.ForceClosedChannel.limbo_balance", - index=2, - number=3, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="maturity_height", - full_name="lnrpc.PendingChannelsResponse.ForceClosedChannel.maturity_height", - index=3, - number=4, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="blocks_til_maturity", - full_name="lnrpc.PendingChannelsResponse.ForceClosedChannel.blocks_til_maturity", - index=4, - number=5, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="recovered_balance", - full_name="lnrpc.PendingChannelsResponse.ForceClosedChannel.recovered_balance", - index=5, - number=6, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pending_htlcs", - full_name="lnrpc.PendingChannelsResponse.ForceClosedChannel.pending_htlcs", - index=6, - number=8, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="anchor", - full_name="lnrpc.PendingChannelsResponse.ForceClosedChannel.anchor", - index=7, - number=9, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[_PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL_ANCHORSTATE], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=12080, - serialized_end=12463, -) - -_PENDINGCHANNELSRESPONSE = _descriptor.Descriptor( - name="PendingChannelsResponse", - full_name="lnrpc.PendingChannelsResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="total_limbo_balance", - full_name="lnrpc.PendingChannelsResponse.total_limbo_balance", - index=0, - number=1, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pending_open_channels", - full_name="lnrpc.PendingChannelsResponse.pending_open_channels", - index=1, - number=2, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pending_closing_channels", - full_name="lnrpc.PendingChannelsResponse.pending_closing_channels", - index=2, - number=3, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pending_force_closing_channels", - full_name="lnrpc.PendingChannelsResponse.pending_force_closing_channels", - index=3, - number=4, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="waiting_close_channels", - full_name="lnrpc.PendingChannelsResponse.waiting_close_channels", - index=4, - number=5, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[ - _PENDINGCHANNELSRESPONSE_PENDINGCHANNEL, - _PENDINGCHANNELSRESPONSE_PENDINGOPENCHANNEL, - _PENDINGCHANNELSRESPONSE_WAITINGCLOSECHANNEL, - _PENDINGCHANNELSRESPONSE_COMMITMENTS, - _PENDINGCHANNELSRESPONSE_CLOSEDCHANNEL, - _PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL, - ], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=10723, - serialized_end=12463, -) - - -_CHANNELEVENTSUBSCRIPTION = _descriptor.Descriptor( - name="ChannelEventSubscription", - full_name="lnrpc.ChannelEventSubscription", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=12465, - serialized_end=12491, -) - - -_CHANNELEVENTUPDATE = _descriptor.Descriptor( - name="ChannelEventUpdate", - full_name="lnrpc.ChannelEventUpdate", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="open_channel", - full_name="lnrpc.ChannelEventUpdate.open_channel", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="closed_channel", - full_name="lnrpc.ChannelEventUpdate.closed_channel", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="active_channel", - full_name="lnrpc.ChannelEventUpdate.active_channel", - index=2, - number=3, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="inactive_channel", - full_name="lnrpc.ChannelEventUpdate.inactive_channel", - index=3, - number=4, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pending_open_channel", - full_name="lnrpc.ChannelEventUpdate.pending_open_channel", - index=4, - number=6, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fully_resolved_channel", - full_name="lnrpc.ChannelEventUpdate.fully_resolved_channel", - index=5, - number=7, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="type", - full_name="lnrpc.ChannelEventUpdate.type", - index=6, - number=5, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[_CHANNELEVENTUPDATE_UPDATETYPE], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name="channel", - full_name="lnrpc.ChannelEventUpdate.channel", - index=0, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - ) - ], - serialized_start=12494, - serialized_end=13025, -) - - -_WALLETACCOUNTBALANCE = _descriptor.Descriptor( - name="WalletAccountBalance", - full_name="lnrpc.WalletAccountBalance", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="confirmed_balance", - full_name="lnrpc.WalletAccountBalance.confirmed_balance", - index=0, - number=1, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="unconfirmed_balance", - full_name="lnrpc.WalletAccountBalance.unconfirmed_balance", - index=1, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=13027, - serialized_end=13105, -) - - -_WALLETBALANCEREQUEST = _descriptor.Descriptor( - name="WalletBalanceRequest", - full_name="lnrpc.WalletBalanceRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=13107, - serialized_end=13129, -) - - -_WALLETBALANCERESPONSE_ACCOUNTBALANCEENTRY = _descriptor.Descriptor( - name="AccountBalanceEntry", - full_name="lnrpc.WalletBalanceResponse.AccountBalanceEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="lnrpc.WalletBalanceResponse.AccountBalanceEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="lnrpc.WalletBalanceResponse.AccountBalanceEntry.value", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=13311, - serialized_end=13393, -) - -_WALLETBALANCERESPONSE = _descriptor.Descriptor( - name="WalletBalanceResponse", - full_name="lnrpc.WalletBalanceResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="total_balance", - full_name="lnrpc.WalletBalanceResponse.total_balance", - index=0, - number=1, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="confirmed_balance", - full_name="lnrpc.WalletBalanceResponse.confirmed_balance", - index=1, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="unconfirmed_balance", - full_name="lnrpc.WalletBalanceResponse.unconfirmed_balance", - index=2, - number=3, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="account_balance", - full_name="lnrpc.WalletBalanceResponse.account_balance", - index=3, - number=4, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[_WALLETBALANCERESPONSE_ACCOUNTBALANCEENTRY], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=13132, - serialized_end=13393, -) - - -_AMOUNT = _descriptor.Descriptor( - name="Amount", - full_name="lnrpc.Amount", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="sat", - full_name="lnrpc.Amount.sat", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="msat", - full_name="lnrpc.Amount.msat", - index=1, - number=2, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=13395, - serialized_end=13430, -) - - -_CHANNELBALANCEREQUEST = _descriptor.Descriptor( - name="ChannelBalanceRequest", - full_name="lnrpc.ChannelBalanceRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=13432, - serialized_end=13455, -) - - -_CHANNELBALANCERESPONSE = _descriptor.Descriptor( - name="ChannelBalanceResponse", - full_name="lnrpc.ChannelBalanceResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="balance", - full_name="lnrpc.ChannelBalanceResponse.balance", - index=0, - number=1, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pending_open_balance", - full_name="lnrpc.ChannelBalanceResponse.pending_open_balance", - index=1, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="local_balance", - full_name="lnrpc.ChannelBalanceResponse.local_balance", - index=2, - number=3, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="remote_balance", - full_name="lnrpc.ChannelBalanceResponse.remote_balance", - index=3, - number=4, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="unsettled_local_balance", - full_name="lnrpc.ChannelBalanceResponse.unsettled_local_balance", - index=4, - number=5, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="unsettled_remote_balance", - full_name="lnrpc.ChannelBalanceResponse.unsettled_remote_balance", - index=5, - number=6, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pending_open_local_balance", - full_name="lnrpc.ChannelBalanceResponse.pending_open_local_balance", - index=6, - number=7, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pending_open_remote_balance", - full_name="lnrpc.ChannelBalanceResponse.pending_open_remote_balance", - index=7, - number=8, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=13458, - serialized_end=13814, -) - - -_QUERYROUTESREQUEST_DESTCUSTOMRECORDSENTRY = _descriptor.Descriptor( - name="DestCustomRecordsEntry", - full_name="lnrpc.QueryRoutesRequest.DestCustomRecordsEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="lnrpc.QueryRoutesRequest.DestCustomRecordsEntry.key", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="lnrpc.QueryRoutesRequest.DestCustomRecordsEntry.value", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=1295, - serialized_end=1351, -) - -_QUERYROUTESREQUEST = _descriptor.Descriptor( - name="QueryRoutesRequest", - full_name="lnrpc.QueryRoutesRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="pub_key", - full_name="lnrpc.QueryRoutesRequest.pub_key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amt", - full_name="lnrpc.QueryRoutesRequest.amt", - index=1, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amt_msat", - full_name="lnrpc.QueryRoutesRequest.amt_msat", - index=2, - number=12, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="final_cltv_delta", - full_name="lnrpc.QueryRoutesRequest.final_cltv_delta", - index=3, - number=4, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fee_limit", - full_name="lnrpc.QueryRoutesRequest.fee_limit", - index=4, - number=5, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="ignored_nodes", - full_name="lnrpc.QueryRoutesRequest.ignored_nodes", - index=5, - number=6, - type=12, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="ignored_edges", - full_name="lnrpc.QueryRoutesRequest.ignored_edges", - index=6, - number=7, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="source_pub_key", - full_name="lnrpc.QueryRoutesRequest.source_pub_key", - index=7, - number=8, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="use_mission_control", - full_name="lnrpc.QueryRoutesRequest.use_mission_control", - index=8, - number=9, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="ignored_pairs", - full_name="lnrpc.QueryRoutesRequest.ignored_pairs", - index=9, - number=10, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="cltv_limit", - full_name="lnrpc.QueryRoutesRequest.cltv_limit", - index=10, - number=11, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="dest_custom_records", - full_name="lnrpc.QueryRoutesRequest.dest_custom_records", - index=11, - number=13, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="outgoing_chan_id", - full_name="lnrpc.QueryRoutesRequest.outgoing_chan_id", - index=12, - number=14, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"0\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="last_hop_pubkey", - full_name="lnrpc.QueryRoutesRequest.last_hop_pubkey", - index=13, - number=15, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="route_hints", - full_name="lnrpc.QueryRoutesRequest.route_hints", - index=14, - number=16, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="dest_features", - full_name="lnrpc.QueryRoutesRequest.dest_features", - index=15, - number=17, - type=14, - cpp_type=8, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[_QUERYROUTESREQUEST_DESTCUSTOMRECORDSENTRY], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=13817, - serialized_end=14409, -) - - -_NODEPAIR = _descriptor.Descriptor( - name="NodePair", - full_name="lnrpc.NodePair", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="from", - full_name="lnrpc.NodePair.from", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="to", - full_name="lnrpc.NodePair.to", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=14411, - serialized_end=14447, -) - - -_EDGELOCATOR = _descriptor.Descriptor( - name="EdgeLocator", - full_name="lnrpc.EdgeLocator", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="channel_id", - full_name="lnrpc.EdgeLocator.channel_id", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"0\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="direction_reverse", - full_name="lnrpc.EdgeLocator.direction_reverse", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=14449, - serialized_end=14513, -) - - -_QUERYROUTESRESPONSE = _descriptor.Descriptor( - name="QueryRoutesResponse", - full_name="lnrpc.QueryRoutesResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="routes", - full_name="lnrpc.QueryRoutesResponse.routes", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="success_prob", - full_name="lnrpc.QueryRoutesResponse.success_prob", - index=1, - number=2, - type=1, - cpp_type=5, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=14515, - serialized_end=14588, -) - - -_HOP_CUSTOMRECORDSENTRY = _descriptor.Descriptor( - name="CustomRecordsEntry", - full_name="lnrpc.Hop.CustomRecordsEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="lnrpc.Hop.CustomRecordsEntry.key", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="lnrpc.Hop.CustomRecordsEntry.value", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=14923, - serialized_end=14975, -) - -_HOP = _descriptor.Descriptor( - name="Hop", - full_name="lnrpc.Hop", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="chan_id", - full_name="lnrpc.Hop.chan_id", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"0\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chan_capacity", - full_name="lnrpc.Hop.chan_capacity", - index=1, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amt_to_forward", - full_name="lnrpc.Hop.amt_to_forward", - index=2, - number=3, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fee", - full_name="lnrpc.Hop.fee", - index=3, - number=4, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="expiry", - full_name="lnrpc.Hop.expiry", - index=4, - number=5, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amt_to_forward_msat", - full_name="lnrpc.Hop.amt_to_forward_msat", - index=5, - number=6, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fee_msat", - full_name="lnrpc.Hop.fee_msat", - index=6, - number=7, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pub_key", - full_name="lnrpc.Hop.pub_key", - index=7, - number=8, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="tlv_payload", - full_name="lnrpc.Hop.tlv_payload", - index=8, - number=9, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="mpp_record", - full_name="lnrpc.Hop.mpp_record", - index=9, - number=10, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amp_record", - full_name="lnrpc.Hop.amp_record", - index=10, - number=12, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="custom_records", - full_name="lnrpc.Hop.custom_records", - index=11, - number=11, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[_HOP_CUSTOMRECORDSENTRY], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=14591, - serialized_end=14975, -) - - -_MPPRECORD = _descriptor.Descriptor( - name="MPPRecord", - full_name="lnrpc.MPPRecord", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="payment_addr", - full_name="lnrpc.MPPRecord.payment_addr", - index=0, - number=11, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="total_amt_msat", - full_name="lnrpc.MPPRecord.total_amt_msat", - index=1, - number=10, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=14977, - serialized_end=15034, -) - - -_AMPRECORD = _descriptor.Descriptor( - name="AMPRecord", - full_name="lnrpc.AMPRecord", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="root_share", - full_name="lnrpc.AMPRecord.root_share", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="set_id", - full_name="lnrpc.AMPRecord.set_id", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="child_index", - full_name="lnrpc.AMPRecord.child_index", - index=2, - number=3, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=15036, - serialized_end=15104, -) - - -_ROUTE = _descriptor.Descriptor( - name="Route", - full_name="lnrpc.Route", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="total_time_lock", - full_name="lnrpc.Route.total_time_lock", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="total_fees", - full_name="lnrpc.Route.total_fees", - index=1, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="total_amt", - full_name="lnrpc.Route.total_amt", - index=2, - number=3, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="hops", - full_name="lnrpc.Route.hops", - index=3, - number=4, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="total_fees_msat", - full_name="lnrpc.Route.total_fees_msat", - index=4, - number=5, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="total_amt_msat", - full_name="lnrpc.Route.total_amt_msat", - index=5, - number=6, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=15107, - serialized_end=15261, -) - - -_NODEINFOREQUEST = _descriptor.Descriptor( - name="NodeInfoRequest", - full_name="lnrpc.NodeInfoRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="pub_key", - full_name="lnrpc.NodeInfoRequest.pub_key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="include_channels", - full_name="lnrpc.NodeInfoRequest.include_channels", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=15263, - serialized_end=15323, -) - - -_NODEINFO = _descriptor.Descriptor( - name="NodeInfo", - full_name="lnrpc.NodeInfo", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="node", - full_name="lnrpc.NodeInfo.node", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="num_channels", - full_name="lnrpc.NodeInfo.num_channels", - index=1, - number=2, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="total_capacity", - full_name="lnrpc.NodeInfo.total_capacity", - index=2, - number=3, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="channels", - full_name="lnrpc.NodeInfo.channels", - index=3, - number=4, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=15326, - serialized_end=15456, -) - - -_LIGHTNINGNODE_FEATURESENTRY = _descriptor.Descriptor( - name="FeaturesEntry", - full_name="lnrpc.LightningNode.FeaturesEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="lnrpc.LightningNode.FeaturesEntry.key", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="lnrpc.LightningNode.FeaturesEntry.value", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6559, - serialized_end=6622, -) - -_LIGHTNINGNODE = _descriptor.Descriptor( - name="LightningNode", - full_name="lnrpc.LightningNode", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="last_update", - full_name="lnrpc.LightningNode.last_update", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pub_key", - full_name="lnrpc.LightningNode.pub_key", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="alias", - full_name="lnrpc.LightningNode.alias", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="addresses", - full_name="lnrpc.LightningNode.addresses", - index=3, - number=4, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="color", - full_name="lnrpc.LightningNode.color", - index=4, - number=5, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="features", - full_name="lnrpc.LightningNode.features", - index=5, - number=6, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[_LIGHTNINGNODE_FEATURESENTRY], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=15459, - serialized_end=15700, -) - - -_NODEADDRESS = _descriptor.Descriptor( - name="NodeAddress", - full_name="lnrpc.NodeAddress", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="network", - full_name="lnrpc.NodeAddress.network", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="addr", - full_name="lnrpc.NodeAddress.addr", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=15702, - serialized_end=15746, -) - - -_ROUTINGPOLICY = _descriptor.Descriptor( - name="RoutingPolicy", - full_name="lnrpc.RoutingPolicy", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="time_lock_delta", - full_name="lnrpc.RoutingPolicy.time_lock_delta", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="min_htlc", - full_name="lnrpc.RoutingPolicy.min_htlc", - index=1, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fee_base_msat", - full_name="lnrpc.RoutingPolicy.fee_base_msat", - index=2, - number=3, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fee_rate_milli_msat", - full_name="lnrpc.RoutingPolicy.fee_rate_milli_msat", - index=3, - number=4, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="disabled", - full_name="lnrpc.RoutingPolicy.disabled", - index=4, - number=5, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="max_htlc_msat", - full_name="lnrpc.RoutingPolicy.max_htlc_msat", - index=5, - number=6, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="last_update", - full_name="lnrpc.RoutingPolicy.last_update", - index=6, - number=7, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=15749, - serialized_end=15921, -) - - -_CHANNELEDGE = _descriptor.Descriptor( - name="ChannelEdge", - full_name="lnrpc.ChannelEdge", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="channel_id", - full_name="lnrpc.ChannelEdge.channel_id", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"0\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chan_point", - full_name="lnrpc.ChannelEdge.chan_point", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="last_update", - full_name="lnrpc.ChannelEdge.last_update", - index=2, - number=3, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="node1_pub", - full_name="lnrpc.ChannelEdge.node1_pub", - index=3, - number=4, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="node2_pub", - full_name="lnrpc.ChannelEdge.node2_pub", - index=4, - number=5, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="capacity", - full_name="lnrpc.ChannelEdge.capacity", - index=5, - number=6, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="node1_policy", - full_name="lnrpc.ChannelEdge.node1_policy", - index=6, - number=7, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="node2_policy", - full_name="lnrpc.ChannelEdge.node2_policy", - index=7, - number=8, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=15924, - serialized_end=16150, -) - - -_CHANNELGRAPHREQUEST = _descriptor.Descriptor( - name="ChannelGraphRequest", - full_name="lnrpc.ChannelGraphRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="include_unannounced", - full_name="lnrpc.ChannelGraphRequest.include_unannounced", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=16152, - serialized_end=16202, -) - - -_CHANNELGRAPH = _descriptor.Descriptor( - name="ChannelGraph", - full_name="lnrpc.ChannelGraph", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="nodes", - full_name="lnrpc.ChannelGraph.nodes", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="edges", - full_name="lnrpc.ChannelGraph.edges", - index=1, - number=2, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=16204, - serialized_end=16290, -) - - -_NODEMETRICSREQUEST = _descriptor.Descriptor( - name="NodeMetricsRequest", - full_name="lnrpc.NodeMetricsRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="types", - full_name="lnrpc.NodeMetricsRequest.types", - index=0, - number=1, - type=14, - cpp_type=8, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=16292, - serialized_end=16350, -) - - -_NODEMETRICSRESPONSE_BETWEENNESSCENTRALITYENTRY = _descriptor.Descriptor( - name="BetweennessCentralityEntry", - full_name="lnrpc.NodeMetricsResponse.BetweennessCentralityEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="lnrpc.NodeMetricsResponse.BetweennessCentralityEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="lnrpc.NodeMetricsResponse.BetweennessCentralityEntry.value", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=16463, - serialized_end=16543, -) - -_NODEMETRICSRESPONSE = _descriptor.Descriptor( - name="NodeMetricsResponse", - full_name="lnrpc.NodeMetricsResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="betweenness_centrality", - full_name="lnrpc.NodeMetricsResponse.betweenness_centrality", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[_NODEMETRICSRESPONSE_BETWEENNESSCENTRALITYENTRY], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=16353, - serialized_end=16543, -) - - -_FLOATMETRIC = _descriptor.Descriptor( - name="FloatMetric", - full_name="lnrpc.FloatMetric", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="value", - full_name="lnrpc.FloatMetric.value", - index=0, - number=1, - type=1, - cpp_type=5, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="normalized_value", - full_name="lnrpc.FloatMetric.normalized_value", - index=1, - number=2, - type=1, - cpp_type=5, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=16545, - serialized_end=16599, -) - - -_CHANINFOREQUEST = _descriptor.Descriptor( - name="ChanInfoRequest", - full_name="lnrpc.ChanInfoRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="chan_id", - full_name="lnrpc.ChanInfoRequest.chan_id", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"0\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=16601, - serialized_end=16639, -) - - -_NETWORKINFOREQUEST = _descriptor.Descriptor( - name="NetworkInfoRequest", - full_name="lnrpc.NetworkInfoRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=16641, - serialized_end=16661, -) - - -_NETWORKINFO = _descriptor.Descriptor( - name="NetworkInfo", - full_name="lnrpc.NetworkInfo", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="graph_diameter", - full_name="lnrpc.NetworkInfo.graph_diameter", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="avg_out_degree", - full_name="lnrpc.NetworkInfo.avg_out_degree", - index=1, - number=2, - type=1, - cpp_type=5, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="max_out_degree", - full_name="lnrpc.NetworkInfo.max_out_degree", - index=2, - number=3, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="num_nodes", - full_name="lnrpc.NetworkInfo.num_nodes", - index=3, - number=4, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="num_channels", - full_name="lnrpc.NetworkInfo.num_channels", - index=4, - number=5, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="total_network_capacity", - full_name="lnrpc.NetworkInfo.total_network_capacity", - index=5, - number=6, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="avg_channel_size", - full_name="lnrpc.NetworkInfo.avg_channel_size", - index=6, - number=7, - type=1, - cpp_type=5, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="min_channel_size", - full_name="lnrpc.NetworkInfo.min_channel_size", - index=7, - number=8, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="max_channel_size", - full_name="lnrpc.NetworkInfo.max_channel_size", - index=8, - number=9, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="median_channel_size_sat", - full_name="lnrpc.NetworkInfo.median_channel_size_sat", - index=9, - number=10, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="num_zombie_chans", - full_name="lnrpc.NetworkInfo.num_zombie_chans", - index=10, - number=11, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=16664, - serialized_end=16959, -) - - -_STOPREQUEST = _descriptor.Descriptor( - name="StopRequest", - full_name="lnrpc.StopRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=16961, - serialized_end=16974, -) - - -_STOPRESPONSE = _descriptor.Descriptor( - name="StopResponse", - full_name="lnrpc.StopResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=16976, - serialized_end=16990, -) - - -_GRAPHTOPOLOGYSUBSCRIPTION = _descriptor.Descriptor( - name="GraphTopologySubscription", - full_name="lnrpc.GraphTopologySubscription", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=16992, - serialized_end=17019, -) - - -_GRAPHTOPOLOGYUPDATE = _descriptor.Descriptor( - name="GraphTopologyUpdate", - full_name="lnrpc.GraphTopologyUpdate", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="node_updates", - full_name="lnrpc.GraphTopologyUpdate.node_updates", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="channel_updates", - full_name="lnrpc.GraphTopologyUpdate.channel_updates", - index=1, - number=2, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="closed_chans", - full_name="lnrpc.GraphTopologyUpdate.closed_chans", - index=2, - number=3, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=17022, - serialized_end=17185, -) - - -_NODEUPDATE_FEATURESENTRY = _descriptor.Descriptor( - name="FeaturesEntry", - full_name="lnrpc.NodeUpdate.FeaturesEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="lnrpc.NodeUpdate.FeaturesEntry.key", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="lnrpc.NodeUpdate.FeaturesEntry.value", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6559, - serialized_end=6622, -) - -_NODEUPDATE = _descriptor.Descriptor( - name="NodeUpdate", - full_name="lnrpc.NodeUpdate", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="addresses", - full_name="lnrpc.NodeUpdate.addresses", - index=0, - number=1, - type=9, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="identity_key", - full_name="lnrpc.NodeUpdate.identity_key", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="global_features", - full_name="lnrpc.NodeUpdate.global_features", - index=2, - number=3, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="alias", - full_name="lnrpc.NodeUpdate.alias", - index=3, - number=4, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="color", - full_name="lnrpc.NodeUpdate.color", - index=4, - number=5, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="node_addresses", - full_name="lnrpc.NodeUpdate.node_addresses", - index=5, - number=7, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="features", - full_name="lnrpc.NodeUpdate.features", - index=6, - number=6, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[_NODEUPDATE_FEATURESENTRY], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=17188, - serialized_end=17464, -) - - -_CHANNELEDGEUPDATE = _descriptor.Descriptor( - name="ChannelEdgeUpdate", - full_name="lnrpc.ChannelEdgeUpdate", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="chan_id", - full_name="lnrpc.ChannelEdgeUpdate.chan_id", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"0\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chan_point", - full_name="lnrpc.ChannelEdgeUpdate.chan_point", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="capacity", - full_name="lnrpc.ChannelEdgeUpdate.capacity", - index=2, - number=3, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="routing_policy", - full_name="lnrpc.ChannelEdgeUpdate.routing_policy", - index=3, - number=4, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="advertising_node", - full_name="lnrpc.ChannelEdgeUpdate.advertising_node", - index=4, - number=5, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="connecting_node", - full_name="lnrpc.ChannelEdgeUpdate.connecting_node", - index=5, - number=6, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=17467, - serialized_end=17663, -) - - -_CLOSEDCHANNELUPDATE = _descriptor.Descriptor( - name="ClosedChannelUpdate", - full_name="lnrpc.ClosedChannelUpdate", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="chan_id", - full_name="lnrpc.ClosedChannelUpdate.chan_id", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"0\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="capacity", - full_name="lnrpc.ClosedChannelUpdate.capacity", - index=1, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="closed_height", - full_name="lnrpc.ClosedChannelUpdate.closed_height", - index=2, - number=3, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chan_point", - full_name="lnrpc.ClosedChannelUpdate.chan_point", - index=3, - number=4, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=17665, - serialized_end=17789, -) - - -_HOPHINT = _descriptor.Descriptor( - name="HopHint", - full_name="lnrpc.HopHint", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="node_id", - full_name="lnrpc.HopHint.node_id", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chan_id", - full_name="lnrpc.HopHint.chan_id", - index=1, - number=2, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"0\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fee_base_msat", - full_name="lnrpc.HopHint.fee_base_msat", - index=2, - number=3, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fee_proportional_millionths", - full_name="lnrpc.HopHint.fee_proportional_millionths", - index=3, - number=4, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="cltv_expiry_delta", - full_name="lnrpc.HopHint.cltv_expiry_delta", - index=4, - number=5, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=17792, - serialized_end=17926, -) - - -_SETID = _descriptor.Descriptor( - name="SetID", - full_name="lnrpc.SetID", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="set_id", - full_name="lnrpc.SetID.set_id", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=17928, - serialized_end=17951, -) - - -_ROUTEHINT = _descriptor.Descriptor( - name="RouteHint", - full_name="lnrpc.RouteHint", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="hop_hints", - full_name="lnrpc.RouteHint.hop_hints", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=17953, - serialized_end=17999, -) - - -_AMPINVOICESTATE = _descriptor.Descriptor( - name="AMPInvoiceState", - full_name="lnrpc.AMPInvoiceState", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="state", - full_name="lnrpc.AMPInvoiceState.state", - index=0, - number=1, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="settle_index", - full_name="lnrpc.AMPInvoiceState.settle_index", - index=1, - number=2, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="settle_time", - full_name="lnrpc.AMPInvoiceState.settle_time", - index=2, - number=3, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amt_paid_msat", - full_name="lnrpc.AMPInvoiceState.amt_paid_msat", - index=3, - number=5, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=18001, - serialized_end=18124, -) - - -_INVOICE_FEATURESENTRY = _descriptor.Descriptor( - name="FeaturesEntry", - full_name="lnrpc.Invoice.FeaturesEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="lnrpc.Invoice.FeaturesEntry.key", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="lnrpc.Invoice.FeaturesEntry.value", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6559, - serialized_end=6622, -) - -_INVOICE_AMPINVOICESTATEENTRY = _descriptor.Descriptor( - name="AmpInvoiceStateEntry", - full_name="lnrpc.Invoice.AmpInvoiceStateEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="lnrpc.Invoice.AmpInvoiceStateEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="lnrpc.Invoice.AmpInvoiceStateEntry.value", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=18877, - serialized_end=18955, -) - -_INVOICE = _descriptor.Descriptor( - name="Invoice", - full_name="lnrpc.Invoice", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="memo", - full_name="lnrpc.Invoice.memo", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="r_preimage", - full_name="lnrpc.Invoice.r_preimage", - index=1, - number=3, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="r_hash", - full_name="lnrpc.Invoice.r_hash", - index=2, - number=4, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="lnrpc.Invoice.value", - index=3, - number=5, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value_msat", - full_name="lnrpc.Invoice.value_msat", - index=4, - number=23, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="settled", - full_name="lnrpc.Invoice.settled", - index=5, - number=6, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="creation_date", - full_name="lnrpc.Invoice.creation_date", - index=6, - number=7, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="settle_date", - full_name="lnrpc.Invoice.settle_date", - index=7, - number=8, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="payment_request", - full_name="lnrpc.Invoice.payment_request", - index=8, - number=9, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="description_hash", - full_name="lnrpc.Invoice.description_hash", - index=9, - number=10, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="expiry", - full_name="lnrpc.Invoice.expiry", - index=10, - number=11, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fallback_addr", - full_name="lnrpc.Invoice.fallback_addr", - index=11, - number=12, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="cltv_expiry", - full_name="lnrpc.Invoice.cltv_expiry", - index=12, - number=13, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="route_hints", - full_name="lnrpc.Invoice.route_hints", - index=13, - number=14, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="private", - full_name="lnrpc.Invoice.private", - index=14, - number=15, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="add_index", - full_name="lnrpc.Invoice.add_index", - index=15, - number=16, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="settle_index", - full_name="lnrpc.Invoice.settle_index", - index=16, - number=17, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amt_paid", - full_name="lnrpc.Invoice.amt_paid", - index=17, - number=18, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amt_paid_sat", - full_name="lnrpc.Invoice.amt_paid_sat", - index=18, - number=19, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amt_paid_msat", - full_name="lnrpc.Invoice.amt_paid_msat", - index=19, - number=20, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="state", - full_name="lnrpc.Invoice.state", - index=20, - number=21, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="htlcs", - full_name="lnrpc.Invoice.htlcs", - index=21, - number=22, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="features", - full_name="lnrpc.Invoice.features", - index=22, - number=24, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="is_keysend", - full_name="lnrpc.Invoice.is_keysend", - index=23, - number=25, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="payment_addr", - full_name="lnrpc.Invoice.payment_addr", - index=24, - number=26, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="is_amp", - full_name="lnrpc.Invoice.is_amp", - index=25, - number=27, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amp_invoice_state", - full_name="lnrpc.Invoice.amp_invoice_state", - index=26, - number=28, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[_INVOICE_FEATURESENTRY, _INVOICE_AMPINVOICESTATEENTRY], - enum_types=[_INVOICE_INVOICESTATE], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=18127, - serialized_end=19028, -) - - -_INVOICEHTLC_CUSTOMRECORDSENTRY = _descriptor.Descriptor( - name="CustomRecordsEntry", - full_name="lnrpc.InvoiceHTLC.CustomRecordsEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="lnrpc.InvoiceHTLC.CustomRecordsEntry.key", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="lnrpc.InvoiceHTLC.CustomRecordsEntry.value", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=14923, - serialized_end=14975, -) - -_INVOICEHTLC = _descriptor.Descriptor( - name="InvoiceHTLC", - full_name="lnrpc.InvoiceHTLC", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="chan_id", - full_name="lnrpc.InvoiceHTLC.chan_id", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"0\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="htlc_index", - full_name="lnrpc.InvoiceHTLC.htlc_index", - index=1, - number=2, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amt_msat", - full_name="lnrpc.InvoiceHTLC.amt_msat", - index=2, - number=3, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="accept_height", - full_name="lnrpc.InvoiceHTLC.accept_height", - index=3, - number=4, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="accept_time", - full_name="lnrpc.InvoiceHTLC.accept_time", - index=4, - number=5, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="resolve_time", - full_name="lnrpc.InvoiceHTLC.resolve_time", - index=5, - number=6, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="expiry_height", - full_name="lnrpc.InvoiceHTLC.expiry_height", - index=6, - number=7, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="state", - full_name="lnrpc.InvoiceHTLC.state", - index=7, - number=8, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="custom_records", - full_name="lnrpc.InvoiceHTLC.custom_records", - index=8, - number=9, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="mpp_total_amt_msat", - full_name="lnrpc.InvoiceHTLC.mpp_total_amt_msat", - index=9, - number=10, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amp", - full_name="lnrpc.InvoiceHTLC.amp", - index=10, - number=11, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[_INVOICEHTLC_CUSTOMRECORDSENTRY], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=19031, - serialized_end=19402, -) - - -_AMP = _descriptor.Descriptor( - name="AMP", - full_name="lnrpc.AMP", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="root_share", - full_name="lnrpc.AMP.root_share", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="set_id", - full_name="lnrpc.AMP.set_id", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="child_index", - full_name="lnrpc.AMP.child_index", - index=2, - number=3, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="hash", - full_name="lnrpc.AMP.hash", - index=3, - number=4, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="preimage", - full_name="lnrpc.AMP.preimage", - index=4, - number=5, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=19404, - serialized_end=19498, -) - - -_ADDINVOICERESPONSE = _descriptor.Descriptor( - name="AddInvoiceResponse", - full_name="lnrpc.AddInvoiceResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="r_hash", - full_name="lnrpc.AddInvoiceResponse.r_hash", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="payment_request", - full_name="lnrpc.AddInvoiceResponse.payment_request", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="add_index", - full_name="lnrpc.AddInvoiceResponse.add_index", - index=2, - number=16, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="payment_addr", - full_name="lnrpc.AddInvoiceResponse.payment_addr", - index=3, - number=17, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=19500, - serialized_end=19602, -) - - -_PAYMENTHASH = _descriptor.Descriptor( - name="PaymentHash", - full_name="lnrpc.PaymentHash", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="r_hash_str", - full_name="lnrpc.PaymentHash.r_hash_str", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="r_hash", - full_name="lnrpc.PaymentHash.r_hash", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=19604, - serialized_end=19657, -) - - -_LISTINVOICEREQUEST = _descriptor.Descriptor( - name="ListInvoiceRequest", - full_name="lnrpc.ListInvoiceRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="pending_only", - full_name="lnrpc.ListInvoiceRequest.pending_only", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="index_offset", - full_name="lnrpc.ListInvoiceRequest.index_offset", - index=1, - number=4, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="num_max_invoices", - full_name="lnrpc.ListInvoiceRequest.num_max_invoices", - index=2, - number=5, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="reversed", - full_name="lnrpc.ListInvoiceRequest.reversed", - index=3, - number=6, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=19659, - serialized_end=19767, -) - - -_LISTINVOICERESPONSE = _descriptor.Descriptor( - name="ListInvoiceResponse", - full_name="lnrpc.ListInvoiceResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="invoices", - full_name="lnrpc.ListInvoiceResponse.invoices", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="last_index_offset", - full_name="lnrpc.ListInvoiceResponse.last_index_offset", - index=1, - number=2, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="first_index_offset", - full_name="lnrpc.ListInvoiceResponse.first_index_offset", - index=2, - number=3, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=19769, - serialized_end=19879, -) - - -_INVOICESUBSCRIPTION = _descriptor.Descriptor( - name="InvoiceSubscription", - full_name="lnrpc.InvoiceSubscription", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="add_index", - full_name="lnrpc.InvoiceSubscription.add_index", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="settle_index", - full_name="lnrpc.InvoiceSubscription.settle_index", - index=1, - number=2, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=19881, - serialized_end=19943, -) - - -_PAYMENT = _descriptor.Descriptor( - name="Payment", - full_name="lnrpc.Payment", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="payment_hash", - full_name="lnrpc.Payment.payment_hash", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="lnrpc.Payment.value", - index=1, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="creation_date", - full_name="lnrpc.Payment.creation_date", - index=2, - number=3, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fee", - full_name="lnrpc.Payment.fee", - index=3, - number=5, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="payment_preimage", - full_name="lnrpc.Payment.payment_preimage", - index=4, - number=6, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value_sat", - full_name="lnrpc.Payment.value_sat", - index=5, - number=7, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value_msat", - full_name="lnrpc.Payment.value_msat", - index=6, - number=8, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="payment_request", - full_name="lnrpc.Payment.payment_request", - index=7, - number=9, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="status", - full_name="lnrpc.Payment.status", - index=8, - number=10, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fee_sat", - full_name="lnrpc.Payment.fee_sat", - index=9, - number=11, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fee_msat", - full_name="lnrpc.Payment.fee_msat", - index=10, - number=12, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="creation_time_ns", - full_name="lnrpc.Payment.creation_time_ns", - index=11, - number=13, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="htlcs", - full_name="lnrpc.Payment.htlcs", - index=12, - number=14, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="payment_index", - full_name="lnrpc.Payment.payment_index", - index=13, - number=15, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="failure_reason", - full_name="lnrpc.Payment.failure_reason", - index=14, - number=16, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[_PAYMENT_PAYMENTSTATUS], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=19946, - serialized_end=20426, -) - - -_HTLCATTEMPT = _descriptor.Descriptor( - name="HTLCAttempt", - full_name="lnrpc.HTLCAttempt", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="attempt_id", - full_name="lnrpc.HTLCAttempt.attempt_id", - index=0, - number=7, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="status", - full_name="lnrpc.HTLCAttempt.status", - index=1, - number=1, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="route", - full_name="lnrpc.HTLCAttempt.route", - index=2, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="attempt_time_ns", - full_name="lnrpc.HTLCAttempt.attempt_time_ns", - index=3, - number=3, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="resolve_time_ns", - full_name="lnrpc.HTLCAttempt.resolve_time_ns", - index=4, - number=4, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="failure", - full_name="lnrpc.HTLCAttempt.failure", - index=5, - number=5, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="preimage", - full_name="lnrpc.HTLCAttempt.preimage", - index=6, - number=6, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[_HTLCATTEMPT_HTLCSTATUS], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=20429, - serialized_end=20695, -) - - -_LISTPAYMENTSREQUEST = _descriptor.Descriptor( - name="ListPaymentsRequest", - full_name="lnrpc.ListPaymentsRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="include_incomplete", - full_name="lnrpc.ListPaymentsRequest.include_incomplete", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="index_offset", - full_name="lnrpc.ListPaymentsRequest.index_offset", - index=1, - number=2, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="max_payments", - full_name="lnrpc.ListPaymentsRequest.max_payments", - index=2, - number=3, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="reversed", - full_name="lnrpc.ListPaymentsRequest.reversed", - index=3, - number=4, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=20697, - serialized_end=20808, -) - - -_LISTPAYMENTSRESPONSE = _descriptor.Descriptor( - name="ListPaymentsResponse", - full_name="lnrpc.ListPaymentsResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="payments", - full_name="lnrpc.ListPaymentsResponse.payments", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="first_index_offset", - full_name="lnrpc.ListPaymentsResponse.first_index_offset", - index=1, - number=2, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="last_index_offset", - full_name="lnrpc.ListPaymentsResponse.last_index_offset", - index=2, - number=3, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=20810, - serialized_end=20921, -) - - -_DELETEPAYMENTREQUEST = _descriptor.Descriptor( - name="DeletePaymentRequest", - full_name="lnrpc.DeletePaymentRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="payment_hash", - full_name="lnrpc.DeletePaymentRequest.payment_hash", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="failed_htlcs_only", - full_name="lnrpc.DeletePaymentRequest.failed_htlcs_only", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=20923, - serialized_end=20994, -) - - -_DELETEALLPAYMENTSREQUEST = _descriptor.Descriptor( - name="DeleteAllPaymentsRequest", - full_name="lnrpc.DeleteAllPaymentsRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="failed_payments_only", - full_name="lnrpc.DeleteAllPaymentsRequest.failed_payments_only", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="failed_htlcs_only", - full_name="lnrpc.DeleteAllPaymentsRequest.failed_htlcs_only", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=20996, - serialized_end=21079, -) - - -_DELETEPAYMENTRESPONSE = _descriptor.Descriptor( - name="DeletePaymentResponse", - full_name="lnrpc.DeletePaymentResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=21081, - serialized_end=21104, -) - - -_DELETEALLPAYMENTSRESPONSE = _descriptor.Descriptor( - name="DeleteAllPaymentsResponse", - full_name="lnrpc.DeleteAllPaymentsResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=21106, - serialized_end=21133, -) - - -_ABANDONCHANNELREQUEST = _descriptor.Descriptor( - name="AbandonChannelRequest", - full_name="lnrpc.AbandonChannelRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="channel_point", - full_name="lnrpc.AbandonChannelRequest.channel_point", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="pending_funding_shim_only", - full_name="lnrpc.AbandonChannelRequest.pending_funding_shim_only", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="i_know_what_i_am_doing", - full_name="lnrpc.AbandonChannelRequest.i_know_what_i_am_doing", - index=2, - number=3, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=21136, - serialized_end=21270, -) - - -_ABANDONCHANNELRESPONSE = _descriptor.Descriptor( - name="AbandonChannelResponse", - full_name="lnrpc.AbandonChannelResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=21272, - serialized_end=21296, -) - - -_DEBUGLEVELREQUEST = _descriptor.Descriptor( - name="DebugLevelRequest", - full_name="lnrpc.DebugLevelRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="show", - full_name="lnrpc.DebugLevelRequest.show", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="level_spec", - full_name="lnrpc.DebugLevelRequest.level_spec", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=21298, - serialized_end=21351, -) - - -_DEBUGLEVELRESPONSE = _descriptor.Descriptor( - name="DebugLevelResponse", - full_name="lnrpc.DebugLevelResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="sub_systems", - full_name="lnrpc.DebugLevelResponse.sub_systems", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=21353, - serialized_end=21394, -) - - -_PAYREQSTRING = _descriptor.Descriptor( - name="PayReqString", - full_name="lnrpc.PayReqString", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="pay_req", - full_name="lnrpc.PayReqString.pay_req", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=21396, - serialized_end=21427, -) - - -_PAYREQ_FEATURESENTRY = _descriptor.Descriptor( - name="FeaturesEntry", - full_name="lnrpc.PayReq.FeaturesEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="lnrpc.PayReq.FeaturesEntry.key", - index=0, - number=1, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="lnrpc.PayReq.FeaturesEntry.value", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=6559, - serialized_end=6622, -) - -_PAYREQ = _descriptor.Descriptor( - name="PayReq", - full_name="lnrpc.PayReq", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="destination", - full_name="lnrpc.PayReq.destination", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="payment_hash", - full_name="lnrpc.PayReq.payment_hash", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="num_satoshis", - full_name="lnrpc.PayReq.num_satoshis", - index=2, - number=3, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="timestamp", - full_name="lnrpc.PayReq.timestamp", - index=3, - number=4, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="expiry", - full_name="lnrpc.PayReq.expiry", - index=4, - number=5, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="description", - full_name="lnrpc.PayReq.description", - index=5, - number=6, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="description_hash", - full_name="lnrpc.PayReq.description_hash", - index=6, - number=7, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fallback_addr", - full_name="lnrpc.PayReq.fallback_addr", - index=7, - number=8, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="cltv_expiry", - full_name="lnrpc.PayReq.cltv_expiry", - index=8, - number=9, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="route_hints", - full_name="lnrpc.PayReq.route_hints", - index=9, - number=10, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="payment_addr", - full_name="lnrpc.PayReq.payment_addr", - index=10, - number=11, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="num_msat", - full_name="lnrpc.PayReq.num_msat", - index=11, - number=12, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="features", - full_name="lnrpc.PayReq.features", - index=12, - number=13, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[_PAYREQ_FEATURESENTRY], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=21430, - serialized_end=21820, -) - - -_FEATURE = _descriptor.Descriptor( - name="Feature", - full_name="lnrpc.Feature", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="name", - full_name="lnrpc.Feature.name", - index=0, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="is_required", - full_name="lnrpc.Feature.is_required", - index=1, - number=3, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="is_known", - full_name="lnrpc.Feature.is_known", - index=2, - number=4, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=21822, - serialized_end=21884, -) - - -_FEEREPORTREQUEST = _descriptor.Descriptor( - name="FeeReportRequest", - full_name="lnrpc.FeeReportRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=21886, - serialized_end=21904, -) - - -_CHANNELFEEREPORT = _descriptor.Descriptor( - name="ChannelFeeReport", - full_name="lnrpc.ChannelFeeReport", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="chan_id", - full_name="lnrpc.ChannelFeeReport.chan_id", - index=0, - number=5, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"0\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="channel_point", - full_name="lnrpc.ChannelFeeReport.channel_point", - index=1, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="base_fee_msat", - full_name="lnrpc.ChannelFeeReport.base_fee_msat", - index=2, - number=2, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fee_per_mil", - full_name="lnrpc.ChannelFeeReport.fee_per_mil", - index=3, - number=3, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fee_rate", - full_name="lnrpc.ChannelFeeReport.fee_rate", - index=4, - number=4, - type=1, - cpp_type=5, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=21906, - serialized_end=22030, -) - - -_FEEREPORTRESPONSE = _descriptor.Descriptor( - name="FeeReportResponse", - full_name="lnrpc.FeeReportResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="channel_fees", - full_name="lnrpc.FeeReportResponse.channel_fees", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="day_fee_sum", - full_name="lnrpc.FeeReportResponse.day_fee_sum", - index=1, - number=2, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="week_fee_sum", - full_name="lnrpc.FeeReportResponse.week_fee_sum", - index=2, - number=3, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="month_fee_sum", - full_name="lnrpc.FeeReportResponse.month_fee_sum", - index=3, - number=4, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=22033, - serialized_end=22165, -) - - -_POLICYUPDATEREQUEST = _descriptor.Descriptor( - name="PolicyUpdateRequest", - full_name="lnrpc.PolicyUpdateRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="global", - full_name="lnrpc.PolicyUpdateRequest.global", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chan_point", - full_name="lnrpc.PolicyUpdateRequest.chan_point", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="base_fee_msat", - full_name="lnrpc.PolicyUpdateRequest.base_fee_msat", - index=2, - number=3, - type=3, - cpp_type=2, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fee_rate", - full_name="lnrpc.PolicyUpdateRequest.fee_rate", - index=3, - number=4, - type=1, - cpp_type=5, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="time_lock_delta", - full_name="lnrpc.PolicyUpdateRequest.time_lock_delta", - index=4, - number=5, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="max_htlc_msat", - full_name="lnrpc.PolicyUpdateRequest.max_htlc_msat", - index=5, - number=6, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="min_htlc_msat", - full_name="lnrpc.PolicyUpdateRequest.min_htlc_msat", - index=6, - number=7, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="min_htlc_msat_specified", - full_name="lnrpc.PolicyUpdateRequest.min_htlc_msat_specified", - index=7, - number=8, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name="scope", - full_name="lnrpc.PolicyUpdateRequest.scope", - index=0, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - ) - ], - serialized_start=22168, - serialized_end=22404, -) - - -_FAILEDUPDATE = _descriptor.Descriptor( - name="FailedUpdate", - full_name="lnrpc.FailedUpdate", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="outpoint", - full_name="lnrpc.FailedUpdate.outpoint", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="reason", - full_name="lnrpc.FailedUpdate.reason", - index=1, - number=2, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="update_error", - full_name="lnrpc.FailedUpdate.update_error", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=22406, - serialized_end=22515, -) - - -_POLICYUPDATERESPONSE = _descriptor.Descriptor( - name="PolicyUpdateResponse", - full_name="lnrpc.PolicyUpdateResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="failed_updates", - full_name="lnrpc.PolicyUpdateResponse.failed_updates", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=22517, - serialized_end=22584, -) - - -_FORWARDINGHISTORYREQUEST = _descriptor.Descriptor( - name="ForwardingHistoryRequest", - full_name="lnrpc.ForwardingHistoryRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="start_time", - full_name="lnrpc.ForwardingHistoryRequest.start_time", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="end_time", - full_name="lnrpc.ForwardingHistoryRequest.end_time", - index=1, - number=2, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="index_offset", - full_name="lnrpc.ForwardingHistoryRequest.index_offset", - index=2, - number=3, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="num_max_events", - full_name="lnrpc.ForwardingHistoryRequest.num_max_events", - index=3, - number=4, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=22586, - serialized_end=22696, -) - - -_FORWARDINGEVENT = _descriptor.Descriptor( - name="ForwardingEvent", - full_name="lnrpc.ForwardingEvent", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="timestamp", - full_name="lnrpc.ForwardingEvent.timestamp", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"\030\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chan_id_in", - full_name="lnrpc.ForwardingEvent.chan_id_in", - index=1, - number=2, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"0\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chan_id_out", - full_name="lnrpc.ForwardingEvent.chan_id_out", - index=2, - number=4, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"0\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amt_in", - full_name="lnrpc.ForwardingEvent.amt_in", - index=3, - number=5, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amt_out", - full_name="lnrpc.ForwardingEvent.amt_out", - index=4, - number=6, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fee", - full_name="lnrpc.ForwardingEvent.fee", - index=5, - number=7, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fee_msat", - full_name="lnrpc.ForwardingEvent.fee_msat", - index=6, - number=8, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amt_in_msat", - full_name="lnrpc.ForwardingEvent.amt_in_msat", - index=7, - number=9, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="amt_out_msat", - full_name="lnrpc.ForwardingEvent.amt_out_msat", - index=8, - number=10, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="timestamp_ns", - full_name="lnrpc.ForwardingEvent.timestamp_ns", - index=9, - number=11, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=22699, - serialized_end=22917, -) - - -_FORWARDINGHISTORYRESPONSE = _descriptor.Descriptor( - name="ForwardingHistoryResponse", - full_name="lnrpc.ForwardingHistoryResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="forwarding_events", - full_name="lnrpc.ForwardingHistoryResponse.forwarding_events", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="last_offset_index", - full_name="lnrpc.ForwardingHistoryResponse.last_offset_index", - index=1, - number=2, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=22919, - serialized_end=23024, -) - - -_EXPORTCHANNELBACKUPREQUEST = _descriptor.Descriptor( - name="ExportChannelBackupRequest", - full_name="lnrpc.ExportChannelBackupRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="chan_point", - full_name="lnrpc.ExportChannelBackupRequest.chan_point", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=23026, - serialized_end=23095, -) - - -_CHANNELBACKUP = _descriptor.Descriptor( - name="ChannelBackup", - full_name="lnrpc.ChannelBackup", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="chan_point", - full_name="lnrpc.ChannelBackup.chan_point", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chan_backup", - full_name="lnrpc.ChannelBackup.chan_backup", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=23097, - serialized_end=23174, -) - - -_MULTICHANBACKUP = _descriptor.Descriptor( - name="MultiChanBackup", - full_name="lnrpc.MultiChanBackup", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="chan_points", - full_name="lnrpc.MultiChanBackup.chan_points", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="multi_chan_backup", - full_name="lnrpc.MultiChanBackup.multi_chan_backup", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=23176, - serialized_end=23262, -) - - -_CHANBACKUPEXPORTREQUEST = _descriptor.Descriptor( - name="ChanBackupExportRequest", - full_name="lnrpc.ChanBackupExportRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=23264, - serialized_end=23289, -) - - -_CHANBACKUPSNAPSHOT = _descriptor.Descriptor( - name="ChanBackupSnapshot", - full_name="lnrpc.ChanBackupSnapshot", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="single_chan_backups", - full_name="lnrpc.ChanBackupSnapshot.single_chan_backups", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="multi_chan_backup", - full_name="lnrpc.ChanBackupSnapshot.multi_chan_backup", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=23291, - serialized_end=23414, -) - - -_CHANNELBACKUPS = _descriptor.Descriptor( - name="ChannelBackups", - full_name="lnrpc.ChannelBackups", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="chan_backups", - full_name="lnrpc.ChannelBackups.chan_backups", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=23416, - serialized_end=23476, -) - - -_RESTORECHANBACKUPREQUEST = _descriptor.Descriptor( - name="RestoreChanBackupRequest", - full_name="lnrpc.RestoreChanBackupRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="chan_backups", - full_name="lnrpc.RestoreChanBackupRequest.chan_backups", - index=0, - number=1, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="multi_chan_backup", - full_name="lnrpc.RestoreChanBackupRequest.multi_chan_backup", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name="backup", - full_name="lnrpc.RestoreChanBackupRequest.backup", - index=0, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - ) - ], - serialized_start=23478, - serialized_end=23590, -) - - -_RESTOREBACKUPRESPONSE = _descriptor.Descriptor( - name="RestoreBackupResponse", - full_name="lnrpc.RestoreBackupResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=23592, - serialized_end=23615, -) - - -_CHANNELBACKUPSUBSCRIPTION = _descriptor.Descriptor( - name="ChannelBackupSubscription", - full_name="lnrpc.ChannelBackupSubscription", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=23617, - serialized_end=23644, -) - - -_VERIFYCHANBACKUPRESPONSE = _descriptor.Descriptor( - name="VerifyChanBackupResponse", - full_name="lnrpc.VerifyChanBackupResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=23646, - serialized_end=23672, -) - - -_MACAROONPERMISSION = _descriptor.Descriptor( - name="MacaroonPermission", - full_name="lnrpc.MacaroonPermission", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="entity", - full_name="lnrpc.MacaroonPermission.entity", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="action", - full_name="lnrpc.MacaroonPermission.action", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=23674, - serialized_end=23726, -) - - -_BAKEMACAROONREQUEST = _descriptor.Descriptor( - name="BakeMacaroonRequest", - full_name="lnrpc.BakeMacaroonRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="permissions", - full_name="lnrpc.BakeMacaroonRequest.permissions", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="root_key_id", - full_name="lnrpc.BakeMacaroonRequest.root_key_id", - index=1, - number=2, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="allow_external_permissions", - full_name="lnrpc.BakeMacaroonRequest.allow_external_permissions", - index=2, - number=3, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=23728, - serialized_end=23854, -) - - -_BAKEMACAROONRESPONSE = _descriptor.Descriptor( - name="BakeMacaroonResponse", - full_name="lnrpc.BakeMacaroonResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="macaroon", - full_name="lnrpc.BakeMacaroonResponse.macaroon", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=23856, - serialized_end=23896, -) - - -_LISTMACAROONIDSREQUEST = _descriptor.Descriptor( - name="ListMacaroonIDsRequest", - full_name="lnrpc.ListMacaroonIDsRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=23898, - serialized_end=23922, -) - - -_LISTMACAROONIDSRESPONSE = _descriptor.Descriptor( - name="ListMacaroonIDsResponse", - full_name="lnrpc.ListMacaroonIDsResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="root_key_ids", - full_name="lnrpc.ListMacaroonIDsResponse.root_key_ids", - index=0, - number=1, - type=4, - cpp_type=4, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=23924, - serialized_end=23971, -) - - -_DELETEMACAROONIDREQUEST = _descriptor.Descriptor( - name="DeleteMacaroonIDRequest", - full_name="lnrpc.DeleteMacaroonIDRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="root_key_id", - full_name="lnrpc.DeleteMacaroonIDRequest.root_key_id", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=23973, - serialized_end=24019, -) - - -_DELETEMACAROONIDRESPONSE = _descriptor.Descriptor( - name="DeleteMacaroonIDResponse", - full_name="lnrpc.DeleteMacaroonIDResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="deleted", - full_name="lnrpc.DeleteMacaroonIDResponse.deleted", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=24021, - serialized_end=24064, -) - - -_MACAROONPERMISSIONLIST = _descriptor.Descriptor( - name="MacaroonPermissionList", - full_name="lnrpc.MacaroonPermissionList", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="permissions", - full_name="lnrpc.MacaroonPermissionList.permissions", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=24066, - serialized_end=24138, -) - - -_LISTPERMISSIONSREQUEST = _descriptor.Descriptor( - name="ListPermissionsRequest", - full_name="lnrpc.ListPermissionsRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=24140, - serialized_end=24164, -) - - -_LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY = _descriptor.Descriptor( - name="MethodPermissionsEntry", - full_name="lnrpc.ListPermissionsResponse.MethodPermissionsEntry", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="key", - full_name="lnrpc.ListPermissionsResponse.MethodPermissionsEntry.key", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="value", - full_name="lnrpc.ListPermissionsResponse.MethodPermissionsEntry.value", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=b"8\001", - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=24277, - serialized_end=24364, -) - -_LISTPERMISSIONSRESPONSE = _descriptor.Descriptor( - name="ListPermissionsResponse", - full_name="lnrpc.ListPermissionsResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="method_permissions", - full_name="lnrpc.ListPermissionsResponse.method_permissions", - index=0, - number=1, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[_LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=24167, - serialized_end=24364, -) - - -_FAILURE = _descriptor.Descriptor( - name="Failure", - full_name="lnrpc.Failure", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="code", - full_name="lnrpc.Failure.code", - index=0, - number=1, - type=14, - cpp_type=8, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="channel_update", - full_name="lnrpc.Failure.channel_update", - index=1, - number=3, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="htlc_msat", - full_name="lnrpc.Failure.htlc_msat", - index=2, - number=4, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="onion_sha_256", - full_name="lnrpc.Failure.onion_sha_256", - index=3, - number=5, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="cltv_expiry", - full_name="lnrpc.Failure.cltv_expiry", - index=4, - number=6, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="flags", - full_name="lnrpc.Failure.flags", - index=5, - number=7, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="failure_source_index", - full_name="lnrpc.Failure.failure_source_index", - index=6, - number=8, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="height", - full_name="lnrpc.Failure.height", - index=7, - number=9, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[_FAILURE_FAILURECODE], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=24367, - serialized_end=25348, -) - - -_CHANNELUPDATE = _descriptor.Descriptor( - name="ChannelUpdate", - full_name="lnrpc.ChannelUpdate", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="signature", - full_name="lnrpc.ChannelUpdate.signature", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chain_hash", - full_name="lnrpc.ChannelUpdate.chain_hash", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="chan_id", - full_name="lnrpc.ChannelUpdate.chan_id", - index=2, - number=3, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=b"0\001", - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="timestamp", - full_name="lnrpc.ChannelUpdate.timestamp", - index=3, - number=4, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="message_flags", - full_name="lnrpc.ChannelUpdate.message_flags", - index=4, - number=10, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="channel_flags", - full_name="lnrpc.ChannelUpdate.channel_flags", - index=5, - number=5, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="time_lock_delta", - full_name="lnrpc.ChannelUpdate.time_lock_delta", - index=6, - number=6, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="htlc_minimum_msat", - full_name="lnrpc.ChannelUpdate.htlc_minimum_msat", - index=7, - number=7, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="base_fee", - full_name="lnrpc.ChannelUpdate.base_fee", - index=8, - number=8, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fee_rate", - full_name="lnrpc.ChannelUpdate.fee_rate", - index=9, - number=9, - type=13, - cpp_type=3, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="htlc_maximum_msat", - full_name="lnrpc.ChannelUpdate.htlc_maximum_msat", - index=10, - number=11, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="extra_opaque_data", - full_name="lnrpc.ChannelUpdate.extra_opaque_data", - index=11, - number=12, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=25351, - serialized_end=25633, -) - - -_MACAROONID = _descriptor.Descriptor( - name="MacaroonId", - full_name="lnrpc.MacaroonId", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="nonce", - full_name="lnrpc.MacaroonId.nonce", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="storageId", - full_name="lnrpc.MacaroonId.storageId", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="ops", - full_name="lnrpc.MacaroonId.ops", - index=2, - number=3, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=25635, - serialized_end=25705, -) - - -_OP = _descriptor.Descriptor( - name="Op", - full_name="lnrpc.Op", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="entity", - full_name="lnrpc.Op.entity", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="actions", - full_name="lnrpc.Op.actions", - index=1, - number=2, - type=9, - cpp_type=9, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=25707, - serialized_end=25744, -) - - -_CHECKMACPERMREQUEST = _descriptor.Descriptor( - name="CheckMacPermRequest", - full_name="lnrpc.CheckMacPermRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="macaroon", - full_name="lnrpc.CheckMacPermRequest.macaroon", - index=0, - number=1, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="permissions", - full_name="lnrpc.CheckMacPermRequest.permissions", - index=1, - number=2, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="fullMethod", - full_name="lnrpc.CheckMacPermRequest.fullMethod", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=25746, - serialized_end=25853, -) - - -_CHECKMACPERMRESPONSE = _descriptor.Descriptor( - name="CheckMacPermResponse", - full_name="lnrpc.CheckMacPermResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="valid", - full_name="lnrpc.CheckMacPermResponse.valid", - index=0, - number=1, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=25855, - serialized_end=25892, -) - - -_RPCMIDDLEWAREREQUEST = _descriptor.Descriptor( - name="RPCMiddlewareRequest", - full_name="lnrpc.RPCMiddlewareRequest", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="request_id", - full_name="lnrpc.RPCMiddlewareRequest.request_id", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="raw_macaroon", - full_name="lnrpc.RPCMiddlewareRequest.raw_macaroon", - index=1, - number=2, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="custom_caveat_condition", - full_name="lnrpc.RPCMiddlewareRequest.custom_caveat_condition", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="stream_auth", - full_name="lnrpc.RPCMiddlewareRequest.stream_auth", - index=3, - number=4, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="request", - full_name="lnrpc.RPCMiddlewareRequest.request", - index=4, - number=5, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="response", - full_name="lnrpc.RPCMiddlewareRequest.response", - index=5, - number=6, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name="intercept_type", - full_name="lnrpc.RPCMiddlewareRequest.intercept_type", - index=0, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - ) - ], - serialized_start=25895, - serialized_end=26129, -) - - -_STREAMAUTH = _descriptor.Descriptor( - name="StreamAuth", - full_name="lnrpc.StreamAuth", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="method_full_uri", - full_name="lnrpc.StreamAuth.method_full_uri", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ) - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=26131, - serialized_end=26168, -) - - -_RPCMESSAGE = _descriptor.Descriptor( - name="RPCMessage", - full_name="lnrpc.RPCMessage", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="method_full_uri", - full_name="lnrpc.RPCMessage.method_full_uri", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="stream_rpc", - full_name="lnrpc.RPCMessage.stream_rpc", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="type_name", - full_name="lnrpc.RPCMessage.type_name", - index=2, - number=3, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="serialized", - full_name="lnrpc.RPCMessage.serialized", - index=3, - number=4, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=26170, - serialized_end=26266, -) - - -_RPCMIDDLEWARERESPONSE = _descriptor.Descriptor( - name="RPCMiddlewareResponse", - full_name="lnrpc.RPCMiddlewareResponse", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="request_id", - full_name="lnrpc.RPCMiddlewareResponse.request_id", - index=0, - number=1, - type=4, - cpp_type=4, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="register", - full_name="lnrpc.RPCMiddlewareResponse.register", - index=1, - number=2, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="feedback", - full_name="lnrpc.RPCMiddlewareResponse.feedback", - index=2, - number=3, - type=11, - cpp_type=10, - label=1, - has_default_value=False, - default_value=None, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[ - _descriptor.OneofDescriptor( - name="middleware_message", - full_name="lnrpc.RPCMiddlewareResponse.middleware_message", - index=0, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[], - ) - ], - serialized_start=26269, - serialized_end=26431, -) - - -_MIDDLEWAREREGISTRATION = _descriptor.Descriptor( - name="MiddlewareRegistration", - full_name="lnrpc.MiddlewareRegistration", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="middleware_name", - full_name="lnrpc.MiddlewareRegistration.middleware_name", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="custom_macaroon_caveat_name", - full_name="lnrpc.MiddlewareRegistration.custom_macaroon_caveat_name", - index=1, - number=2, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="read_only_mode", - full_name="lnrpc.MiddlewareRegistration.read_only_mode", - index=2, - number=3, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=26433, - serialized_end=26543, -) - - -_INTERCEPTFEEDBACK = _descriptor.Descriptor( - name="InterceptFeedback", - full_name="lnrpc.InterceptFeedback", - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name="error", - full_name="lnrpc.InterceptFeedback.error", - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"".decode("utf-8"), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="replace_response", - full_name="lnrpc.InterceptFeedback.replace_response", - index=1, - number=2, - type=8, - cpp_type=7, - label=1, - has_default_value=False, - default_value=False, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - _descriptor.FieldDescriptor( - name="replacement_serialized", - full_name="lnrpc.InterceptFeedback.replacement_serialized", - index=2, - number=3, - type=12, - cpp_type=9, - label=1, - has_default_value=False, - default_value=b"", - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - serialized_options=None, - file=DESCRIPTOR, - create_key=_descriptor._internal_create_key, - ), - ], - extensions=[], - nested_types=[], - enum_types=[], - serialized_options=None, - is_extendable=False, - syntax="proto3", - extension_ranges=[], - oneofs=[], - serialized_start=26545, - serialized_end=26637, -) - -_UTXO.fields_by_name["address_type"].enum_type = _ADDRESSTYPE -_UTXO.fields_by_name["outpoint"].message_type = _OUTPOINT -_TRANSACTIONDETAILS.fields_by_name["transactions"].message_type = _TRANSACTION -_FEELIMIT.oneofs_by_name["limit"].fields.append(_FEELIMIT.fields_by_name["fixed"]) -_FEELIMIT.fields_by_name["fixed"].containing_oneof = _FEELIMIT.oneofs_by_name["limit"] -_FEELIMIT.oneofs_by_name["limit"].fields.append(_FEELIMIT.fields_by_name["fixed_msat"]) -_FEELIMIT.fields_by_name["fixed_msat"].containing_oneof = _FEELIMIT.oneofs_by_name[ - "limit" -] -_FEELIMIT.oneofs_by_name["limit"].fields.append(_FEELIMIT.fields_by_name["percent"]) -_FEELIMIT.fields_by_name["percent"].containing_oneof = _FEELIMIT.oneofs_by_name["limit"] -_SENDREQUEST_DESTCUSTOMRECORDSENTRY.containing_type = _SENDREQUEST -_SENDREQUEST.fields_by_name["fee_limit"].message_type = _FEELIMIT -_SENDREQUEST.fields_by_name[ - "dest_custom_records" -].message_type = _SENDREQUEST_DESTCUSTOMRECORDSENTRY -_SENDREQUEST.fields_by_name["dest_features"].enum_type = _FEATUREBIT -_SENDRESPONSE.fields_by_name["payment_route"].message_type = _ROUTE -_SENDTOROUTEREQUEST.fields_by_name["route"].message_type = _ROUTE -_CHANNELACCEPTREQUEST.fields_by_name["commitment_type"].enum_type = _COMMITMENTTYPE -_CHANNELPOINT.oneofs_by_name["funding_txid"].fields.append( - _CHANNELPOINT.fields_by_name["funding_txid_bytes"] -) -_CHANNELPOINT.fields_by_name[ - "funding_txid_bytes" -].containing_oneof = _CHANNELPOINT.oneofs_by_name["funding_txid"] -_CHANNELPOINT.oneofs_by_name["funding_txid"].fields.append( - _CHANNELPOINT.fields_by_name["funding_txid_str"] -) -_CHANNELPOINT.fields_by_name[ - "funding_txid_str" -].containing_oneof = _CHANNELPOINT.oneofs_by_name["funding_txid"] -_ESTIMATEFEEREQUEST_ADDRTOAMOUNTENTRY.containing_type = _ESTIMATEFEEREQUEST -_ESTIMATEFEEREQUEST.fields_by_name[ - "AddrToAmount" -].message_type = _ESTIMATEFEEREQUEST_ADDRTOAMOUNTENTRY -_SENDMANYREQUEST_ADDRTOAMOUNTENTRY.containing_type = _SENDMANYREQUEST -_SENDMANYREQUEST.fields_by_name[ - "AddrToAmount" -].message_type = _SENDMANYREQUEST_ADDRTOAMOUNTENTRY -_LISTUNSPENTRESPONSE.fields_by_name["utxos"].message_type = _UTXO -_NEWADDRESSREQUEST.fields_by_name["type"].enum_type = _ADDRESSTYPE -_CONNECTPEERREQUEST.fields_by_name["addr"].message_type = _LIGHTNINGADDRESS -_CHANNEL.fields_by_name["pending_htlcs"].message_type = _HTLC -_CHANNEL.fields_by_name["commitment_type"].enum_type = _COMMITMENTTYPE -_CHANNEL.fields_by_name["local_constraints"].message_type = _CHANNELCONSTRAINTS -_CHANNEL.fields_by_name["remote_constraints"].message_type = _CHANNELCONSTRAINTS -_LISTCHANNELSRESPONSE.fields_by_name["channels"].message_type = _CHANNEL -_CHANNELCLOSESUMMARY.fields_by_name[ - "close_type" -].enum_type = _CHANNELCLOSESUMMARY_CLOSURETYPE -_CHANNELCLOSESUMMARY.fields_by_name["open_initiator"].enum_type = _INITIATOR -_CHANNELCLOSESUMMARY.fields_by_name["close_initiator"].enum_type = _INITIATOR -_CHANNELCLOSESUMMARY.fields_by_name["resolutions"].message_type = _RESOLUTION -_CHANNELCLOSESUMMARY_CLOSURETYPE.containing_type = _CHANNELCLOSESUMMARY -_RESOLUTION.fields_by_name["resolution_type"].enum_type = _RESOLUTIONTYPE -_RESOLUTION.fields_by_name["outcome"].enum_type = _RESOLUTIONOUTCOME -_RESOLUTION.fields_by_name["outpoint"].message_type = _OUTPOINT -_CLOSEDCHANNELSRESPONSE.fields_by_name["channels"].message_type = _CHANNELCLOSESUMMARY -_PEER_FEATURESENTRY.fields_by_name["value"].message_type = _FEATURE -_PEER_FEATURESENTRY.containing_type = _PEER -_PEER.fields_by_name["sync_type"].enum_type = _PEER_SYNCTYPE -_PEER.fields_by_name["features"].message_type = _PEER_FEATURESENTRY -_PEER.fields_by_name["errors"].message_type = _TIMESTAMPEDERROR -_PEER_SYNCTYPE.containing_type = _PEER -_LISTPEERSRESPONSE.fields_by_name["peers"].message_type = _PEER -_PEEREVENT.fields_by_name["type"].enum_type = _PEEREVENT_EVENTTYPE -_PEEREVENT_EVENTTYPE.containing_type = _PEEREVENT -_GETINFORESPONSE_FEATURESENTRY.fields_by_name["value"].message_type = _FEATURE -_GETINFORESPONSE_FEATURESENTRY.containing_type = _GETINFORESPONSE -_GETINFORESPONSE.fields_by_name["chains"].message_type = _CHAIN -_GETINFORESPONSE.fields_by_name[ - "features" -].message_type = _GETINFORESPONSE_FEATURESENTRY -_CHANNELOPENUPDATE.fields_by_name["channel_point"].message_type = _CHANNELPOINT -_CLOSECHANNELREQUEST.fields_by_name["channel_point"].message_type = _CHANNELPOINT -_CLOSESTATUSUPDATE.fields_by_name["close_pending"].message_type = _PENDINGUPDATE -_CLOSESTATUSUPDATE.fields_by_name["chan_close"].message_type = _CHANNELCLOSEUPDATE -_CLOSESTATUSUPDATE.oneofs_by_name["update"].fields.append( - _CLOSESTATUSUPDATE.fields_by_name["close_pending"] -) -_CLOSESTATUSUPDATE.fields_by_name[ - "close_pending" -].containing_oneof = _CLOSESTATUSUPDATE.oneofs_by_name["update"] -_CLOSESTATUSUPDATE.oneofs_by_name["update"].fields.append( - _CLOSESTATUSUPDATE.fields_by_name["chan_close"] -) -_CLOSESTATUSUPDATE.fields_by_name[ - "chan_close" -].containing_oneof = _CLOSESTATUSUPDATE.oneofs_by_name["update"] -_BATCHOPENCHANNELREQUEST.fields_by_name["channels"].message_type = _BATCHOPENCHANNEL -_BATCHOPENCHANNEL.fields_by_name["commitment_type"].enum_type = _COMMITMENTTYPE -_BATCHOPENCHANNELRESPONSE.fields_by_name[ - "pending_channels" -].message_type = _PENDINGUPDATE -_OPENCHANNELREQUEST.fields_by_name["funding_shim"].message_type = _FUNDINGSHIM -_OPENCHANNELREQUEST.fields_by_name["commitment_type"].enum_type = _COMMITMENTTYPE -_OPENSTATUSUPDATE.fields_by_name["chan_pending"].message_type = _PENDINGUPDATE -_OPENSTATUSUPDATE.fields_by_name["chan_open"].message_type = _CHANNELOPENUPDATE -_OPENSTATUSUPDATE.fields_by_name["psbt_fund"].message_type = _READYFORPSBTFUNDING -_OPENSTATUSUPDATE.oneofs_by_name["update"].fields.append( - _OPENSTATUSUPDATE.fields_by_name["chan_pending"] -) -_OPENSTATUSUPDATE.fields_by_name[ - "chan_pending" -].containing_oneof = _OPENSTATUSUPDATE.oneofs_by_name["update"] -_OPENSTATUSUPDATE.oneofs_by_name["update"].fields.append( - _OPENSTATUSUPDATE.fields_by_name["chan_open"] -) -_OPENSTATUSUPDATE.fields_by_name[ - "chan_open" -].containing_oneof = _OPENSTATUSUPDATE.oneofs_by_name["update"] -_OPENSTATUSUPDATE.oneofs_by_name["update"].fields.append( - _OPENSTATUSUPDATE.fields_by_name["psbt_fund"] -) -_OPENSTATUSUPDATE.fields_by_name[ - "psbt_fund" -].containing_oneof = _OPENSTATUSUPDATE.oneofs_by_name["update"] -_KEYDESCRIPTOR.fields_by_name["key_loc"].message_type = _KEYLOCATOR -_CHANPOINTSHIM.fields_by_name["chan_point"].message_type = _CHANNELPOINT -_CHANPOINTSHIM.fields_by_name["local_key"].message_type = _KEYDESCRIPTOR -_FUNDINGSHIM.fields_by_name["chan_point_shim"].message_type = _CHANPOINTSHIM -_FUNDINGSHIM.fields_by_name["psbt_shim"].message_type = _PSBTSHIM -_FUNDINGSHIM.oneofs_by_name["shim"].fields.append( - _FUNDINGSHIM.fields_by_name["chan_point_shim"] -) -_FUNDINGSHIM.fields_by_name[ - "chan_point_shim" -].containing_oneof = _FUNDINGSHIM.oneofs_by_name["shim"] -_FUNDINGSHIM.oneofs_by_name["shim"].fields.append( - _FUNDINGSHIM.fields_by_name["psbt_shim"] -) -_FUNDINGSHIM.fields_by_name["psbt_shim"].containing_oneof = _FUNDINGSHIM.oneofs_by_name[ - "shim" -] -_FUNDINGTRANSITIONMSG.fields_by_name["shim_register"].message_type = _FUNDINGSHIM -_FUNDINGTRANSITIONMSG.fields_by_name["shim_cancel"].message_type = _FUNDINGSHIMCANCEL -_FUNDINGTRANSITIONMSG.fields_by_name["psbt_verify"].message_type = _FUNDINGPSBTVERIFY -_FUNDINGTRANSITIONMSG.fields_by_name[ - "psbt_finalize" -].message_type = _FUNDINGPSBTFINALIZE -_FUNDINGTRANSITIONMSG.oneofs_by_name["trigger"].fields.append( - _FUNDINGTRANSITIONMSG.fields_by_name["shim_register"] -) -_FUNDINGTRANSITIONMSG.fields_by_name[ - "shim_register" -].containing_oneof = _FUNDINGTRANSITIONMSG.oneofs_by_name["trigger"] -_FUNDINGTRANSITIONMSG.oneofs_by_name["trigger"].fields.append( - _FUNDINGTRANSITIONMSG.fields_by_name["shim_cancel"] -) -_FUNDINGTRANSITIONMSG.fields_by_name[ - "shim_cancel" -].containing_oneof = _FUNDINGTRANSITIONMSG.oneofs_by_name["trigger"] -_FUNDINGTRANSITIONMSG.oneofs_by_name["trigger"].fields.append( - _FUNDINGTRANSITIONMSG.fields_by_name["psbt_verify"] -) -_FUNDINGTRANSITIONMSG.fields_by_name[ - "psbt_verify" -].containing_oneof = _FUNDINGTRANSITIONMSG.oneofs_by_name["trigger"] -_FUNDINGTRANSITIONMSG.oneofs_by_name["trigger"].fields.append( - _FUNDINGTRANSITIONMSG.fields_by_name["psbt_finalize"] -) -_FUNDINGTRANSITIONMSG.fields_by_name[ - "psbt_finalize" -].containing_oneof = _FUNDINGTRANSITIONMSG.oneofs_by_name["trigger"] -_PENDINGCHANNELSRESPONSE_PENDINGCHANNEL.fields_by_name[ - "initiator" -].enum_type = _INITIATOR -_PENDINGCHANNELSRESPONSE_PENDINGCHANNEL.fields_by_name[ - "commitment_type" -].enum_type = _COMMITMENTTYPE -_PENDINGCHANNELSRESPONSE_PENDINGCHANNEL.containing_type = _PENDINGCHANNELSRESPONSE -_PENDINGCHANNELSRESPONSE_PENDINGOPENCHANNEL.fields_by_name[ - "channel" -].message_type = _PENDINGCHANNELSRESPONSE_PENDINGCHANNEL -_PENDINGCHANNELSRESPONSE_PENDINGOPENCHANNEL.containing_type = _PENDINGCHANNELSRESPONSE -_PENDINGCHANNELSRESPONSE_WAITINGCLOSECHANNEL.fields_by_name[ - "channel" -].message_type = _PENDINGCHANNELSRESPONSE_PENDINGCHANNEL -_PENDINGCHANNELSRESPONSE_WAITINGCLOSECHANNEL.fields_by_name[ - "commitments" -].message_type = _PENDINGCHANNELSRESPONSE_COMMITMENTS -_PENDINGCHANNELSRESPONSE_WAITINGCLOSECHANNEL.containing_type = _PENDINGCHANNELSRESPONSE -_PENDINGCHANNELSRESPONSE_COMMITMENTS.containing_type = _PENDINGCHANNELSRESPONSE -_PENDINGCHANNELSRESPONSE_CLOSEDCHANNEL.fields_by_name[ - "channel" -].message_type = _PENDINGCHANNELSRESPONSE_PENDINGCHANNEL -_PENDINGCHANNELSRESPONSE_CLOSEDCHANNEL.containing_type = _PENDINGCHANNELSRESPONSE -_PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL.fields_by_name[ - "channel" -].message_type = _PENDINGCHANNELSRESPONSE_PENDINGCHANNEL -_PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL.fields_by_name[ - "pending_htlcs" -].message_type = _PENDINGHTLC -_PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL.fields_by_name[ - "anchor" -].enum_type = _PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL_ANCHORSTATE -_PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL.containing_type = _PENDINGCHANNELSRESPONSE -_PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL_ANCHORSTATE.containing_type = ( - _PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL -) -_PENDINGCHANNELSRESPONSE.fields_by_name[ - "pending_open_channels" -].message_type = _PENDINGCHANNELSRESPONSE_PENDINGOPENCHANNEL -_PENDINGCHANNELSRESPONSE.fields_by_name[ - "pending_closing_channels" -].message_type = _PENDINGCHANNELSRESPONSE_CLOSEDCHANNEL -_PENDINGCHANNELSRESPONSE.fields_by_name[ - "pending_force_closing_channels" -].message_type = _PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL -_PENDINGCHANNELSRESPONSE.fields_by_name[ - "waiting_close_channels" -].message_type = _PENDINGCHANNELSRESPONSE_WAITINGCLOSECHANNEL -_CHANNELEVENTUPDATE.fields_by_name["open_channel"].message_type = _CHANNEL -_CHANNELEVENTUPDATE.fields_by_name["closed_channel"].message_type = _CHANNELCLOSESUMMARY -_CHANNELEVENTUPDATE.fields_by_name["active_channel"].message_type = _CHANNELPOINT -_CHANNELEVENTUPDATE.fields_by_name["inactive_channel"].message_type = _CHANNELPOINT -_CHANNELEVENTUPDATE.fields_by_name["pending_open_channel"].message_type = _PENDINGUPDATE -_CHANNELEVENTUPDATE.fields_by_name[ - "fully_resolved_channel" -].message_type = _CHANNELPOINT -_CHANNELEVENTUPDATE.fields_by_name["type"].enum_type = _CHANNELEVENTUPDATE_UPDATETYPE -_CHANNELEVENTUPDATE_UPDATETYPE.containing_type = _CHANNELEVENTUPDATE -_CHANNELEVENTUPDATE.oneofs_by_name["channel"].fields.append( - _CHANNELEVENTUPDATE.fields_by_name["open_channel"] -) -_CHANNELEVENTUPDATE.fields_by_name[ - "open_channel" -].containing_oneof = _CHANNELEVENTUPDATE.oneofs_by_name["channel"] -_CHANNELEVENTUPDATE.oneofs_by_name["channel"].fields.append( - _CHANNELEVENTUPDATE.fields_by_name["closed_channel"] -) -_CHANNELEVENTUPDATE.fields_by_name[ - "closed_channel" -].containing_oneof = _CHANNELEVENTUPDATE.oneofs_by_name["channel"] -_CHANNELEVENTUPDATE.oneofs_by_name["channel"].fields.append( - _CHANNELEVENTUPDATE.fields_by_name["active_channel"] -) -_CHANNELEVENTUPDATE.fields_by_name[ - "active_channel" -].containing_oneof = _CHANNELEVENTUPDATE.oneofs_by_name["channel"] -_CHANNELEVENTUPDATE.oneofs_by_name["channel"].fields.append( - _CHANNELEVENTUPDATE.fields_by_name["inactive_channel"] -) -_CHANNELEVENTUPDATE.fields_by_name[ - "inactive_channel" -].containing_oneof = _CHANNELEVENTUPDATE.oneofs_by_name["channel"] -_CHANNELEVENTUPDATE.oneofs_by_name["channel"].fields.append( - _CHANNELEVENTUPDATE.fields_by_name["pending_open_channel"] -) -_CHANNELEVENTUPDATE.fields_by_name[ - "pending_open_channel" -].containing_oneof = _CHANNELEVENTUPDATE.oneofs_by_name["channel"] -_CHANNELEVENTUPDATE.oneofs_by_name["channel"].fields.append( - _CHANNELEVENTUPDATE.fields_by_name["fully_resolved_channel"] -) -_CHANNELEVENTUPDATE.fields_by_name[ - "fully_resolved_channel" -].containing_oneof = _CHANNELEVENTUPDATE.oneofs_by_name["channel"] -_WALLETBALANCERESPONSE_ACCOUNTBALANCEENTRY.fields_by_name[ - "value" -].message_type = _WALLETACCOUNTBALANCE -_WALLETBALANCERESPONSE_ACCOUNTBALANCEENTRY.containing_type = _WALLETBALANCERESPONSE -_WALLETBALANCERESPONSE.fields_by_name[ - "account_balance" -].message_type = _WALLETBALANCERESPONSE_ACCOUNTBALANCEENTRY -_CHANNELBALANCERESPONSE.fields_by_name["local_balance"].message_type = _AMOUNT -_CHANNELBALANCERESPONSE.fields_by_name["remote_balance"].message_type = _AMOUNT -_CHANNELBALANCERESPONSE.fields_by_name["unsettled_local_balance"].message_type = _AMOUNT -_CHANNELBALANCERESPONSE.fields_by_name[ - "unsettled_remote_balance" -].message_type = _AMOUNT -_CHANNELBALANCERESPONSE.fields_by_name[ - "pending_open_local_balance" -].message_type = _AMOUNT -_CHANNELBALANCERESPONSE.fields_by_name[ - "pending_open_remote_balance" -].message_type = _AMOUNT -_QUERYROUTESREQUEST_DESTCUSTOMRECORDSENTRY.containing_type = _QUERYROUTESREQUEST -_QUERYROUTESREQUEST.fields_by_name["fee_limit"].message_type = _FEELIMIT -_QUERYROUTESREQUEST.fields_by_name["ignored_edges"].message_type = _EDGELOCATOR -_QUERYROUTESREQUEST.fields_by_name["ignored_pairs"].message_type = _NODEPAIR -_QUERYROUTESREQUEST.fields_by_name[ - "dest_custom_records" -].message_type = _QUERYROUTESREQUEST_DESTCUSTOMRECORDSENTRY -_QUERYROUTESREQUEST.fields_by_name["route_hints"].message_type = _ROUTEHINT -_QUERYROUTESREQUEST.fields_by_name["dest_features"].enum_type = _FEATUREBIT -_QUERYROUTESRESPONSE.fields_by_name["routes"].message_type = _ROUTE -_HOP_CUSTOMRECORDSENTRY.containing_type = _HOP -_HOP.fields_by_name["mpp_record"].message_type = _MPPRECORD -_HOP.fields_by_name["amp_record"].message_type = _AMPRECORD -_HOP.fields_by_name["custom_records"].message_type = _HOP_CUSTOMRECORDSENTRY -_ROUTE.fields_by_name["hops"].message_type = _HOP -_NODEINFO.fields_by_name["node"].message_type = _LIGHTNINGNODE -_NODEINFO.fields_by_name["channels"].message_type = _CHANNELEDGE -_LIGHTNINGNODE_FEATURESENTRY.fields_by_name["value"].message_type = _FEATURE -_LIGHTNINGNODE_FEATURESENTRY.containing_type = _LIGHTNINGNODE -_LIGHTNINGNODE.fields_by_name["addresses"].message_type = _NODEADDRESS -_LIGHTNINGNODE.fields_by_name["features"].message_type = _LIGHTNINGNODE_FEATURESENTRY -_CHANNELEDGE.fields_by_name["node1_policy"].message_type = _ROUTINGPOLICY -_CHANNELEDGE.fields_by_name["node2_policy"].message_type = _ROUTINGPOLICY -_CHANNELGRAPH.fields_by_name["nodes"].message_type = _LIGHTNINGNODE -_CHANNELGRAPH.fields_by_name["edges"].message_type = _CHANNELEDGE -_NODEMETRICSREQUEST.fields_by_name["types"].enum_type = _NODEMETRICTYPE -_NODEMETRICSRESPONSE_BETWEENNESSCENTRALITYENTRY.fields_by_name[ - "value" -].message_type = _FLOATMETRIC -_NODEMETRICSRESPONSE_BETWEENNESSCENTRALITYENTRY.containing_type = _NODEMETRICSRESPONSE -_NODEMETRICSRESPONSE.fields_by_name[ - "betweenness_centrality" -].message_type = _NODEMETRICSRESPONSE_BETWEENNESSCENTRALITYENTRY -_GRAPHTOPOLOGYUPDATE.fields_by_name["node_updates"].message_type = _NODEUPDATE -_GRAPHTOPOLOGYUPDATE.fields_by_name["channel_updates"].message_type = _CHANNELEDGEUPDATE -_GRAPHTOPOLOGYUPDATE.fields_by_name["closed_chans"].message_type = _CLOSEDCHANNELUPDATE -_NODEUPDATE_FEATURESENTRY.fields_by_name["value"].message_type = _FEATURE -_NODEUPDATE_FEATURESENTRY.containing_type = _NODEUPDATE -_NODEUPDATE.fields_by_name["node_addresses"].message_type = _NODEADDRESS -_NODEUPDATE.fields_by_name["features"].message_type = _NODEUPDATE_FEATURESENTRY -_CHANNELEDGEUPDATE.fields_by_name["chan_point"].message_type = _CHANNELPOINT -_CHANNELEDGEUPDATE.fields_by_name["routing_policy"].message_type = _ROUTINGPOLICY -_CLOSEDCHANNELUPDATE.fields_by_name["chan_point"].message_type = _CHANNELPOINT -_ROUTEHINT.fields_by_name["hop_hints"].message_type = _HOPHINT -_AMPINVOICESTATE.fields_by_name["state"].enum_type = _INVOICEHTLCSTATE -_INVOICE_FEATURESENTRY.fields_by_name["value"].message_type = _FEATURE -_INVOICE_FEATURESENTRY.containing_type = _INVOICE -_INVOICE_AMPINVOICESTATEENTRY.fields_by_name["value"].message_type = _AMPINVOICESTATE -_INVOICE_AMPINVOICESTATEENTRY.containing_type = _INVOICE -_INVOICE.fields_by_name["route_hints"].message_type = _ROUTEHINT -_INVOICE.fields_by_name["state"].enum_type = _INVOICE_INVOICESTATE -_INVOICE.fields_by_name["htlcs"].message_type = _INVOICEHTLC -_INVOICE.fields_by_name["features"].message_type = _INVOICE_FEATURESENTRY -_INVOICE.fields_by_name[ - "amp_invoice_state" -].message_type = _INVOICE_AMPINVOICESTATEENTRY -_INVOICE_INVOICESTATE.containing_type = _INVOICE -_INVOICEHTLC_CUSTOMRECORDSENTRY.containing_type = _INVOICEHTLC -_INVOICEHTLC.fields_by_name["state"].enum_type = _INVOICEHTLCSTATE -_INVOICEHTLC.fields_by_name[ - "custom_records" -].message_type = _INVOICEHTLC_CUSTOMRECORDSENTRY -_INVOICEHTLC.fields_by_name["amp"].message_type = _AMP -_LISTINVOICERESPONSE.fields_by_name["invoices"].message_type = _INVOICE -_PAYMENT.fields_by_name["status"].enum_type = _PAYMENT_PAYMENTSTATUS -_PAYMENT.fields_by_name["htlcs"].message_type = _HTLCATTEMPT -_PAYMENT.fields_by_name["failure_reason"].enum_type = _PAYMENTFAILUREREASON -_PAYMENT_PAYMENTSTATUS.containing_type = _PAYMENT -_HTLCATTEMPT.fields_by_name["status"].enum_type = _HTLCATTEMPT_HTLCSTATUS -_HTLCATTEMPT.fields_by_name["route"].message_type = _ROUTE -_HTLCATTEMPT.fields_by_name["failure"].message_type = _FAILURE -_HTLCATTEMPT_HTLCSTATUS.containing_type = _HTLCATTEMPT -_LISTPAYMENTSRESPONSE.fields_by_name["payments"].message_type = _PAYMENT -_ABANDONCHANNELREQUEST.fields_by_name["channel_point"].message_type = _CHANNELPOINT -_PAYREQ_FEATURESENTRY.fields_by_name["value"].message_type = _FEATURE -_PAYREQ_FEATURESENTRY.containing_type = _PAYREQ -_PAYREQ.fields_by_name["route_hints"].message_type = _ROUTEHINT -_PAYREQ.fields_by_name["features"].message_type = _PAYREQ_FEATURESENTRY -_FEEREPORTRESPONSE.fields_by_name["channel_fees"].message_type = _CHANNELFEEREPORT -_POLICYUPDATEREQUEST.fields_by_name["chan_point"].message_type = _CHANNELPOINT -_POLICYUPDATEREQUEST.oneofs_by_name["scope"].fields.append( - _POLICYUPDATEREQUEST.fields_by_name["global"] -) -_POLICYUPDATEREQUEST.fields_by_name[ - "global" -].containing_oneof = _POLICYUPDATEREQUEST.oneofs_by_name["scope"] -_POLICYUPDATEREQUEST.oneofs_by_name["scope"].fields.append( - _POLICYUPDATEREQUEST.fields_by_name["chan_point"] -) -_POLICYUPDATEREQUEST.fields_by_name[ - "chan_point" -].containing_oneof = _POLICYUPDATEREQUEST.oneofs_by_name["scope"] -_FAILEDUPDATE.fields_by_name["outpoint"].message_type = _OUTPOINT -_FAILEDUPDATE.fields_by_name["reason"].enum_type = _UPDATEFAILURE -_POLICYUPDATERESPONSE.fields_by_name["failed_updates"].message_type = _FAILEDUPDATE -_FORWARDINGHISTORYRESPONSE.fields_by_name[ - "forwarding_events" -].message_type = _FORWARDINGEVENT -_EXPORTCHANNELBACKUPREQUEST.fields_by_name["chan_point"].message_type = _CHANNELPOINT -_CHANNELBACKUP.fields_by_name["chan_point"].message_type = _CHANNELPOINT -_MULTICHANBACKUP.fields_by_name["chan_points"].message_type = _CHANNELPOINT -_CHANBACKUPSNAPSHOT.fields_by_name["single_chan_backups"].message_type = _CHANNELBACKUPS -_CHANBACKUPSNAPSHOT.fields_by_name["multi_chan_backup"].message_type = _MULTICHANBACKUP -_CHANNELBACKUPS.fields_by_name["chan_backups"].message_type = _CHANNELBACKUP -_RESTORECHANBACKUPREQUEST.fields_by_name["chan_backups"].message_type = _CHANNELBACKUPS -_RESTORECHANBACKUPREQUEST.oneofs_by_name["backup"].fields.append( - _RESTORECHANBACKUPREQUEST.fields_by_name["chan_backups"] -) -_RESTORECHANBACKUPREQUEST.fields_by_name[ - "chan_backups" -].containing_oneof = _RESTORECHANBACKUPREQUEST.oneofs_by_name["backup"] -_RESTORECHANBACKUPREQUEST.oneofs_by_name["backup"].fields.append( - _RESTORECHANBACKUPREQUEST.fields_by_name["multi_chan_backup"] -) -_RESTORECHANBACKUPREQUEST.fields_by_name[ - "multi_chan_backup" -].containing_oneof = _RESTORECHANBACKUPREQUEST.oneofs_by_name["backup"] -_BAKEMACAROONREQUEST.fields_by_name["permissions"].message_type = _MACAROONPERMISSION -_MACAROONPERMISSIONLIST.fields_by_name["permissions"].message_type = _MACAROONPERMISSION -_LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY.fields_by_name[ - "value" -].message_type = _MACAROONPERMISSIONLIST -_LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY.containing_type = ( - _LISTPERMISSIONSRESPONSE -) -_LISTPERMISSIONSRESPONSE.fields_by_name[ - "method_permissions" -].message_type = _LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY -_FAILURE.fields_by_name["code"].enum_type = _FAILURE_FAILURECODE -_FAILURE.fields_by_name["channel_update"].message_type = _CHANNELUPDATE -_FAILURE_FAILURECODE.containing_type = _FAILURE -_MACAROONID.fields_by_name["ops"].message_type = _OP -_CHECKMACPERMREQUEST.fields_by_name["permissions"].message_type = _MACAROONPERMISSION -_RPCMIDDLEWAREREQUEST.fields_by_name["stream_auth"].message_type = _STREAMAUTH -_RPCMIDDLEWAREREQUEST.fields_by_name["request"].message_type = _RPCMESSAGE -_RPCMIDDLEWAREREQUEST.fields_by_name["response"].message_type = _RPCMESSAGE -_RPCMIDDLEWAREREQUEST.oneofs_by_name["intercept_type"].fields.append( - _RPCMIDDLEWAREREQUEST.fields_by_name["stream_auth"] -) -_RPCMIDDLEWAREREQUEST.fields_by_name[ - "stream_auth" -].containing_oneof = _RPCMIDDLEWAREREQUEST.oneofs_by_name["intercept_type"] -_RPCMIDDLEWAREREQUEST.oneofs_by_name["intercept_type"].fields.append( - _RPCMIDDLEWAREREQUEST.fields_by_name["request"] -) -_RPCMIDDLEWAREREQUEST.fields_by_name[ - "request" -].containing_oneof = _RPCMIDDLEWAREREQUEST.oneofs_by_name["intercept_type"] -_RPCMIDDLEWAREREQUEST.oneofs_by_name["intercept_type"].fields.append( - _RPCMIDDLEWAREREQUEST.fields_by_name["response"] -) -_RPCMIDDLEWAREREQUEST.fields_by_name[ - "response" -].containing_oneof = _RPCMIDDLEWAREREQUEST.oneofs_by_name["intercept_type"] -_RPCMIDDLEWARERESPONSE.fields_by_name["register"].message_type = _MIDDLEWAREREGISTRATION -_RPCMIDDLEWARERESPONSE.fields_by_name["feedback"].message_type = _INTERCEPTFEEDBACK -_RPCMIDDLEWARERESPONSE.oneofs_by_name["middleware_message"].fields.append( - _RPCMIDDLEWARERESPONSE.fields_by_name["register"] -) -_RPCMIDDLEWARERESPONSE.fields_by_name[ - "register" -].containing_oneof = _RPCMIDDLEWARERESPONSE.oneofs_by_name["middleware_message"] -_RPCMIDDLEWARERESPONSE.oneofs_by_name["middleware_message"].fields.append( - _RPCMIDDLEWARERESPONSE.fields_by_name["feedback"] -) -_RPCMIDDLEWARERESPONSE.fields_by_name[ - "feedback" -].containing_oneof = _RPCMIDDLEWARERESPONSE.oneofs_by_name["middleware_message"] -DESCRIPTOR.message_types_by_name[ +_SUBSCRIBECUSTOMMESSAGESREQUEST = DESCRIPTOR.message_types_by_name[ "SubscribeCustomMessagesRequest" -] = _SUBSCRIBECUSTOMMESSAGESREQUEST -DESCRIPTOR.message_types_by_name["CustomMessage"] = _CUSTOMMESSAGE -DESCRIPTOR.message_types_by_name["SendCustomMessageRequest"] = _SENDCUSTOMMESSAGEREQUEST -DESCRIPTOR.message_types_by_name[ +] +_CUSTOMMESSAGE = DESCRIPTOR.message_types_by_name["CustomMessage"] +_SENDCUSTOMMESSAGEREQUEST = DESCRIPTOR.message_types_by_name["SendCustomMessageRequest"] +_SENDCUSTOMMESSAGERESPONSE = DESCRIPTOR.message_types_by_name[ "SendCustomMessageResponse" -] = _SENDCUSTOMMESSAGERESPONSE -DESCRIPTOR.message_types_by_name["Utxo"] = _UTXO -DESCRIPTOR.message_types_by_name["Transaction"] = _TRANSACTION -DESCRIPTOR.message_types_by_name["GetTransactionsRequest"] = _GETTRANSACTIONSREQUEST -DESCRIPTOR.message_types_by_name["TransactionDetails"] = _TRANSACTIONDETAILS -DESCRIPTOR.message_types_by_name["FeeLimit"] = _FEELIMIT -DESCRIPTOR.message_types_by_name["SendRequest"] = _SENDREQUEST -DESCRIPTOR.message_types_by_name["SendResponse"] = _SENDRESPONSE -DESCRIPTOR.message_types_by_name["SendToRouteRequest"] = _SENDTOROUTEREQUEST -DESCRIPTOR.message_types_by_name["ChannelAcceptRequest"] = _CHANNELACCEPTREQUEST -DESCRIPTOR.message_types_by_name["ChannelAcceptResponse"] = _CHANNELACCEPTRESPONSE -DESCRIPTOR.message_types_by_name["ChannelPoint"] = _CHANNELPOINT -DESCRIPTOR.message_types_by_name["OutPoint"] = _OUTPOINT -DESCRIPTOR.message_types_by_name["LightningAddress"] = _LIGHTNINGADDRESS -DESCRIPTOR.message_types_by_name["EstimateFeeRequest"] = _ESTIMATEFEEREQUEST -DESCRIPTOR.message_types_by_name["EstimateFeeResponse"] = _ESTIMATEFEERESPONSE -DESCRIPTOR.message_types_by_name["SendManyRequest"] = _SENDMANYREQUEST -DESCRIPTOR.message_types_by_name["SendManyResponse"] = _SENDMANYRESPONSE -DESCRIPTOR.message_types_by_name["SendCoinsRequest"] = _SENDCOINSREQUEST -DESCRIPTOR.message_types_by_name["SendCoinsResponse"] = _SENDCOINSRESPONSE -DESCRIPTOR.message_types_by_name["ListUnspentRequest"] = _LISTUNSPENTREQUEST -DESCRIPTOR.message_types_by_name["ListUnspentResponse"] = _LISTUNSPENTRESPONSE -DESCRIPTOR.message_types_by_name["NewAddressRequest"] = _NEWADDRESSREQUEST -DESCRIPTOR.message_types_by_name["NewAddressResponse"] = _NEWADDRESSRESPONSE -DESCRIPTOR.message_types_by_name["SignMessageRequest"] = _SIGNMESSAGEREQUEST -DESCRIPTOR.message_types_by_name["SignMessageResponse"] = _SIGNMESSAGERESPONSE -DESCRIPTOR.message_types_by_name["VerifyMessageRequest"] = _VERIFYMESSAGEREQUEST -DESCRIPTOR.message_types_by_name["VerifyMessageResponse"] = _VERIFYMESSAGERESPONSE -DESCRIPTOR.message_types_by_name["ConnectPeerRequest"] = _CONNECTPEERREQUEST -DESCRIPTOR.message_types_by_name["ConnectPeerResponse"] = _CONNECTPEERRESPONSE -DESCRIPTOR.message_types_by_name["DisconnectPeerRequest"] = _DISCONNECTPEERREQUEST -DESCRIPTOR.message_types_by_name["DisconnectPeerResponse"] = _DISCONNECTPEERRESPONSE -DESCRIPTOR.message_types_by_name["HTLC"] = _HTLC -DESCRIPTOR.message_types_by_name["ChannelConstraints"] = _CHANNELCONSTRAINTS -DESCRIPTOR.message_types_by_name["Channel"] = _CHANNEL -DESCRIPTOR.message_types_by_name["ListChannelsRequest"] = _LISTCHANNELSREQUEST -DESCRIPTOR.message_types_by_name["ListChannelsResponse"] = _LISTCHANNELSRESPONSE -DESCRIPTOR.message_types_by_name["ChannelCloseSummary"] = _CHANNELCLOSESUMMARY -DESCRIPTOR.message_types_by_name["Resolution"] = _RESOLUTION -DESCRIPTOR.message_types_by_name["ClosedChannelsRequest"] = _CLOSEDCHANNELSREQUEST -DESCRIPTOR.message_types_by_name["ClosedChannelsResponse"] = _CLOSEDCHANNELSRESPONSE -DESCRIPTOR.message_types_by_name["Peer"] = _PEER -DESCRIPTOR.message_types_by_name["TimestampedError"] = _TIMESTAMPEDERROR -DESCRIPTOR.message_types_by_name["ListPeersRequest"] = _LISTPEERSREQUEST -DESCRIPTOR.message_types_by_name["ListPeersResponse"] = _LISTPEERSRESPONSE -DESCRIPTOR.message_types_by_name["PeerEventSubscription"] = _PEEREVENTSUBSCRIPTION -DESCRIPTOR.message_types_by_name["PeerEvent"] = _PEEREVENT -DESCRIPTOR.message_types_by_name["GetInfoRequest"] = _GETINFOREQUEST -DESCRIPTOR.message_types_by_name["GetInfoResponse"] = _GETINFORESPONSE -DESCRIPTOR.message_types_by_name["GetRecoveryInfoRequest"] = _GETRECOVERYINFOREQUEST -DESCRIPTOR.message_types_by_name["GetRecoveryInfoResponse"] = _GETRECOVERYINFORESPONSE -DESCRIPTOR.message_types_by_name["Chain"] = _CHAIN -DESCRIPTOR.message_types_by_name["ConfirmationUpdate"] = _CONFIRMATIONUPDATE -DESCRIPTOR.message_types_by_name["ChannelOpenUpdate"] = _CHANNELOPENUPDATE -DESCRIPTOR.message_types_by_name["ChannelCloseUpdate"] = _CHANNELCLOSEUPDATE -DESCRIPTOR.message_types_by_name["CloseChannelRequest"] = _CLOSECHANNELREQUEST -DESCRIPTOR.message_types_by_name["CloseStatusUpdate"] = _CLOSESTATUSUPDATE -DESCRIPTOR.message_types_by_name["PendingUpdate"] = _PENDINGUPDATE -DESCRIPTOR.message_types_by_name["ReadyForPsbtFunding"] = _READYFORPSBTFUNDING -DESCRIPTOR.message_types_by_name["BatchOpenChannelRequest"] = _BATCHOPENCHANNELREQUEST -DESCRIPTOR.message_types_by_name["BatchOpenChannel"] = _BATCHOPENCHANNEL -DESCRIPTOR.message_types_by_name["BatchOpenChannelResponse"] = _BATCHOPENCHANNELRESPONSE -DESCRIPTOR.message_types_by_name["OpenChannelRequest"] = _OPENCHANNELREQUEST -DESCRIPTOR.message_types_by_name["OpenStatusUpdate"] = _OPENSTATUSUPDATE -DESCRIPTOR.message_types_by_name["KeyLocator"] = _KEYLOCATOR -DESCRIPTOR.message_types_by_name["KeyDescriptor"] = _KEYDESCRIPTOR -DESCRIPTOR.message_types_by_name["ChanPointShim"] = _CHANPOINTSHIM -DESCRIPTOR.message_types_by_name["PsbtShim"] = _PSBTSHIM -DESCRIPTOR.message_types_by_name["FundingShim"] = _FUNDINGSHIM -DESCRIPTOR.message_types_by_name["FundingShimCancel"] = _FUNDINGSHIMCANCEL -DESCRIPTOR.message_types_by_name["FundingPsbtVerify"] = _FUNDINGPSBTVERIFY -DESCRIPTOR.message_types_by_name["FundingPsbtFinalize"] = _FUNDINGPSBTFINALIZE -DESCRIPTOR.message_types_by_name["FundingTransitionMsg"] = _FUNDINGTRANSITIONMSG -DESCRIPTOR.message_types_by_name["FundingStateStepResp"] = _FUNDINGSTATESTEPRESP -DESCRIPTOR.message_types_by_name["PendingHTLC"] = _PENDINGHTLC -DESCRIPTOR.message_types_by_name["PendingChannelsRequest"] = _PENDINGCHANNELSREQUEST -DESCRIPTOR.message_types_by_name["PendingChannelsResponse"] = _PENDINGCHANNELSRESPONSE -DESCRIPTOR.message_types_by_name["ChannelEventSubscription"] = _CHANNELEVENTSUBSCRIPTION -DESCRIPTOR.message_types_by_name["ChannelEventUpdate"] = _CHANNELEVENTUPDATE -DESCRIPTOR.message_types_by_name["WalletAccountBalance"] = _WALLETACCOUNTBALANCE -DESCRIPTOR.message_types_by_name["WalletBalanceRequest"] = _WALLETBALANCEREQUEST -DESCRIPTOR.message_types_by_name["WalletBalanceResponse"] = _WALLETBALANCERESPONSE -DESCRIPTOR.message_types_by_name["Amount"] = _AMOUNT -DESCRIPTOR.message_types_by_name["ChannelBalanceRequest"] = _CHANNELBALANCEREQUEST -DESCRIPTOR.message_types_by_name["ChannelBalanceResponse"] = _CHANNELBALANCERESPONSE -DESCRIPTOR.message_types_by_name["QueryRoutesRequest"] = _QUERYROUTESREQUEST -DESCRIPTOR.message_types_by_name["NodePair"] = _NODEPAIR -DESCRIPTOR.message_types_by_name["EdgeLocator"] = _EDGELOCATOR -DESCRIPTOR.message_types_by_name["QueryRoutesResponse"] = _QUERYROUTESRESPONSE -DESCRIPTOR.message_types_by_name["Hop"] = _HOP -DESCRIPTOR.message_types_by_name["MPPRecord"] = _MPPRECORD -DESCRIPTOR.message_types_by_name["AMPRecord"] = _AMPRECORD -DESCRIPTOR.message_types_by_name["Route"] = _ROUTE -DESCRIPTOR.message_types_by_name["NodeInfoRequest"] = _NODEINFOREQUEST -DESCRIPTOR.message_types_by_name["NodeInfo"] = _NODEINFO -DESCRIPTOR.message_types_by_name["LightningNode"] = _LIGHTNINGNODE -DESCRIPTOR.message_types_by_name["NodeAddress"] = _NODEADDRESS -DESCRIPTOR.message_types_by_name["RoutingPolicy"] = _ROUTINGPOLICY -DESCRIPTOR.message_types_by_name["ChannelEdge"] = _CHANNELEDGE -DESCRIPTOR.message_types_by_name["ChannelGraphRequest"] = _CHANNELGRAPHREQUEST -DESCRIPTOR.message_types_by_name["ChannelGraph"] = _CHANNELGRAPH -DESCRIPTOR.message_types_by_name["NodeMetricsRequest"] = _NODEMETRICSREQUEST -DESCRIPTOR.message_types_by_name["NodeMetricsResponse"] = _NODEMETRICSRESPONSE -DESCRIPTOR.message_types_by_name["FloatMetric"] = _FLOATMETRIC -DESCRIPTOR.message_types_by_name["ChanInfoRequest"] = _CHANINFOREQUEST -DESCRIPTOR.message_types_by_name["NetworkInfoRequest"] = _NETWORKINFOREQUEST -DESCRIPTOR.message_types_by_name["NetworkInfo"] = _NETWORKINFO -DESCRIPTOR.message_types_by_name["StopRequest"] = _STOPREQUEST -DESCRIPTOR.message_types_by_name["StopResponse"] = _STOPRESPONSE -DESCRIPTOR.message_types_by_name[ +] +_UTXO = DESCRIPTOR.message_types_by_name["Utxo"] +_OUTPUTDETAIL = DESCRIPTOR.message_types_by_name["OutputDetail"] +_TRANSACTION = DESCRIPTOR.message_types_by_name["Transaction"] +_GETTRANSACTIONSREQUEST = DESCRIPTOR.message_types_by_name["GetTransactionsRequest"] +_TRANSACTIONDETAILS = DESCRIPTOR.message_types_by_name["TransactionDetails"] +_FEELIMIT = DESCRIPTOR.message_types_by_name["FeeLimit"] +_SENDREQUEST = DESCRIPTOR.message_types_by_name["SendRequest"] +_SENDREQUEST_DESTCUSTOMRECORDSENTRY = _SENDREQUEST.nested_types_by_name[ + "DestCustomRecordsEntry" +] +_SENDRESPONSE = DESCRIPTOR.message_types_by_name["SendResponse"] +_SENDTOROUTEREQUEST = DESCRIPTOR.message_types_by_name["SendToRouteRequest"] +_CHANNELACCEPTREQUEST = DESCRIPTOR.message_types_by_name["ChannelAcceptRequest"] +_CHANNELACCEPTRESPONSE = DESCRIPTOR.message_types_by_name["ChannelAcceptResponse"] +_CHANNELPOINT = DESCRIPTOR.message_types_by_name["ChannelPoint"] +_OUTPOINT = DESCRIPTOR.message_types_by_name["OutPoint"] +_PREVIOUSOUTPOINT = DESCRIPTOR.message_types_by_name["PreviousOutPoint"] +_LIGHTNINGADDRESS = DESCRIPTOR.message_types_by_name["LightningAddress"] +_ESTIMATEFEEREQUEST = DESCRIPTOR.message_types_by_name["EstimateFeeRequest"] +_ESTIMATEFEEREQUEST_ADDRTOAMOUNTENTRY = _ESTIMATEFEEREQUEST.nested_types_by_name[ + "AddrToAmountEntry" +] +_ESTIMATEFEERESPONSE = DESCRIPTOR.message_types_by_name["EstimateFeeResponse"] +_SENDMANYREQUEST = DESCRIPTOR.message_types_by_name["SendManyRequest"] +_SENDMANYREQUEST_ADDRTOAMOUNTENTRY = _SENDMANYREQUEST.nested_types_by_name[ + "AddrToAmountEntry" +] +_SENDMANYRESPONSE = DESCRIPTOR.message_types_by_name["SendManyResponse"] +_SENDCOINSREQUEST = DESCRIPTOR.message_types_by_name["SendCoinsRequest"] +_SENDCOINSRESPONSE = DESCRIPTOR.message_types_by_name["SendCoinsResponse"] +_LISTUNSPENTREQUEST = DESCRIPTOR.message_types_by_name["ListUnspentRequest"] +_LISTUNSPENTRESPONSE = DESCRIPTOR.message_types_by_name["ListUnspentResponse"] +_NEWADDRESSREQUEST = DESCRIPTOR.message_types_by_name["NewAddressRequest"] +_NEWADDRESSRESPONSE = DESCRIPTOR.message_types_by_name["NewAddressResponse"] +_SIGNMESSAGEREQUEST = DESCRIPTOR.message_types_by_name["SignMessageRequest"] +_SIGNMESSAGERESPONSE = DESCRIPTOR.message_types_by_name["SignMessageResponse"] +_VERIFYMESSAGEREQUEST = DESCRIPTOR.message_types_by_name["VerifyMessageRequest"] +_VERIFYMESSAGERESPONSE = DESCRIPTOR.message_types_by_name["VerifyMessageResponse"] +_CONNECTPEERREQUEST = DESCRIPTOR.message_types_by_name["ConnectPeerRequest"] +_CONNECTPEERRESPONSE = DESCRIPTOR.message_types_by_name["ConnectPeerResponse"] +_DISCONNECTPEERREQUEST = DESCRIPTOR.message_types_by_name["DisconnectPeerRequest"] +_DISCONNECTPEERRESPONSE = DESCRIPTOR.message_types_by_name["DisconnectPeerResponse"] +_HTLC = DESCRIPTOR.message_types_by_name["HTLC"] +_CHANNELCONSTRAINTS = DESCRIPTOR.message_types_by_name["ChannelConstraints"] +_CHANNEL = DESCRIPTOR.message_types_by_name["Channel"] +_LISTCHANNELSREQUEST = DESCRIPTOR.message_types_by_name["ListChannelsRequest"] +_LISTCHANNELSRESPONSE = DESCRIPTOR.message_types_by_name["ListChannelsResponse"] +_CHANNELCLOSESUMMARY = DESCRIPTOR.message_types_by_name["ChannelCloseSummary"] +_RESOLUTION = DESCRIPTOR.message_types_by_name["Resolution"] +_CLOSEDCHANNELSREQUEST = DESCRIPTOR.message_types_by_name["ClosedChannelsRequest"] +_CLOSEDCHANNELSRESPONSE = DESCRIPTOR.message_types_by_name["ClosedChannelsResponse"] +_PEER = DESCRIPTOR.message_types_by_name["Peer"] +_PEER_FEATURESENTRY = _PEER.nested_types_by_name["FeaturesEntry"] +_TIMESTAMPEDERROR = DESCRIPTOR.message_types_by_name["TimestampedError"] +_LISTPEERSREQUEST = DESCRIPTOR.message_types_by_name["ListPeersRequest"] +_LISTPEERSRESPONSE = DESCRIPTOR.message_types_by_name["ListPeersResponse"] +_PEEREVENTSUBSCRIPTION = DESCRIPTOR.message_types_by_name["PeerEventSubscription"] +_PEEREVENT = DESCRIPTOR.message_types_by_name["PeerEvent"] +_GETINFOREQUEST = DESCRIPTOR.message_types_by_name["GetInfoRequest"] +_GETINFORESPONSE = DESCRIPTOR.message_types_by_name["GetInfoResponse"] +_GETINFORESPONSE_FEATURESENTRY = _GETINFORESPONSE.nested_types_by_name["FeaturesEntry"] +_GETRECOVERYINFOREQUEST = DESCRIPTOR.message_types_by_name["GetRecoveryInfoRequest"] +_GETRECOVERYINFORESPONSE = DESCRIPTOR.message_types_by_name["GetRecoveryInfoResponse"] +_CHAIN = DESCRIPTOR.message_types_by_name["Chain"] +_CONFIRMATIONUPDATE = DESCRIPTOR.message_types_by_name["ConfirmationUpdate"] +_CHANNELOPENUPDATE = DESCRIPTOR.message_types_by_name["ChannelOpenUpdate"] +_CHANNELCLOSEUPDATE = DESCRIPTOR.message_types_by_name["ChannelCloseUpdate"] +_CLOSECHANNELREQUEST = DESCRIPTOR.message_types_by_name["CloseChannelRequest"] +_CLOSESTATUSUPDATE = DESCRIPTOR.message_types_by_name["CloseStatusUpdate"] +_PENDINGUPDATE = DESCRIPTOR.message_types_by_name["PendingUpdate"] +_READYFORPSBTFUNDING = DESCRIPTOR.message_types_by_name["ReadyForPsbtFunding"] +_BATCHOPENCHANNELREQUEST = DESCRIPTOR.message_types_by_name["BatchOpenChannelRequest"] +_BATCHOPENCHANNEL = DESCRIPTOR.message_types_by_name["BatchOpenChannel"] +_BATCHOPENCHANNELRESPONSE = DESCRIPTOR.message_types_by_name["BatchOpenChannelResponse"] +_OPENCHANNELREQUEST = DESCRIPTOR.message_types_by_name["OpenChannelRequest"] +_OPENSTATUSUPDATE = DESCRIPTOR.message_types_by_name["OpenStatusUpdate"] +_KEYLOCATOR = DESCRIPTOR.message_types_by_name["KeyLocator"] +_KEYDESCRIPTOR = DESCRIPTOR.message_types_by_name["KeyDescriptor"] +_CHANPOINTSHIM = DESCRIPTOR.message_types_by_name["ChanPointShim"] +_PSBTSHIM = DESCRIPTOR.message_types_by_name["PsbtShim"] +_FUNDINGSHIM = DESCRIPTOR.message_types_by_name["FundingShim"] +_FUNDINGSHIMCANCEL = DESCRIPTOR.message_types_by_name["FundingShimCancel"] +_FUNDINGPSBTVERIFY = DESCRIPTOR.message_types_by_name["FundingPsbtVerify"] +_FUNDINGPSBTFINALIZE = DESCRIPTOR.message_types_by_name["FundingPsbtFinalize"] +_FUNDINGTRANSITIONMSG = DESCRIPTOR.message_types_by_name["FundingTransitionMsg"] +_FUNDINGSTATESTEPRESP = DESCRIPTOR.message_types_by_name["FundingStateStepResp"] +_PENDINGHTLC = DESCRIPTOR.message_types_by_name["PendingHTLC"] +_PENDINGCHANNELSREQUEST = DESCRIPTOR.message_types_by_name["PendingChannelsRequest"] +_PENDINGCHANNELSRESPONSE = DESCRIPTOR.message_types_by_name["PendingChannelsResponse"] +_PENDINGCHANNELSRESPONSE_PENDINGCHANNEL = _PENDINGCHANNELSRESPONSE.nested_types_by_name[ + "PendingChannel" +] +_PENDINGCHANNELSRESPONSE_PENDINGOPENCHANNEL = ( + _PENDINGCHANNELSRESPONSE.nested_types_by_name["PendingOpenChannel"] +) +_PENDINGCHANNELSRESPONSE_WAITINGCLOSECHANNEL = ( + _PENDINGCHANNELSRESPONSE.nested_types_by_name["WaitingCloseChannel"] +) +_PENDINGCHANNELSRESPONSE_COMMITMENTS = _PENDINGCHANNELSRESPONSE.nested_types_by_name[ + "Commitments" +] +_PENDINGCHANNELSRESPONSE_CLOSEDCHANNEL = _PENDINGCHANNELSRESPONSE.nested_types_by_name[ + "ClosedChannel" +] +_PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL = ( + _PENDINGCHANNELSRESPONSE.nested_types_by_name["ForceClosedChannel"] +) +_CHANNELEVENTSUBSCRIPTION = DESCRIPTOR.message_types_by_name["ChannelEventSubscription"] +_CHANNELEVENTUPDATE = DESCRIPTOR.message_types_by_name["ChannelEventUpdate"] +_WALLETACCOUNTBALANCE = DESCRIPTOR.message_types_by_name["WalletAccountBalance"] +_WALLETBALANCEREQUEST = DESCRIPTOR.message_types_by_name["WalletBalanceRequest"] +_WALLETBALANCERESPONSE = DESCRIPTOR.message_types_by_name["WalletBalanceResponse"] +_WALLETBALANCERESPONSE_ACCOUNTBALANCEENTRY = ( + _WALLETBALANCERESPONSE.nested_types_by_name["AccountBalanceEntry"] +) +_AMOUNT = DESCRIPTOR.message_types_by_name["Amount"] +_CHANNELBALANCEREQUEST = DESCRIPTOR.message_types_by_name["ChannelBalanceRequest"] +_CHANNELBALANCERESPONSE = DESCRIPTOR.message_types_by_name["ChannelBalanceResponse"] +_QUERYROUTESREQUEST = DESCRIPTOR.message_types_by_name["QueryRoutesRequest"] +_QUERYROUTESREQUEST_DESTCUSTOMRECORDSENTRY = _QUERYROUTESREQUEST.nested_types_by_name[ + "DestCustomRecordsEntry" +] +_NODEPAIR = DESCRIPTOR.message_types_by_name["NodePair"] +_EDGELOCATOR = DESCRIPTOR.message_types_by_name["EdgeLocator"] +_QUERYROUTESRESPONSE = DESCRIPTOR.message_types_by_name["QueryRoutesResponse"] +_HOP = DESCRIPTOR.message_types_by_name["Hop"] +_HOP_CUSTOMRECORDSENTRY = _HOP.nested_types_by_name["CustomRecordsEntry"] +_MPPRECORD = DESCRIPTOR.message_types_by_name["MPPRecord"] +_AMPRECORD = DESCRIPTOR.message_types_by_name["AMPRecord"] +_ROUTE = DESCRIPTOR.message_types_by_name["Route"] +_NODEINFOREQUEST = DESCRIPTOR.message_types_by_name["NodeInfoRequest"] +_NODEINFO = DESCRIPTOR.message_types_by_name["NodeInfo"] +_LIGHTNINGNODE = DESCRIPTOR.message_types_by_name["LightningNode"] +_LIGHTNINGNODE_FEATURESENTRY = _LIGHTNINGNODE.nested_types_by_name["FeaturesEntry"] +_NODEADDRESS = DESCRIPTOR.message_types_by_name["NodeAddress"] +_ROUTINGPOLICY = DESCRIPTOR.message_types_by_name["RoutingPolicy"] +_CHANNELEDGE = DESCRIPTOR.message_types_by_name["ChannelEdge"] +_CHANNELGRAPHREQUEST = DESCRIPTOR.message_types_by_name["ChannelGraphRequest"] +_CHANNELGRAPH = DESCRIPTOR.message_types_by_name["ChannelGraph"] +_NODEMETRICSREQUEST = DESCRIPTOR.message_types_by_name["NodeMetricsRequest"] +_NODEMETRICSRESPONSE = DESCRIPTOR.message_types_by_name["NodeMetricsResponse"] +_NODEMETRICSRESPONSE_BETWEENNESSCENTRALITYENTRY = ( + _NODEMETRICSRESPONSE.nested_types_by_name["BetweennessCentralityEntry"] +) +_FLOATMETRIC = DESCRIPTOR.message_types_by_name["FloatMetric"] +_CHANINFOREQUEST = DESCRIPTOR.message_types_by_name["ChanInfoRequest"] +_NETWORKINFOREQUEST = DESCRIPTOR.message_types_by_name["NetworkInfoRequest"] +_NETWORKINFO = DESCRIPTOR.message_types_by_name["NetworkInfo"] +_STOPREQUEST = DESCRIPTOR.message_types_by_name["StopRequest"] +_STOPRESPONSE = DESCRIPTOR.message_types_by_name["StopResponse"] +_GRAPHTOPOLOGYSUBSCRIPTION = DESCRIPTOR.message_types_by_name[ "GraphTopologySubscription" -] = _GRAPHTOPOLOGYSUBSCRIPTION -DESCRIPTOR.message_types_by_name["GraphTopologyUpdate"] = _GRAPHTOPOLOGYUPDATE -DESCRIPTOR.message_types_by_name["NodeUpdate"] = _NODEUPDATE -DESCRIPTOR.message_types_by_name["ChannelEdgeUpdate"] = _CHANNELEDGEUPDATE -DESCRIPTOR.message_types_by_name["ClosedChannelUpdate"] = _CLOSEDCHANNELUPDATE -DESCRIPTOR.message_types_by_name["HopHint"] = _HOPHINT -DESCRIPTOR.message_types_by_name["SetID"] = _SETID -DESCRIPTOR.message_types_by_name["RouteHint"] = _ROUTEHINT -DESCRIPTOR.message_types_by_name["AMPInvoiceState"] = _AMPINVOICESTATE -DESCRIPTOR.message_types_by_name["Invoice"] = _INVOICE -DESCRIPTOR.message_types_by_name["InvoiceHTLC"] = _INVOICEHTLC -DESCRIPTOR.message_types_by_name["AMP"] = _AMP -DESCRIPTOR.message_types_by_name["AddInvoiceResponse"] = _ADDINVOICERESPONSE -DESCRIPTOR.message_types_by_name["PaymentHash"] = _PAYMENTHASH -DESCRIPTOR.message_types_by_name["ListInvoiceRequest"] = _LISTINVOICEREQUEST -DESCRIPTOR.message_types_by_name["ListInvoiceResponse"] = _LISTINVOICERESPONSE -DESCRIPTOR.message_types_by_name["InvoiceSubscription"] = _INVOICESUBSCRIPTION -DESCRIPTOR.message_types_by_name["Payment"] = _PAYMENT -DESCRIPTOR.message_types_by_name["HTLCAttempt"] = _HTLCATTEMPT -DESCRIPTOR.message_types_by_name["ListPaymentsRequest"] = _LISTPAYMENTSREQUEST -DESCRIPTOR.message_types_by_name["ListPaymentsResponse"] = _LISTPAYMENTSRESPONSE -DESCRIPTOR.message_types_by_name["DeletePaymentRequest"] = _DELETEPAYMENTREQUEST -DESCRIPTOR.message_types_by_name["DeleteAllPaymentsRequest"] = _DELETEALLPAYMENTSREQUEST -DESCRIPTOR.message_types_by_name["DeletePaymentResponse"] = _DELETEPAYMENTRESPONSE -DESCRIPTOR.message_types_by_name[ +] +_GRAPHTOPOLOGYUPDATE = DESCRIPTOR.message_types_by_name["GraphTopologyUpdate"] +_NODEUPDATE = DESCRIPTOR.message_types_by_name["NodeUpdate"] +_NODEUPDATE_FEATURESENTRY = _NODEUPDATE.nested_types_by_name["FeaturesEntry"] +_CHANNELEDGEUPDATE = DESCRIPTOR.message_types_by_name["ChannelEdgeUpdate"] +_CLOSEDCHANNELUPDATE = DESCRIPTOR.message_types_by_name["ClosedChannelUpdate"] +_HOPHINT = DESCRIPTOR.message_types_by_name["HopHint"] +_SETID = DESCRIPTOR.message_types_by_name["SetID"] +_ROUTEHINT = DESCRIPTOR.message_types_by_name["RouteHint"] +_AMPINVOICESTATE = DESCRIPTOR.message_types_by_name["AMPInvoiceState"] +_INVOICE = DESCRIPTOR.message_types_by_name["Invoice"] +_INVOICE_FEATURESENTRY = _INVOICE.nested_types_by_name["FeaturesEntry"] +_INVOICE_AMPINVOICESTATEENTRY = _INVOICE.nested_types_by_name["AmpInvoiceStateEntry"] +_INVOICEHTLC = DESCRIPTOR.message_types_by_name["InvoiceHTLC"] +_INVOICEHTLC_CUSTOMRECORDSENTRY = _INVOICEHTLC.nested_types_by_name[ + "CustomRecordsEntry" +] +_AMP = DESCRIPTOR.message_types_by_name["AMP"] +_ADDINVOICERESPONSE = DESCRIPTOR.message_types_by_name["AddInvoiceResponse"] +_PAYMENTHASH = DESCRIPTOR.message_types_by_name["PaymentHash"] +_LISTINVOICEREQUEST = DESCRIPTOR.message_types_by_name["ListInvoiceRequest"] +_LISTINVOICERESPONSE = DESCRIPTOR.message_types_by_name["ListInvoiceResponse"] +_INVOICESUBSCRIPTION = DESCRIPTOR.message_types_by_name["InvoiceSubscription"] +_PAYMENT = DESCRIPTOR.message_types_by_name["Payment"] +_HTLCATTEMPT = DESCRIPTOR.message_types_by_name["HTLCAttempt"] +_LISTPAYMENTSREQUEST = DESCRIPTOR.message_types_by_name["ListPaymentsRequest"] +_LISTPAYMENTSRESPONSE = DESCRIPTOR.message_types_by_name["ListPaymentsResponse"] +_DELETEPAYMENTREQUEST = DESCRIPTOR.message_types_by_name["DeletePaymentRequest"] +_DELETEALLPAYMENTSREQUEST = DESCRIPTOR.message_types_by_name["DeleteAllPaymentsRequest"] +_DELETEPAYMENTRESPONSE = DESCRIPTOR.message_types_by_name["DeletePaymentResponse"] +_DELETEALLPAYMENTSRESPONSE = DESCRIPTOR.message_types_by_name[ "DeleteAllPaymentsResponse" -] = _DELETEALLPAYMENTSRESPONSE -DESCRIPTOR.message_types_by_name["AbandonChannelRequest"] = _ABANDONCHANNELREQUEST -DESCRIPTOR.message_types_by_name["AbandonChannelResponse"] = _ABANDONCHANNELRESPONSE -DESCRIPTOR.message_types_by_name["DebugLevelRequest"] = _DEBUGLEVELREQUEST -DESCRIPTOR.message_types_by_name["DebugLevelResponse"] = _DEBUGLEVELRESPONSE -DESCRIPTOR.message_types_by_name["PayReqString"] = _PAYREQSTRING -DESCRIPTOR.message_types_by_name["PayReq"] = _PAYREQ -DESCRIPTOR.message_types_by_name["Feature"] = _FEATURE -DESCRIPTOR.message_types_by_name["FeeReportRequest"] = _FEEREPORTREQUEST -DESCRIPTOR.message_types_by_name["ChannelFeeReport"] = _CHANNELFEEREPORT -DESCRIPTOR.message_types_by_name["FeeReportResponse"] = _FEEREPORTRESPONSE -DESCRIPTOR.message_types_by_name["PolicyUpdateRequest"] = _POLICYUPDATEREQUEST -DESCRIPTOR.message_types_by_name["FailedUpdate"] = _FAILEDUPDATE -DESCRIPTOR.message_types_by_name["PolicyUpdateResponse"] = _POLICYUPDATERESPONSE -DESCRIPTOR.message_types_by_name["ForwardingHistoryRequest"] = _FORWARDINGHISTORYREQUEST -DESCRIPTOR.message_types_by_name["ForwardingEvent"] = _FORWARDINGEVENT -DESCRIPTOR.message_types_by_name[ +] +_ABANDONCHANNELREQUEST = DESCRIPTOR.message_types_by_name["AbandonChannelRequest"] +_ABANDONCHANNELRESPONSE = DESCRIPTOR.message_types_by_name["AbandonChannelResponse"] +_DEBUGLEVELREQUEST = DESCRIPTOR.message_types_by_name["DebugLevelRequest"] +_DEBUGLEVELRESPONSE = DESCRIPTOR.message_types_by_name["DebugLevelResponse"] +_PAYREQSTRING = DESCRIPTOR.message_types_by_name["PayReqString"] +_PAYREQ = DESCRIPTOR.message_types_by_name["PayReq"] +_PAYREQ_FEATURESENTRY = _PAYREQ.nested_types_by_name["FeaturesEntry"] +_FEATURE = DESCRIPTOR.message_types_by_name["Feature"] +_FEEREPORTREQUEST = DESCRIPTOR.message_types_by_name["FeeReportRequest"] +_CHANNELFEEREPORT = DESCRIPTOR.message_types_by_name["ChannelFeeReport"] +_FEEREPORTRESPONSE = DESCRIPTOR.message_types_by_name["FeeReportResponse"] +_POLICYUPDATEREQUEST = DESCRIPTOR.message_types_by_name["PolicyUpdateRequest"] +_FAILEDUPDATE = DESCRIPTOR.message_types_by_name["FailedUpdate"] +_POLICYUPDATERESPONSE = DESCRIPTOR.message_types_by_name["PolicyUpdateResponse"] +_FORWARDINGHISTORYREQUEST = DESCRIPTOR.message_types_by_name["ForwardingHistoryRequest"] +_FORWARDINGEVENT = DESCRIPTOR.message_types_by_name["ForwardingEvent"] +_FORWARDINGHISTORYRESPONSE = DESCRIPTOR.message_types_by_name[ "ForwardingHistoryResponse" -] = _FORWARDINGHISTORYRESPONSE -DESCRIPTOR.message_types_by_name[ +] +_EXPORTCHANNELBACKUPREQUEST = DESCRIPTOR.message_types_by_name[ "ExportChannelBackupRequest" -] = _EXPORTCHANNELBACKUPREQUEST -DESCRIPTOR.message_types_by_name["ChannelBackup"] = _CHANNELBACKUP -DESCRIPTOR.message_types_by_name["MultiChanBackup"] = _MULTICHANBACKUP -DESCRIPTOR.message_types_by_name["ChanBackupExportRequest"] = _CHANBACKUPEXPORTREQUEST -DESCRIPTOR.message_types_by_name["ChanBackupSnapshot"] = _CHANBACKUPSNAPSHOT -DESCRIPTOR.message_types_by_name["ChannelBackups"] = _CHANNELBACKUPS -DESCRIPTOR.message_types_by_name["RestoreChanBackupRequest"] = _RESTORECHANBACKUPREQUEST -DESCRIPTOR.message_types_by_name["RestoreBackupResponse"] = _RESTOREBACKUPRESPONSE -DESCRIPTOR.message_types_by_name[ +] +_CHANNELBACKUP = DESCRIPTOR.message_types_by_name["ChannelBackup"] +_MULTICHANBACKUP = DESCRIPTOR.message_types_by_name["MultiChanBackup"] +_CHANBACKUPEXPORTREQUEST = DESCRIPTOR.message_types_by_name["ChanBackupExportRequest"] +_CHANBACKUPSNAPSHOT = DESCRIPTOR.message_types_by_name["ChanBackupSnapshot"] +_CHANNELBACKUPS = DESCRIPTOR.message_types_by_name["ChannelBackups"] +_RESTORECHANBACKUPREQUEST = DESCRIPTOR.message_types_by_name["RestoreChanBackupRequest"] +_RESTOREBACKUPRESPONSE = DESCRIPTOR.message_types_by_name["RestoreBackupResponse"] +_CHANNELBACKUPSUBSCRIPTION = DESCRIPTOR.message_types_by_name[ "ChannelBackupSubscription" -] = _CHANNELBACKUPSUBSCRIPTION -DESCRIPTOR.message_types_by_name["VerifyChanBackupResponse"] = _VERIFYCHANBACKUPRESPONSE -DESCRIPTOR.message_types_by_name["MacaroonPermission"] = _MACAROONPERMISSION -DESCRIPTOR.message_types_by_name["BakeMacaroonRequest"] = _BAKEMACAROONREQUEST -DESCRIPTOR.message_types_by_name["BakeMacaroonResponse"] = _BAKEMACAROONRESPONSE -DESCRIPTOR.message_types_by_name["ListMacaroonIDsRequest"] = _LISTMACAROONIDSREQUEST -DESCRIPTOR.message_types_by_name["ListMacaroonIDsResponse"] = _LISTMACAROONIDSRESPONSE -DESCRIPTOR.message_types_by_name["DeleteMacaroonIDRequest"] = _DELETEMACAROONIDREQUEST -DESCRIPTOR.message_types_by_name["DeleteMacaroonIDResponse"] = _DELETEMACAROONIDRESPONSE -DESCRIPTOR.message_types_by_name["MacaroonPermissionList"] = _MACAROONPERMISSIONLIST -DESCRIPTOR.message_types_by_name["ListPermissionsRequest"] = _LISTPERMISSIONSREQUEST -DESCRIPTOR.message_types_by_name["ListPermissionsResponse"] = _LISTPERMISSIONSRESPONSE -DESCRIPTOR.message_types_by_name["Failure"] = _FAILURE -DESCRIPTOR.message_types_by_name["ChannelUpdate"] = _CHANNELUPDATE -DESCRIPTOR.message_types_by_name["MacaroonId"] = _MACAROONID -DESCRIPTOR.message_types_by_name["Op"] = _OP -DESCRIPTOR.message_types_by_name["CheckMacPermRequest"] = _CHECKMACPERMREQUEST -DESCRIPTOR.message_types_by_name["CheckMacPermResponse"] = _CHECKMACPERMRESPONSE -DESCRIPTOR.message_types_by_name["RPCMiddlewareRequest"] = _RPCMIDDLEWAREREQUEST -DESCRIPTOR.message_types_by_name["StreamAuth"] = _STREAMAUTH -DESCRIPTOR.message_types_by_name["RPCMessage"] = _RPCMESSAGE -DESCRIPTOR.message_types_by_name["RPCMiddlewareResponse"] = _RPCMIDDLEWARERESPONSE -DESCRIPTOR.message_types_by_name["MiddlewareRegistration"] = _MIDDLEWAREREGISTRATION -DESCRIPTOR.message_types_by_name["InterceptFeedback"] = _INTERCEPTFEEDBACK -DESCRIPTOR.enum_types_by_name["AddressType"] = _ADDRESSTYPE -DESCRIPTOR.enum_types_by_name["CommitmentType"] = _COMMITMENTTYPE -DESCRIPTOR.enum_types_by_name["Initiator"] = _INITIATOR -DESCRIPTOR.enum_types_by_name["ResolutionType"] = _RESOLUTIONTYPE -DESCRIPTOR.enum_types_by_name["ResolutionOutcome"] = _RESOLUTIONOUTCOME -DESCRIPTOR.enum_types_by_name["NodeMetricType"] = _NODEMETRICTYPE -DESCRIPTOR.enum_types_by_name["InvoiceHTLCState"] = _INVOICEHTLCSTATE -DESCRIPTOR.enum_types_by_name["PaymentFailureReason"] = _PAYMENTFAILUREREASON -DESCRIPTOR.enum_types_by_name["FeatureBit"] = _FEATUREBIT -DESCRIPTOR.enum_types_by_name["UpdateFailure"] = _UPDATEFAILURE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - +] +_VERIFYCHANBACKUPRESPONSE = DESCRIPTOR.message_types_by_name["VerifyChanBackupResponse"] +_MACAROONPERMISSION = DESCRIPTOR.message_types_by_name["MacaroonPermission"] +_BAKEMACAROONREQUEST = DESCRIPTOR.message_types_by_name["BakeMacaroonRequest"] +_BAKEMACAROONRESPONSE = DESCRIPTOR.message_types_by_name["BakeMacaroonResponse"] +_LISTMACAROONIDSREQUEST = DESCRIPTOR.message_types_by_name["ListMacaroonIDsRequest"] +_LISTMACAROONIDSRESPONSE = DESCRIPTOR.message_types_by_name["ListMacaroonIDsResponse"] +_DELETEMACAROONIDREQUEST = DESCRIPTOR.message_types_by_name["DeleteMacaroonIDRequest"] +_DELETEMACAROONIDRESPONSE = DESCRIPTOR.message_types_by_name["DeleteMacaroonIDResponse"] +_MACAROONPERMISSIONLIST = DESCRIPTOR.message_types_by_name["MacaroonPermissionList"] +_LISTPERMISSIONSREQUEST = DESCRIPTOR.message_types_by_name["ListPermissionsRequest"] +_LISTPERMISSIONSRESPONSE = DESCRIPTOR.message_types_by_name["ListPermissionsResponse"] +_LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY = ( + _LISTPERMISSIONSRESPONSE.nested_types_by_name["MethodPermissionsEntry"] +) +_FAILURE = DESCRIPTOR.message_types_by_name["Failure"] +_CHANNELUPDATE = DESCRIPTOR.message_types_by_name["ChannelUpdate"] +_MACAROONID = DESCRIPTOR.message_types_by_name["MacaroonId"] +_OP = DESCRIPTOR.message_types_by_name["Op"] +_CHECKMACPERMREQUEST = DESCRIPTOR.message_types_by_name["CheckMacPermRequest"] +_CHECKMACPERMRESPONSE = DESCRIPTOR.message_types_by_name["CheckMacPermResponse"] +_RPCMIDDLEWAREREQUEST = DESCRIPTOR.message_types_by_name["RPCMiddlewareRequest"] +_STREAMAUTH = DESCRIPTOR.message_types_by_name["StreamAuth"] +_RPCMESSAGE = DESCRIPTOR.message_types_by_name["RPCMessage"] +_RPCMIDDLEWARERESPONSE = DESCRIPTOR.message_types_by_name["RPCMiddlewareResponse"] +_MIDDLEWAREREGISTRATION = DESCRIPTOR.message_types_by_name["MiddlewareRegistration"] +_INTERCEPTFEEDBACK = DESCRIPTOR.message_types_by_name["InterceptFeedback"] +_CHANNELCLOSESUMMARY_CLOSURETYPE = _CHANNELCLOSESUMMARY.enum_types_by_name[ + "ClosureType" +] +_PEER_SYNCTYPE = _PEER.enum_types_by_name["SyncType"] +_PEEREVENT_EVENTTYPE = _PEEREVENT.enum_types_by_name["EventType"] +_PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL_ANCHORSTATE = ( + _PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL.enum_types_by_name["AnchorState"] +) +_CHANNELEVENTUPDATE_UPDATETYPE = _CHANNELEVENTUPDATE.enum_types_by_name["UpdateType"] +_INVOICE_INVOICESTATE = _INVOICE.enum_types_by_name["InvoiceState"] +_PAYMENT_PAYMENTSTATUS = _PAYMENT.enum_types_by_name["PaymentStatus"] +_HTLCATTEMPT_HTLCSTATUS = _HTLCATTEMPT.enum_types_by_name["HTLCStatus"] +_FAILURE_FAILURECODE = _FAILURE.enum_types_by_name["FailureCode"] SubscribeCustomMessagesRequest = _reflection.GeneratedProtocolMessageType( "SubscribeCustomMessagesRequest", (_message.Message,), @@ -21376,6 +437,17 @@ Utxo = _reflection.GeneratedProtocolMessageType( ) _sym_db.RegisterMessage(Utxo) +OutputDetail = _reflection.GeneratedProtocolMessageType( + "OutputDetail", + (_message.Message,), + { + "DESCRIPTOR": _OUTPUTDETAIL, + "__module__": "lightning_pb2" + # @@protoc_insertion_point(class_scope:lnrpc.OutputDetail) + }, +) +_sym_db.RegisterMessage(OutputDetail) + Transaction = _reflection.GeneratedProtocolMessageType( "Transaction", (_message.Message,), @@ -21507,6 +579,17 @@ OutPoint = _reflection.GeneratedProtocolMessageType( ) _sym_db.RegisterMessage(OutPoint) +PreviousOutPoint = _reflection.GeneratedProtocolMessageType( + "PreviousOutPoint", + (_message.Message,), + { + "DESCRIPTOR": _PREVIOUSOUTPOINT, + "__module__": "lightning_pb2" + # @@protoc_insertion_point(class_scope:lnrpc.PreviousOutPoint) + }, +) +_sym_db.RegisterMessage(PreviousOutPoint) + LightningAddress = _reflection.GeneratedProtocolMessageType( "LightningAddress", (_message.Message,), @@ -23576,738 +2659,623 @@ InterceptFeedback = _reflection.GeneratedProtocolMessageType( ) _sym_db.RegisterMessage(InterceptFeedback) +_LIGHTNING = DESCRIPTOR.services_by_name["Lightning"] +if _descriptor._USE_C_DESCRIPTORS == False: -DESCRIPTOR._options = None -_SENDREQUEST_DESTCUSTOMRECORDSENTRY._options = None -_SENDREQUEST.fields_by_name["dest_string"]._options = None -_SENDREQUEST.fields_by_name["payment_hash_string"]._options = None -_SENDREQUEST.fields_by_name["outgoing_chan_id"]._options = None -_SENDTOROUTEREQUEST.fields_by_name["payment_hash_string"]._options = None -_ESTIMATEFEEREQUEST_ADDRTOAMOUNTENTRY._options = None -_ESTIMATEFEERESPONSE.fields_by_name["feerate_sat_per_byte"]._options = None -_SENDMANYREQUEST_ADDRTOAMOUNTENTRY._options = None -_SENDMANYREQUEST.fields_by_name["sat_per_byte"]._options = None -_SENDCOINSREQUEST.fields_by_name["sat_per_byte"]._options = None -_CHANNEL.fields_by_name["chan_id"]._options = None -_CHANNEL.fields_by_name["csv_delay"]._options = None -_CHANNEL.fields_by_name["local_chan_reserve_sat"]._options = None -_CHANNEL.fields_by_name["remote_chan_reserve_sat"]._options = None -_CHANNEL.fields_by_name["static_remote_key"]._options = None -_CHANNELCLOSESUMMARY.fields_by_name["chan_id"]._options = None -_PEER_FEATURESENTRY._options = None -_GETINFORESPONSE_FEATURESENTRY._options = None -_GETINFORESPONSE.fields_by_name["testnet"]._options = None -_CLOSECHANNELREQUEST.fields_by_name["sat_per_byte"]._options = None -_OPENCHANNELREQUEST.fields_by_name["node_pubkey_string"]._options = None -_OPENCHANNELREQUEST.fields_by_name["sat_per_byte"]._options = None -_PENDINGCHANNELSRESPONSE.fields_by_name["pending_closing_channels"]._options = None -_WALLETBALANCERESPONSE_ACCOUNTBALANCEENTRY._options = None -_CHANNELBALANCERESPONSE.fields_by_name["balance"]._options = None -_CHANNELBALANCERESPONSE.fields_by_name["pending_open_balance"]._options = None -_QUERYROUTESREQUEST_DESTCUSTOMRECORDSENTRY._options = None -_QUERYROUTESREQUEST.fields_by_name["ignored_edges"]._options = None -_QUERYROUTESREQUEST.fields_by_name["outgoing_chan_id"]._options = None -_EDGELOCATOR.fields_by_name["channel_id"]._options = None -_HOP_CUSTOMRECORDSENTRY._options = None -_HOP.fields_by_name["chan_id"]._options = None -_HOP.fields_by_name["chan_capacity"]._options = None -_HOP.fields_by_name["amt_to_forward"]._options = None -_HOP.fields_by_name["fee"]._options = None -_ROUTE.fields_by_name["total_fees"]._options = None -_ROUTE.fields_by_name["total_amt"]._options = None -_LIGHTNINGNODE_FEATURESENTRY._options = None -_CHANNELEDGE.fields_by_name["channel_id"]._options = None -_CHANNELEDGE.fields_by_name["last_update"]._options = None -_NODEMETRICSRESPONSE_BETWEENNESSCENTRALITYENTRY._options = None -_CHANINFOREQUEST.fields_by_name["chan_id"]._options = None -_NODEUPDATE_FEATURESENTRY._options = None -_NODEUPDATE.fields_by_name["addresses"]._options = None -_NODEUPDATE.fields_by_name["global_features"]._options = None -_CHANNELEDGEUPDATE.fields_by_name["chan_id"]._options = None -_CLOSEDCHANNELUPDATE.fields_by_name["chan_id"]._options = None -_HOPHINT.fields_by_name["chan_id"]._options = None -_INVOICE_FEATURESENTRY._options = None -_INVOICE_AMPINVOICESTATEENTRY._options = None -_INVOICE.fields_by_name["settled"]._options = None -_INVOICE.fields_by_name["amt_paid"]._options = None -_INVOICEHTLC_CUSTOMRECORDSENTRY._options = None -_INVOICEHTLC.fields_by_name["chan_id"]._options = None -_PAYMENTHASH.fields_by_name["r_hash_str"]._options = None -_PAYMENT.fields_by_name["value"]._options = None -_PAYMENT.fields_by_name["creation_date"]._options = None -_PAYMENT.fields_by_name["fee"]._options = None -_PAYREQ_FEATURESENTRY._options = None -_CHANNELFEEREPORT.fields_by_name["chan_id"]._options = None -_FORWARDINGEVENT.fields_by_name["timestamp"]._options = None -_FORWARDINGEVENT.fields_by_name["chan_id_in"]._options = None -_FORWARDINGEVENT.fields_by_name["chan_id_out"]._options = None -_LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY._options = None -_CHANNELUPDATE.fields_by_name["chan_id"]._options = None - -_LIGHTNING = _descriptor.ServiceDescriptor( - name="Lightning", - full_name="lnrpc.Lightning", - file=DESCRIPTOR, - index=0, - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_start=28310, - serialized_end=33119, - methods=[ - _descriptor.MethodDescriptor( - name="WalletBalance", - full_name="lnrpc.Lightning.WalletBalance", - index=0, - containing_service=None, - input_type=_WALLETBALANCEREQUEST, - output_type=_WALLETBALANCERESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="ChannelBalance", - full_name="lnrpc.Lightning.ChannelBalance", - index=1, - containing_service=None, - input_type=_CHANNELBALANCEREQUEST, - output_type=_CHANNELBALANCERESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="GetTransactions", - full_name="lnrpc.Lightning.GetTransactions", - index=2, - containing_service=None, - input_type=_GETTRANSACTIONSREQUEST, - output_type=_TRANSACTIONDETAILS, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="EstimateFee", - full_name="lnrpc.Lightning.EstimateFee", - index=3, - containing_service=None, - input_type=_ESTIMATEFEEREQUEST, - output_type=_ESTIMATEFEERESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="SendCoins", - full_name="lnrpc.Lightning.SendCoins", - index=4, - containing_service=None, - input_type=_SENDCOINSREQUEST, - output_type=_SENDCOINSRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="ListUnspent", - full_name="lnrpc.Lightning.ListUnspent", - index=5, - containing_service=None, - input_type=_LISTUNSPENTREQUEST, - output_type=_LISTUNSPENTRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="SubscribeTransactions", - full_name="lnrpc.Lightning.SubscribeTransactions", - index=6, - containing_service=None, - input_type=_GETTRANSACTIONSREQUEST, - output_type=_TRANSACTION, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="SendMany", - full_name="lnrpc.Lightning.SendMany", - index=7, - containing_service=None, - input_type=_SENDMANYREQUEST, - output_type=_SENDMANYRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="NewAddress", - full_name="lnrpc.Lightning.NewAddress", - index=8, - containing_service=None, - input_type=_NEWADDRESSREQUEST, - output_type=_NEWADDRESSRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="SignMessage", - full_name="lnrpc.Lightning.SignMessage", - index=9, - containing_service=None, - input_type=_SIGNMESSAGEREQUEST, - output_type=_SIGNMESSAGERESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="VerifyMessage", - full_name="lnrpc.Lightning.VerifyMessage", - index=10, - containing_service=None, - input_type=_VERIFYMESSAGEREQUEST, - output_type=_VERIFYMESSAGERESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="ConnectPeer", - full_name="lnrpc.Lightning.ConnectPeer", - index=11, - containing_service=None, - input_type=_CONNECTPEERREQUEST, - output_type=_CONNECTPEERRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="DisconnectPeer", - full_name="lnrpc.Lightning.DisconnectPeer", - index=12, - containing_service=None, - input_type=_DISCONNECTPEERREQUEST, - output_type=_DISCONNECTPEERRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="ListPeers", - full_name="lnrpc.Lightning.ListPeers", - index=13, - containing_service=None, - input_type=_LISTPEERSREQUEST, - output_type=_LISTPEERSRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="SubscribePeerEvents", - full_name="lnrpc.Lightning.SubscribePeerEvents", - index=14, - containing_service=None, - input_type=_PEEREVENTSUBSCRIPTION, - output_type=_PEEREVENT, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="GetInfo", - full_name="lnrpc.Lightning.GetInfo", - index=15, - containing_service=None, - input_type=_GETINFOREQUEST, - output_type=_GETINFORESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="GetRecoveryInfo", - full_name="lnrpc.Lightning.GetRecoveryInfo", - index=16, - containing_service=None, - input_type=_GETRECOVERYINFOREQUEST, - output_type=_GETRECOVERYINFORESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="PendingChannels", - full_name="lnrpc.Lightning.PendingChannels", - index=17, - containing_service=None, - input_type=_PENDINGCHANNELSREQUEST, - output_type=_PENDINGCHANNELSRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="ListChannels", - full_name="lnrpc.Lightning.ListChannels", - index=18, - containing_service=None, - input_type=_LISTCHANNELSREQUEST, - output_type=_LISTCHANNELSRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="SubscribeChannelEvents", - full_name="lnrpc.Lightning.SubscribeChannelEvents", - index=19, - containing_service=None, - input_type=_CHANNELEVENTSUBSCRIPTION, - output_type=_CHANNELEVENTUPDATE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="ClosedChannels", - full_name="lnrpc.Lightning.ClosedChannels", - index=20, - containing_service=None, - input_type=_CLOSEDCHANNELSREQUEST, - output_type=_CLOSEDCHANNELSRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="OpenChannelSync", - full_name="lnrpc.Lightning.OpenChannelSync", - index=21, - containing_service=None, - input_type=_OPENCHANNELREQUEST, - output_type=_CHANNELPOINT, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="OpenChannel", - full_name="lnrpc.Lightning.OpenChannel", - index=22, - containing_service=None, - input_type=_OPENCHANNELREQUEST, - output_type=_OPENSTATUSUPDATE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="BatchOpenChannel", - full_name="lnrpc.Lightning.BatchOpenChannel", - index=23, - containing_service=None, - input_type=_BATCHOPENCHANNELREQUEST, - output_type=_BATCHOPENCHANNELRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="FundingStateStep", - full_name="lnrpc.Lightning.FundingStateStep", - index=24, - containing_service=None, - input_type=_FUNDINGTRANSITIONMSG, - output_type=_FUNDINGSTATESTEPRESP, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="ChannelAcceptor", - full_name="lnrpc.Lightning.ChannelAcceptor", - index=25, - containing_service=None, - input_type=_CHANNELACCEPTRESPONSE, - output_type=_CHANNELACCEPTREQUEST, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="CloseChannel", - full_name="lnrpc.Lightning.CloseChannel", - index=26, - containing_service=None, - input_type=_CLOSECHANNELREQUEST, - output_type=_CLOSESTATUSUPDATE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="AbandonChannel", - full_name="lnrpc.Lightning.AbandonChannel", - index=27, - containing_service=None, - input_type=_ABANDONCHANNELREQUEST, - output_type=_ABANDONCHANNELRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="SendPayment", - full_name="lnrpc.Lightning.SendPayment", - index=28, - containing_service=None, - input_type=_SENDREQUEST, - output_type=_SENDRESPONSE, - serialized_options=b"\210\002\001", - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="SendPaymentSync", - full_name="lnrpc.Lightning.SendPaymentSync", - index=29, - containing_service=None, - input_type=_SENDREQUEST, - output_type=_SENDRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="SendToRoute", - full_name="lnrpc.Lightning.SendToRoute", - index=30, - containing_service=None, - input_type=_SENDTOROUTEREQUEST, - output_type=_SENDRESPONSE, - serialized_options=b"\210\002\001", - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="SendToRouteSync", - full_name="lnrpc.Lightning.SendToRouteSync", - index=31, - containing_service=None, - input_type=_SENDTOROUTEREQUEST, - output_type=_SENDRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="AddInvoice", - full_name="lnrpc.Lightning.AddInvoice", - index=32, - containing_service=None, - input_type=_INVOICE, - output_type=_ADDINVOICERESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="ListInvoices", - full_name="lnrpc.Lightning.ListInvoices", - index=33, - containing_service=None, - input_type=_LISTINVOICEREQUEST, - output_type=_LISTINVOICERESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="LookupInvoice", - full_name="lnrpc.Lightning.LookupInvoice", - index=34, - containing_service=None, - input_type=_PAYMENTHASH, - output_type=_INVOICE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="SubscribeInvoices", - full_name="lnrpc.Lightning.SubscribeInvoices", - index=35, - containing_service=None, - input_type=_INVOICESUBSCRIPTION, - output_type=_INVOICE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="DecodePayReq", - full_name="lnrpc.Lightning.DecodePayReq", - index=36, - containing_service=None, - input_type=_PAYREQSTRING, - output_type=_PAYREQ, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="ListPayments", - full_name="lnrpc.Lightning.ListPayments", - index=37, - containing_service=None, - input_type=_LISTPAYMENTSREQUEST, - output_type=_LISTPAYMENTSRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="DeletePayment", - full_name="lnrpc.Lightning.DeletePayment", - index=38, - containing_service=None, - input_type=_DELETEPAYMENTREQUEST, - output_type=_DELETEPAYMENTRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="DeleteAllPayments", - full_name="lnrpc.Lightning.DeleteAllPayments", - index=39, - containing_service=None, - input_type=_DELETEALLPAYMENTSREQUEST, - output_type=_DELETEALLPAYMENTSRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="DescribeGraph", - full_name="lnrpc.Lightning.DescribeGraph", - index=40, - containing_service=None, - input_type=_CHANNELGRAPHREQUEST, - output_type=_CHANNELGRAPH, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="GetNodeMetrics", - full_name="lnrpc.Lightning.GetNodeMetrics", - index=41, - containing_service=None, - input_type=_NODEMETRICSREQUEST, - output_type=_NODEMETRICSRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="GetChanInfo", - full_name="lnrpc.Lightning.GetChanInfo", - index=42, - containing_service=None, - input_type=_CHANINFOREQUEST, - output_type=_CHANNELEDGE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="GetNodeInfo", - full_name="lnrpc.Lightning.GetNodeInfo", - index=43, - containing_service=None, - input_type=_NODEINFOREQUEST, - output_type=_NODEINFO, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="QueryRoutes", - full_name="lnrpc.Lightning.QueryRoutes", - index=44, - containing_service=None, - input_type=_QUERYROUTESREQUEST, - output_type=_QUERYROUTESRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="GetNetworkInfo", - full_name="lnrpc.Lightning.GetNetworkInfo", - index=45, - containing_service=None, - input_type=_NETWORKINFOREQUEST, - output_type=_NETWORKINFO, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="StopDaemon", - full_name="lnrpc.Lightning.StopDaemon", - index=46, - containing_service=None, - input_type=_STOPREQUEST, - output_type=_STOPRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="SubscribeChannelGraph", - full_name="lnrpc.Lightning.SubscribeChannelGraph", - index=47, - containing_service=None, - input_type=_GRAPHTOPOLOGYSUBSCRIPTION, - output_type=_GRAPHTOPOLOGYUPDATE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="DebugLevel", - full_name="lnrpc.Lightning.DebugLevel", - index=48, - containing_service=None, - input_type=_DEBUGLEVELREQUEST, - output_type=_DEBUGLEVELRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="FeeReport", - full_name="lnrpc.Lightning.FeeReport", - index=49, - containing_service=None, - input_type=_FEEREPORTREQUEST, - output_type=_FEEREPORTRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="UpdateChannelPolicy", - full_name="lnrpc.Lightning.UpdateChannelPolicy", - index=50, - containing_service=None, - input_type=_POLICYUPDATEREQUEST, - output_type=_POLICYUPDATERESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="ForwardingHistory", - full_name="lnrpc.Lightning.ForwardingHistory", - index=51, - containing_service=None, - input_type=_FORWARDINGHISTORYREQUEST, - output_type=_FORWARDINGHISTORYRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="ExportChannelBackup", - full_name="lnrpc.Lightning.ExportChannelBackup", - index=52, - containing_service=None, - input_type=_EXPORTCHANNELBACKUPREQUEST, - output_type=_CHANNELBACKUP, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="ExportAllChannelBackups", - full_name="lnrpc.Lightning.ExportAllChannelBackups", - index=53, - containing_service=None, - input_type=_CHANBACKUPEXPORTREQUEST, - output_type=_CHANBACKUPSNAPSHOT, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="VerifyChanBackup", - full_name="lnrpc.Lightning.VerifyChanBackup", - index=54, - containing_service=None, - input_type=_CHANBACKUPSNAPSHOT, - output_type=_VERIFYCHANBACKUPRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="RestoreChannelBackups", - full_name="lnrpc.Lightning.RestoreChannelBackups", - index=55, - containing_service=None, - input_type=_RESTORECHANBACKUPREQUEST, - output_type=_RESTOREBACKUPRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="SubscribeChannelBackups", - full_name="lnrpc.Lightning.SubscribeChannelBackups", - index=56, - containing_service=None, - input_type=_CHANNELBACKUPSUBSCRIPTION, - output_type=_CHANBACKUPSNAPSHOT, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="BakeMacaroon", - full_name="lnrpc.Lightning.BakeMacaroon", - index=57, - containing_service=None, - input_type=_BAKEMACAROONREQUEST, - output_type=_BAKEMACAROONRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="ListMacaroonIDs", - full_name="lnrpc.Lightning.ListMacaroonIDs", - index=58, - containing_service=None, - input_type=_LISTMACAROONIDSREQUEST, - output_type=_LISTMACAROONIDSRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="DeleteMacaroonID", - full_name="lnrpc.Lightning.DeleteMacaroonID", - index=59, - containing_service=None, - input_type=_DELETEMACAROONIDREQUEST, - output_type=_DELETEMACAROONIDRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="ListPermissions", - full_name="lnrpc.Lightning.ListPermissions", - index=60, - containing_service=None, - input_type=_LISTPERMISSIONSREQUEST, - output_type=_LISTPERMISSIONSRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="CheckMacaroonPermissions", - full_name="lnrpc.Lightning.CheckMacaroonPermissions", - index=61, - containing_service=None, - input_type=_CHECKMACPERMREQUEST, - output_type=_CHECKMACPERMRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="RegisterRPCMiddleware", - full_name="lnrpc.Lightning.RegisterRPCMiddleware", - index=62, - containing_service=None, - input_type=_RPCMIDDLEWARERESPONSE, - output_type=_RPCMIDDLEWAREREQUEST, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="SendCustomMessage", - full_name="lnrpc.Lightning.SendCustomMessage", - index=63, - containing_service=None, - input_type=_SENDCUSTOMMESSAGEREQUEST, - output_type=_SENDCUSTOMMESSAGERESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name="SubscribeCustomMessages", - full_name="lnrpc.Lightning.SubscribeCustomMessages", - index=64, - containing_service=None, - input_type=_SUBSCRIBECUSTOMMESSAGESREQUEST, - output_type=_CUSTOMMESSAGE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - ], -) -_sym_db.RegisterServiceDescriptor(_LIGHTNING) - -DESCRIPTOR.services_by_name["Lightning"] = _LIGHTNING - + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b"Z%github.com/lightningnetwork/lnd/lnrpc" + _TRANSACTION.fields_by_name["dest_addresses"]._options = None + _TRANSACTION.fields_by_name["dest_addresses"]._serialized_options = b"\030\001" + _SENDREQUEST_DESTCUSTOMRECORDSENTRY._options = None + _SENDREQUEST_DESTCUSTOMRECORDSENTRY._serialized_options = b"8\001" + _SENDREQUEST.fields_by_name["dest_string"]._options = None + _SENDREQUEST.fields_by_name["dest_string"]._serialized_options = b"\030\001" + _SENDREQUEST.fields_by_name["payment_hash_string"]._options = None + _SENDREQUEST.fields_by_name["payment_hash_string"]._serialized_options = b"\030\001" + _SENDREQUEST.fields_by_name["outgoing_chan_id"]._options = None + _SENDREQUEST.fields_by_name["outgoing_chan_id"]._serialized_options = b"0\001" + _SENDTOROUTEREQUEST.fields_by_name["payment_hash_string"]._options = None + _SENDTOROUTEREQUEST.fields_by_name[ + "payment_hash_string" + ]._serialized_options = b"\030\001" + _ESTIMATEFEEREQUEST_ADDRTOAMOUNTENTRY._options = None + _ESTIMATEFEEREQUEST_ADDRTOAMOUNTENTRY._serialized_options = b"8\001" + _ESTIMATEFEERESPONSE.fields_by_name["feerate_sat_per_byte"]._options = None + _ESTIMATEFEERESPONSE.fields_by_name[ + "feerate_sat_per_byte" + ]._serialized_options = b"\030\001" + _SENDMANYREQUEST_ADDRTOAMOUNTENTRY._options = None + _SENDMANYREQUEST_ADDRTOAMOUNTENTRY._serialized_options = b"8\001" + _SENDMANYREQUEST.fields_by_name["sat_per_byte"]._options = None + _SENDMANYREQUEST.fields_by_name["sat_per_byte"]._serialized_options = b"\030\001" + _SENDCOINSREQUEST.fields_by_name["sat_per_byte"]._options = None + _SENDCOINSREQUEST.fields_by_name["sat_per_byte"]._serialized_options = b"\030\001" + _CHANNEL.fields_by_name["chan_id"]._options = None + _CHANNEL.fields_by_name["chan_id"]._serialized_options = b"0\001" + _CHANNEL.fields_by_name["csv_delay"]._options = None + _CHANNEL.fields_by_name["csv_delay"]._serialized_options = b"\030\001" + _CHANNEL.fields_by_name["local_chan_reserve_sat"]._options = None + _CHANNEL.fields_by_name["local_chan_reserve_sat"]._serialized_options = b"\030\001" + _CHANNEL.fields_by_name["remote_chan_reserve_sat"]._options = None + _CHANNEL.fields_by_name["remote_chan_reserve_sat"]._serialized_options = b"\030\001" + _CHANNEL.fields_by_name["static_remote_key"]._options = None + _CHANNEL.fields_by_name["static_remote_key"]._serialized_options = b"\030\001" + _CHANNELCLOSESUMMARY.fields_by_name["chan_id"]._options = None + _CHANNELCLOSESUMMARY.fields_by_name["chan_id"]._serialized_options = b"0\001" + _PEER_FEATURESENTRY._options = None + _PEER_FEATURESENTRY._serialized_options = b"8\001" + _GETINFORESPONSE_FEATURESENTRY._options = None + _GETINFORESPONSE_FEATURESENTRY._serialized_options = b"8\001" + _GETINFORESPONSE.fields_by_name["testnet"]._options = None + _GETINFORESPONSE.fields_by_name["testnet"]._serialized_options = b"\030\001" + _CLOSECHANNELREQUEST.fields_by_name["sat_per_byte"]._options = None + _CLOSECHANNELREQUEST.fields_by_name[ + "sat_per_byte" + ]._serialized_options = b"\030\001" + _OPENCHANNELREQUEST.fields_by_name["node_pubkey_string"]._options = None + _OPENCHANNELREQUEST.fields_by_name[ + "node_pubkey_string" + ]._serialized_options = b"\030\001" + _OPENCHANNELREQUEST.fields_by_name["sat_per_byte"]._options = None + _OPENCHANNELREQUEST.fields_by_name["sat_per_byte"]._serialized_options = b"\030\001" + _PENDINGCHANNELSRESPONSE.fields_by_name["pending_closing_channels"]._options = None + _PENDINGCHANNELSRESPONSE.fields_by_name[ + "pending_closing_channels" + ]._serialized_options = b"\030\001" + _WALLETBALANCERESPONSE_ACCOUNTBALANCEENTRY._options = None + _WALLETBALANCERESPONSE_ACCOUNTBALANCEENTRY._serialized_options = b"8\001" + _CHANNELBALANCERESPONSE.fields_by_name["balance"]._options = None + _CHANNELBALANCERESPONSE.fields_by_name["balance"]._serialized_options = b"\030\001" + _CHANNELBALANCERESPONSE.fields_by_name["pending_open_balance"]._options = None + _CHANNELBALANCERESPONSE.fields_by_name[ + "pending_open_balance" + ]._serialized_options = b"\030\001" + _QUERYROUTESREQUEST_DESTCUSTOMRECORDSENTRY._options = None + _QUERYROUTESREQUEST_DESTCUSTOMRECORDSENTRY._serialized_options = b"8\001" + _QUERYROUTESREQUEST.fields_by_name["ignored_edges"]._options = None + _QUERYROUTESREQUEST.fields_by_name[ + "ignored_edges" + ]._serialized_options = b"\030\001" + _QUERYROUTESREQUEST.fields_by_name["outgoing_chan_id"]._options = None + _QUERYROUTESREQUEST.fields_by_name[ + "outgoing_chan_id" + ]._serialized_options = b"0\001" + _EDGELOCATOR.fields_by_name["channel_id"]._options = None + _EDGELOCATOR.fields_by_name["channel_id"]._serialized_options = b"0\001" + _HOP_CUSTOMRECORDSENTRY._options = None + _HOP_CUSTOMRECORDSENTRY._serialized_options = b"8\001" + _HOP.fields_by_name["chan_id"]._options = None + _HOP.fields_by_name["chan_id"]._serialized_options = b"0\001" + _HOP.fields_by_name["chan_capacity"]._options = None + _HOP.fields_by_name["chan_capacity"]._serialized_options = b"\030\001" + _HOP.fields_by_name["amt_to_forward"]._options = None + _HOP.fields_by_name["amt_to_forward"]._serialized_options = b"\030\001" + _HOP.fields_by_name["fee"]._options = None + _HOP.fields_by_name["fee"]._serialized_options = b"\030\001" + _HOP.fields_by_name["tlv_payload"]._options = None + _HOP.fields_by_name["tlv_payload"]._serialized_options = b"\030\001" + _ROUTE.fields_by_name["total_fees"]._options = None + _ROUTE.fields_by_name["total_fees"]._serialized_options = b"\030\001" + _ROUTE.fields_by_name["total_amt"]._options = None + _ROUTE.fields_by_name["total_amt"]._serialized_options = b"\030\001" + _LIGHTNINGNODE_FEATURESENTRY._options = None + _LIGHTNINGNODE_FEATURESENTRY._serialized_options = b"8\001" + _CHANNELEDGE.fields_by_name["channel_id"]._options = None + _CHANNELEDGE.fields_by_name["channel_id"]._serialized_options = b"0\001" + _CHANNELEDGE.fields_by_name["last_update"]._options = None + _CHANNELEDGE.fields_by_name["last_update"]._serialized_options = b"\030\001" + _NODEMETRICSRESPONSE_BETWEENNESSCENTRALITYENTRY._options = None + _NODEMETRICSRESPONSE_BETWEENNESSCENTRALITYENTRY._serialized_options = b"8\001" + _CHANINFOREQUEST.fields_by_name["chan_id"]._options = None + _CHANINFOREQUEST.fields_by_name["chan_id"]._serialized_options = b"0\001" + _NODEUPDATE_FEATURESENTRY._options = None + _NODEUPDATE_FEATURESENTRY._serialized_options = b"8\001" + _NODEUPDATE.fields_by_name["addresses"]._options = None + _NODEUPDATE.fields_by_name["addresses"]._serialized_options = b"\030\001" + _NODEUPDATE.fields_by_name["global_features"]._options = None + _NODEUPDATE.fields_by_name["global_features"]._serialized_options = b"\030\001" + _CHANNELEDGEUPDATE.fields_by_name["chan_id"]._options = None + _CHANNELEDGEUPDATE.fields_by_name["chan_id"]._serialized_options = b"0\001" + _CLOSEDCHANNELUPDATE.fields_by_name["chan_id"]._options = None + _CLOSEDCHANNELUPDATE.fields_by_name["chan_id"]._serialized_options = b"0\001" + _HOPHINT.fields_by_name["chan_id"]._options = None + _HOPHINT.fields_by_name["chan_id"]._serialized_options = b"0\001" + _INVOICE_FEATURESENTRY._options = None + _INVOICE_FEATURESENTRY._serialized_options = b"8\001" + _INVOICE_AMPINVOICESTATEENTRY._options = None + _INVOICE_AMPINVOICESTATEENTRY._serialized_options = b"8\001" + _INVOICE.fields_by_name["settled"]._options = None + _INVOICE.fields_by_name["settled"]._serialized_options = b"\030\001" + _INVOICE.fields_by_name["amt_paid"]._options = None + _INVOICE.fields_by_name["amt_paid"]._serialized_options = b"\030\001" + _INVOICEHTLC_CUSTOMRECORDSENTRY._options = None + _INVOICEHTLC_CUSTOMRECORDSENTRY._serialized_options = b"8\001" + _INVOICEHTLC.fields_by_name["chan_id"]._options = None + _INVOICEHTLC.fields_by_name["chan_id"]._serialized_options = b"0\001" + _PAYMENTHASH.fields_by_name["r_hash_str"]._options = None + _PAYMENTHASH.fields_by_name["r_hash_str"]._serialized_options = b"\030\001" + _PAYMENT.fields_by_name["value"]._options = None + _PAYMENT.fields_by_name["value"]._serialized_options = b"\030\001" + _PAYMENT.fields_by_name["creation_date"]._options = None + _PAYMENT.fields_by_name["creation_date"]._serialized_options = b"\030\001" + _PAYMENT.fields_by_name["fee"]._options = None + _PAYMENT.fields_by_name["fee"]._serialized_options = b"\030\001" + _PAYREQ_FEATURESENTRY._options = None + _PAYREQ_FEATURESENTRY._serialized_options = b"8\001" + _CHANNELFEEREPORT.fields_by_name["chan_id"]._options = None + _CHANNELFEEREPORT.fields_by_name["chan_id"]._serialized_options = b"0\001" + _FORWARDINGEVENT.fields_by_name["timestamp"]._options = None + _FORWARDINGEVENT.fields_by_name["timestamp"]._serialized_options = b"\030\001" + _FORWARDINGEVENT.fields_by_name["chan_id_in"]._options = None + _FORWARDINGEVENT.fields_by_name["chan_id_in"]._serialized_options = b"0\001" + _FORWARDINGEVENT.fields_by_name["chan_id_out"]._options = None + _FORWARDINGEVENT.fields_by_name["chan_id_out"]._serialized_options = b"0\001" + _LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY._options = None + _LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY._serialized_options = b"8\001" + _CHANNELUPDATE.fields_by_name["chan_id"]._options = None + _CHANNELUPDATE.fields_by_name["chan_id"]._serialized_options = b"0\001" + _LIGHTNING.methods_by_name["SendPayment"]._options = None + _LIGHTNING.methods_by_name["SendPayment"]._serialized_options = b"\210\002\001" + _LIGHTNING.methods_by_name["SendToRoute"]._options = None + _LIGHTNING.methods_by_name["SendToRoute"]._serialized_options = b"\210\002\001" + _OUTPUTSCRIPTTYPE._serialized_start = 27318 + _OUTPUTSCRIPTTYPE._serialized_end = 27613 + _ADDRESSTYPE._serialized_start = 27616 + _ADDRESSTYPE._serialized_end = 27788 + _COMMITMENTTYPE._serialized_start = 27790 + _COMMITMENTTYPE._serialized_end = 27910 + _INITIATOR._serialized_start = 27912 + _INITIATOR._serialized_end = 28009 + _RESOLUTIONTYPE._serialized_start = 28011 + _RESOLUTIONTYPE._serialized_end = 28107 + _RESOLUTIONOUTCOME._serialized_start = 28109 + _RESOLUTIONOUTCOME._serialized_end = 28222 + _NODEMETRICTYPE._serialized_start = 28224 + _NODEMETRICTYPE._serialized_end = 28281 + _INVOICEHTLCSTATE._serialized_start = 28283 + _INVOICEHTLCSTATE._serialized_end = 28342 + _PAYMENTFAILUREREASON._serialized_start = 28345 + _PAYMENTFAILUREREASON._serialized_end = 28562 + _FEATUREBIT._serialized_start = 28565 + _FEATUREBIT._serialized_end = 29156 + _UPDATEFAILURE._serialized_start = 29159 + _UPDATEFAILURE._serialized_end = 29331 + _SUBSCRIBECUSTOMMESSAGESREQUEST._serialized_start = 26 + _SUBSCRIBECUSTOMMESSAGESREQUEST._serialized_end = 58 + _CUSTOMMESSAGE._serialized_start = 60 + _CUSTOMMESSAGE._serialized_end = 117 + _SENDCUSTOMMESSAGEREQUEST._serialized_start = 119 + _SENDCUSTOMMESSAGEREQUEST._serialized_end = 187 + _SENDCUSTOMMESSAGERESPONSE._serialized_start = 189 + _SENDCUSTOMMESSAGERESPONSE._serialized_end = 216 + _UTXO._serialized_start = 219 + _UTXO._serialized_end = 381 + _OUTPUTDETAIL._serialized_start = 384 + _OUTPUTDETAIL._serialized_end = 542 + _TRANSACTION._serialized_start = 545 + _TRANSACTION._serialized_end = 861 + _GETTRANSACTIONSREQUEST._serialized_start = 863 + _GETTRANSACTIONSREQUEST._serialized_end = 946 + _TRANSACTIONDETAILS._serialized_start = 948 + _TRANSACTIONDETAILS._serialized_end = 1010 + _FEELIMIT._serialized_start = 1012 + _FEELIMIT._serialized_end = 1089 + _SENDREQUEST._serialized_start = 1092 + _SENDREQUEST._serialized_end = 1614 + _SENDREQUEST_DESTCUSTOMRECORDSENTRY._serialized_start = 1558 + _SENDREQUEST_DESTCUSTOMRECORDSENTRY._serialized_end = 1614 + _SENDRESPONSE._serialized_start = 1616 + _SENDRESPONSE._serialized_end = 1738 + _SENDTOROUTEREQUEST._serialized_start = 1740 + _SENDTOROUTEREQUEST._serialized_end = 1850 + _CHANNELACCEPTREQUEST._serialized_start = 1853 + _CHANNELACCEPTREQUEST._serialized_end = 2210 + _CHANNELACCEPTRESPONSE._serialized_start = 2213 + _CHANNELACCEPTRESPONSE._serialized_end = 2476 + _CHANNELPOINT._serialized_start = 2478 + _CHANNELPOINT._serialized_end = 2588 + _OUTPOINT._serialized_start = 2590 + _OUTPOINT._serialized_end = 2660 + _PREVIOUSOUTPOINT._serialized_start = 2662 + _PREVIOUSOUTPOINT._serialized_end = 2721 + _LIGHTNINGADDRESS._serialized_start = 2723 + _LIGHTNINGADDRESS._serialized_end = 2771 + _ESTIMATEFEEREQUEST._serialized_start = 2774 + _ESTIMATEFEEREQUEST._serialized_end = 2981 + _ESTIMATEFEEREQUEST_ADDRTOAMOUNTENTRY._serialized_start = 2930 + _ESTIMATEFEEREQUEST_ADDRTOAMOUNTENTRY._serialized_end = 2981 + _ESTIMATEFEERESPONSE._serialized_start = 2983 + _ESTIMATEFEERESPONSE._serialized_end = 3078 + _SENDMANYREQUEST._serialized_start = 3081 + _SENDMANYREQUEST._serialized_end = 3346 + _SENDMANYREQUEST_ADDRTOAMOUNTENTRY._serialized_start = 2930 + _SENDMANYREQUEST_ADDRTOAMOUNTENTRY._serialized_end = 2981 + _SENDMANYRESPONSE._serialized_start = 3348 + _SENDMANYRESPONSE._serialized_end = 3380 + _SENDCOINSREQUEST._serialized_start = 3383 + _SENDCOINSREQUEST._serialized_end = 3580 + _SENDCOINSRESPONSE._serialized_start = 3582 + _SENDCOINSRESPONSE._serialized_end = 3615 + _LISTUNSPENTREQUEST._serialized_start = 3617 + _LISTUNSPENTREQUEST._serialized_end = 3692 + _LISTUNSPENTRESPONSE._serialized_start = 3694 + _LISTUNSPENTRESPONSE._serialized_end = 3743 + _NEWADDRESSREQUEST._serialized_start = 3745 + _NEWADDRESSREQUEST._serialized_end = 3815 + _NEWADDRESSRESPONSE._serialized_start = 3817 + _NEWADDRESSRESPONSE._serialized_end = 3854 + _SIGNMESSAGEREQUEST._serialized_start = 3856 + _SIGNMESSAGEREQUEST._serialized_end = 3910 + _SIGNMESSAGERESPONSE._serialized_start = 3912 + _SIGNMESSAGERESPONSE._serialized_end = 3952 + _VERIFYMESSAGEREQUEST._serialized_start = 3954 + _VERIFYMESSAGEREQUEST._serialized_end = 4008 + _VERIFYMESSAGERESPONSE._serialized_start = 4010 + _VERIFYMESSAGERESPONSE._serialized_end = 4064 + _CONNECTPEERREQUEST._serialized_start = 4066 + _CONNECTPEERREQUEST._serialized_end = 4156 + _CONNECTPEERRESPONSE._serialized_start = 4158 + _CONNECTPEERRESPONSE._serialized_end = 4179 + _DISCONNECTPEERREQUEST._serialized_start = 4181 + _DISCONNECTPEERREQUEST._serialized_end = 4221 + _DISCONNECTPEERRESPONSE._serialized_start = 4223 + _DISCONNECTPEERRESPONSE._serialized_end = 4247 + _HTLC._serialized_start = 4250 + _HTLC._serialized_end = 4415 + _CHANNELCONSTRAINTS._serialized_start = 4418 + _CHANNELCONSTRAINTS._serialized_end = 4588 + _CHANNEL._serialized_start = 4591 + _CHANNEL._serialized_end = 5407 + _LISTCHANNELSREQUEST._serialized_start = 5409 + _LISTCHANNELSREQUEST._serialized_end = 5531 + _LISTCHANNELSRESPONSE._serialized_start = 5533 + _LISTCHANNELSRESPONSE._serialized_end = 5589 + _CHANNELCLOSESUMMARY._serialized_start = 5592 + _CHANNELCLOSESUMMARY._serialized_end = 6145 + _CHANNELCLOSESUMMARY_CLOSURETYPE._serialized_start = 6007 + _CHANNELCLOSESUMMARY_CLOSURETYPE._serialized_end = 6145 + _RESOLUTION._serialized_start = 6148 + _RESOLUTION._serialized_end = 6326 + _CLOSEDCHANNELSREQUEST._serialized_start = 6329 + _CLOSEDCHANNELSREQUEST._serialized_end = 6477 + _CLOSEDCHANNELSRESPONSE._serialized_start = 6479 + _CLOSEDCHANNELSRESPONSE._serialized_end = 6549 + _PEER._serialized_start = 6552 + _PEER._serialized_end = 7047 + _PEER_FEATURESENTRY._serialized_start = 6902 + _PEER_FEATURESENTRY._serialized_end = 6965 + _PEER_SYNCTYPE._serialized_start = 6967 + _PEER_SYNCTYPE._serialized_end = 7047 + _TIMESTAMPEDERROR._serialized_start = 7049 + _TIMESTAMPEDERROR._serialized_end = 7101 + _LISTPEERSREQUEST._serialized_start = 7103 + _LISTPEERSREQUEST._serialized_end = 7143 + _LISTPEERSRESPONSE._serialized_start = 7145 + _LISTPEERSRESPONSE._serialized_end = 7192 + _PEEREVENTSUBSCRIPTION._serialized_start = 7194 + _PEEREVENTSUBSCRIPTION._serialized_end = 7217 + _PEEREVENT._serialized_start = 7219 + _PEEREVENT._serialized_end = 7337 + _PEEREVENT_EVENTTYPE._serialized_start = 7291 + _PEEREVENT_EVENTTYPE._serialized_end = 7337 + _GETINFOREQUEST._serialized_start = 7339 + _GETINFOREQUEST._serialized_end = 7355 + _GETINFORESPONSE._serialized_start = 7358 + _GETINFORESPONSE._serialized_end = 7926 + _GETINFORESPONSE_FEATURESENTRY._serialized_start = 6902 + _GETINFORESPONSE_FEATURESENTRY._serialized_end = 6965 + _GETRECOVERYINFOREQUEST._serialized_start = 7928 + _GETRECOVERYINFOREQUEST._serialized_end = 7952 + _GETRECOVERYINFORESPONSE._serialized_start = 7954 + _GETRECOVERYINFORESPONSE._serialized_end = 8047 + _CHAIN._serialized_start = 8049 + _CHAIN._serialized_end = 8088 + _CONFIRMATIONUPDATE._serialized_start = 8090 + _CONFIRMATIONUPDATE._serialized_end = 8175 + _CHANNELOPENUPDATE._serialized_start = 8177 + _CHANNELOPENUPDATE._serialized_end = 8240 + _CHANNELCLOSEUPDATE._serialized_start = 8242 + _CHANNELCLOSEUPDATE._serialized_end = 8301 + _CLOSECHANNELREQUEST._serialized_start = 8304 + _CLOSECHANNELREQUEST._serialized_end = 8480 + _CLOSESTATUSUPDATE._serialized_start = 8482 + _CLOSESTATUSUPDATE._serialized_end = 8607 + _PENDINGUPDATE._serialized_start = 8609 + _PENDINGUPDATE._serialized_end = 8660 + _READYFORPSBTFUNDING._serialized_start = 8662 + _READYFORPSBTFUNDING._serialized_end = 8746 + _BATCHOPENCHANNELREQUEST._serialized_start = 8749 + _BATCHOPENCHANNELREQUEST._serialized_end = 8922 + _BATCHOPENCHANNEL._serialized_start = 8925 + _BATCHOPENCHANNEL._serialized_end = 9174 + _BATCHOPENCHANNELRESPONSE._serialized_start = 9176 + _BATCHOPENCHANNELRESPONSE._serialized_end = 9250 + _OPENCHANNELREQUEST._serialized_start = 9253 + _OPENCHANNELREQUEST._serialized_end = 9798 + _OPENSTATUSUPDATE._serialized_start = 9801 + _OPENSTATUSUPDATE._serialized_end = 9996 + _KEYLOCATOR._serialized_start = 9998 + _KEYLOCATOR._serialized_end = 10049 + _KEYDESCRIPTOR._serialized_start = 10051 + _KEYDESCRIPTOR._serialized_end = 10125 + _CHANPOINTSHIM._serialized_start = 10128 + _CHANPOINTSHIM._serialized_end = 10304 + _PSBTSHIM._serialized_start = 10306 + _PSBTSHIM._serialized_end = 10380 + _FUNDINGSHIM._serialized_start = 10382 + _FUNDINGSHIM._serialized_end = 10490 + _FUNDINGSHIMCANCEL._serialized_start = 10492 + _FUNDINGSHIMCANCEL._serialized_end = 10536 + _FUNDINGPSBTVERIFY._serialized_start = 10538 + _FUNDINGPSBTVERIFY._serialized_end = 10626 + _FUNDINGPSBTFINALIZE._serialized_start = 10628 + _FUNDINGPSBTFINALIZE._serialized_end = 10717 + _FUNDINGTRANSITIONMSG._serialized_start = 10720 + _FUNDINGTRANSITIONMSG._serialized_end = 10949 + _FUNDINGSTATESTEPRESP._serialized_start = 10951 + _FUNDINGSTATESTEPRESP._serialized_end = 10973 + _PENDINGHTLC._serialized_start = 10976 + _PENDINGHTLC._serialized_end = 11110 + _PENDINGCHANNELSREQUEST._serialized_start = 11112 + _PENDINGCHANNELSREQUEST._serialized_end = 11136 + _PENDINGCHANNELSRESPONSE._serialized_start = 11139 + _PENDINGCHANNELSRESPONSE._serialized_end = 12922 + _PENDINGCHANNELSRESPONSE_PENDINGCHANNEL._serialized_start = 11537 + _PENDINGCHANNELSRESPONSE_PENDINGCHANNEL._serialized_end = 11893 + _PENDINGCHANNELSRESPONSE_PENDINGOPENCHANNEL._serialized_start = 11896 + _PENDINGCHANNELSRESPONSE_PENDINGOPENCHANNEL._serialized_end = 12049 + _PENDINGCHANNELSRESPONSE_WAITINGCLOSECHANNEL._serialized_start = 12052 + _PENDINGCHANNELSRESPONSE_WAITINGCLOSECHANNEL._serialized_end = 12247 + _PENDINGCHANNELSRESPONSE_COMMITMENTS._serialized_start = 12250 + _PENDINGCHANNELSRESPONSE_COMMITMENTS._serialized_end = 12433 + _PENDINGCHANNELSRESPONSE_CLOSEDCHANNEL._serialized_start = 12435 + _PENDINGCHANNELSRESPONSE_CLOSEDCHANNEL._serialized_end = 12536 + _PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL._serialized_start = 12539 + _PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL._serialized_end = 12922 + _PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL_ANCHORSTATE._serialized_start = 12873 + _PENDINGCHANNELSRESPONSE_FORCECLOSEDCHANNEL_ANCHORSTATE._serialized_end = 12922 + _CHANNELEVENTSUBSCRIPTION._serialized_start = 12924 + _CHANNELEVENTSUBSCRIPTION._serialized_end = 12950 + _CHANNELEVENTUPDATE._serialized_start = 12953 + _CHANNELEVENTUPDATE._serialized_end = 13484 + _CHANNELEVENTUPDATE_UPDATETYPE._serialized_start = 13327 + _CHANNELEVENTUPDATE_UPDATETYPE._serialized_end = 13473 + _WALLETACCOUNTBALANCE._serialized_start = 13486 + _WALLETACCOUNTBALANCE._serialized_end = 13564 + _WALLETBALANCEREQUEST._serialized_start = 13566 + _WALLETBALANCEREQUEST._serialized_end = 13588 + _WALLETBALANCERESPONSE._serialized_start = 13591 + _WALLETBALANCERESPONSE._serialized_end = 13914 + _WALLETBALANCERESPONSE_ACCOUNTBALANCEENTRY._serialized_start = 13832 + _WALLETBALANCERESPONSE_ACCOUNTBALANCEENTRY._serialized_end = 13914 + _AMOUNT._serialized_start = 13916 + _AMOUNT._serialized_end = 13951 + _CHANNELBALANCEREQUEST._serialized_start = 13953 + _CHANNELBALANCEREQUEST._serialized_end = 13976 + _CHANNELBALANCERESPONSE._serialized_start = 13979 + _CHANNELBALANCERESPONSE._serialized_end = 14335 + _QUERYROUTESREQUEST._serialized_start = 14338 + _QUERYROUTESREQUEST._serialized_end = 14949 + _QUERYROUTESREQUEST_DESTCUSTOMRECORDSENTRY._serialized_start = 1558 + _QUERYROUTESREQUEST_DESTCUSTOMRECORDSENTRY._serialized_end = 1614 + _NODEPAIR._serialized_start = 14951 + _NODEPAIR._serialized_end = 14987 + _EDGELOCATOR._serialized_start = 14989 + _EDGELOCATOR._serialized_end = 15053 + _QUERYROUTESRESPONSE._serialized_start = 15055 + _QUERYROUTESRESPONSE._serialized_end = 15128 + _HOP._serialized_start = 15131 + _HOP._serialized_end = 15537 + _HOP_CUSTOMRECORDSENTRY._serialized_start = 15485 + _HOP_CUSTOMRECORDSENTRY._serialized_end = 15537 + _MPPRECORD._serialized_start = 15539 + _MPPRECORD._serialized_end = 15596 + _AMPRECORD._serialized_start = 15598 + _AMPRECORD._serialized_end = 15666 + _ROUTE._serialized_start = 15669 + _ROUTE._serialized_end = 15823 + _NODEINFOREQUEST._serialized_start = 15825 + _NODEINFOREQUEST._serialized_end = 15885 + _NODEINFO._serialized_start = 15888 + _NODEINFO._serialized_end = 16018 + _LIGHTNINGNODE._serialized_start = 16021 + _LIGHTNINGNODE._serialized_end = 16262 + _LIGHTNINGNODE_FEATURESENTRY._serialized_start = 6902 + _LIGHTNINGNODE_FEATURESENTRY._serialized_end = 6965 + _NODEADDRESS._serialized_start = 16264 + _NODEADDRESS._serialized_end = 16308 + _ROUTINGPOLICY._serialized_start = 16311 + _ROUTINGPOLICY._serialized_end = 16483 + _CHANNELEDGE._serialized_start = 16486 + _CHANNELEDGE._serialized_end = 16712 + _CHANNELGRAPHREQUEST._serialized_start = 16714 + _CHANNELGRAPHREQUEST._serialized_end = 16764 + _CHANNELGRAPH._serialized_start = 16766 + _CHANNELGRAPH._serialized_end = 16852 + _NODEMETRICSREQUEST._serialized_start = 16854 + _NODEMETRICSREQUEST._serialized_end = 16912 + _NODEMETRICSRESPONSE._serialized_start = 16915 + _NODEMETRICSRESPONSE._serialized_end = 17105 + _NODEMETRICSRESPONSE_BETWEENNESSCENTRALITYENTRY._serialized_start = 17025 + _NODEMETRICSRESPONSE_BETWEENNESSCENTRALITYENTRY._serialized_end = 17105 + _FLOATMETRIC._serialized_start = 17107 + _FLOATMETRIC._serialized_end = 17161 + _CHANINFOREQUEST._serialized_start = 17163 + _CHANINFOREQUEST._serialized_end = 17201 + _NETWORKINFOREQUEST._serialized_start = 17203 + _NETWORKINFOREQUEST._serialized_end = 17223 + _NETWORKINFO._serialized_start = 17226 + _NETWORKINFO._serialized_end = 17521 + _STOPREQUEST._serialized_start = 17523 + _STOPREQUEST._serialized_end = 17536 + _STOPRESPONSE._serialized_start = 17538 + _STOPRESPONSE._serialized_end = 17552 + _GRAPHTOPOLOGYSUBSCRIPTION._serialized_start = 17554 + _GRAPHTOPOLOGYSUBSCRIPTION._serialized_end = 17581 + _GRAPHTOPOLOGYUPDATE._serialized_start = 17584 + _GRAPHTOPOLOGYUPDATE._serialized_end = 17747 + _NODEUPDATE._serialized_start = 17750 + _NODEUPDATE._serialized_end = 18026 + _NODEUPDATE_FEATURESENTRY._serialized_start = 6902 + _NODEUPDATE_FEATURESENTRY._serialized_end = 6965 + _CHANNELEDGEUPDATE._serialized_start = 18029 + _CHANNELEDGEUPDATE._serialized_end = 18225 + _CLOSEDCHANNELUPDATE._serialized_start = 18227 + _CLOSEDCHANNELUPDATE._serialized_end = 18351 + _HOPHINT._serialized_start = 18354 + _HOPHINT._serialized_end = 18488 + _SETID._serialized_start = 18490 + _SETID._serialized_end = 18513 + _ROUTEHINT._serialized_start = 18515 + _ROUTEHINT._serialized_end = 18561 + _AMPINVOICESTATE._serialized_start = 18563 + _AMPINVOICESTATE._serialized_end = 18686 + _INVOICE._serialized_start = 18689 + _INVOICE._serialized_end = 19590 + _INVOICE_FEATURESENTRY._serialized_start = 6902 + _INVOICE_FEATURESENTRY._serialized_end = 6965 + _INVOICE_AMPINVOICESTATEENTRY._serialized_start = 19439 + _INVOICE_AMPINVOICESTATEENTRY._serialized_end = 19517 + _INVOICE_INVOICESTATE._serialized_start = 19519 + _INVOICE_INVOICESTATE._serialized_end = 19584 + _INVOICEHTLC._serialized_start = 19593 + _INVOICEHTLC._serialized_end = 19964 + _INVOICEHTLC_CUSTOMRECORDSENTRY._serialized_start = 15485 + _INVOICEHTLC_CUSTOMRECORDSENTRY._serialized_end = 15537 + _AMP._serialized_start = 19966 + _AMP._serialized_end = 20060 + _ADDINVOICERESPONSE._serialized_start = 20062 + _ADDINVOICERESPONSE._serialized_end = 20164 + _PAYMENTHASH._serialized_start = 20166 + _PAYMENTHASH._serialized_end = 20219 + _LISTINVOICEREQUEST._serialized_start = 20221 + _LISTINVOICEREQUEST._serialized_end = 20329 + _LISTINVOICERESPONSE._serialized_start = 20331 + _LISTINVOICERESPONSE._serialized_end = 20441 + _INVOICESUBSCRIPTION._serialized_start = 20443 + _INVOICESUBSCRIPTION._serialized_end = 20505 + _PAYMENT._serialized_start = 20508 + _PAYMENT._serialized_end = 20988 + _PAYMENT_PAYMENTSTATUS._serialized_start = 20912 + _PAYMENT_PAYMENTSTATUS._serialized_end = 20982 + _HTLCATTEMPT._serialized_start = 20991 + _HTLCATTEMPT._serialized_end = 21257 + _HTLCATTEMPT_HTLCSTATUS._serialized_start = 21203 + _HTLCATTEMPT_HTLCSTATUS._serialized_end = 21257 + _LISTPAYMENTSREQUEST._serialized_start = 21260 + _LISTPAYMENTSREQUEST._serialized_end = 21401 + _LISTPAYMENTSRESPONSE._serialized_start = 21404 + _LISTPAYMENTSRESPONSE._serialized_end = 21543 + _DELETEPAYMENTREQUEST._serialized_start = 21545 + _DELETEPAYMENTREQUEST._serialized_end = 21616 + _DELETEALLPAYMENTSREQUEST._serialized_start = 21618 + _DELETEALLPAYMENTSREQUEST._serialized_end = 21701 + _DELETEPAYMENTRESPONSE._serialized_start = 21703 + _DELETEPAYMENTRESPONSE._serialized_end = 21726 + _DELETEALLPAYMENTSRESPONSE._serialized_start = 21728 + _DELETEALLPAYMENTSRESPONSE._serialized_end = 21755 + _ABANDONCHANNELREQUEST._serialized_start = 21758 + _ABANDONCHANNELREQUEST._serialized_end = 21892 + _ABANDONCHANNELRESPONSE._serialized_start = 21894 + _ABANDONCHANNELRESPONSE._serialized_end = 21918 + _DEBUGLEVELREQUEST._serialized_start = 21920 + _DEBUGLEVELREQUEST._serialized_end = 21973 + _DEBUGLEVELRESPONSE._serialized_start = 21975 + _DEBUGLEVELRESPONSE._serialized_end = 22016 + _PAYREQSTRING._serialized_start = 22018 + _PAYREQSTRING._serialized_end = 22049 + _PAYREQ._serialized_start = 22052 + _PAYREQ._serialized_end = 22442 + _PAYREQ_FEATURESENTRY._serialized_start = 6902 + _PAYREQ_FEATURESENTRY._serialized_end = 6965 + _FEATURE._serialized_start = 22444 + _FEATURE._serialized_end = 22506 + _FEEREPORTREQUEST._serialized_start = 22508 + _FEEREPORTREQUEST._serialized_end = 22526 + _CHANNELFEEREPORT._serialized_start = 22528 + _CHANNELFEEREPORT._serialized_end = 22652 + _FEEREPORTRESPONSE._serialized_start = 22655 + _FEEREPORTRESPONSE._serialized_end = 22787 + _POLICYUPDATEREQUEST._serialized_start = 22790 + _POLICYUPDATEREQUEST._serialized_end = 23048 + _FAILEDUPDATE._serialized_start = 23050 + _FAILEDUPDATE._serialized_end = 23159 + _POLICYUPDATERESPONSE._serialized_start = 23161 + _POLICYUPDATERESPONSE._serialized_end = 23228 + _FORWARDINGHISTORYREQUEST._serialized_start = 23230 + _FORWARDINGHISTORYREQUEST._serialized_end = 23340 + _FORWARDINGEVENT._serialized_start = 23343 + _FORWARDINGEVENT._serialized_end = 23561 + _FORWARDINGHISTORYRESPONSE._serialized_start = 23563 + _FORWARDINGHISTORYRESPONSE._serialized_end = 23668 + _EXPORTCHANNELBACKUPREQUEST._serialized_start = 23670 + _EXPORTCHANNELBACKUPREQUEST._serialized_end = 23739 + _CHANNELBACKUP._serialized_start = 23741 + _CHANNELBACKUP._serialized_end = 23818 + _MULTICHANBACKUP._serialized_start = 23820 + _MULTICHANBACKUP._serialized_end = 23906 + _CHANBACKUPEXPORTREQUEST._serialized_start = 23908 + _CHANBACKUPEXPORTREQUEST._serialized_end = 23933 + _CHANBACKUPSNAPSHOT._serialized_start = 23935 + _CHANBACKUPSNAPSHOT._serialized_end = 24058 + _CHANNELBACKUPS._serialized_start = 24060 + _CHANNELBACKUPS._serialized_end = 24120 + _RESTORECHANBACKUPREQUEST._serialized_start = 24122 + _RESTORECHANBACKUPREQUEST._serialized_end = 24234 + _RESTOREBACKUPRESPONSE._serialized_start = 24236 + _RESTOREBACKUPRESPONSE._serialized_end = 24259 + _CHANNELBACKUPSUBSCRIPTION._serialized_start = 24261 + _CHANNELBACKUPSUBSCRIPTION._serialized_end = 24288 + _VERIFYCHANBACKUPRESPONSE._serialized_start = 24290 + _VERIFYCHANBACKUPRESPONSE._serialized_end = 24316 + _MACAROONPERMISSION._serialized_start = 24318 + _MACAROONPERMISSION._serialized_end = 24370 + _BAKEMACAROONREQUEST._serialized_start = 24372 + _BAKEMACAROONREQUEST._serialized_end = 24498 + _BAKEMACAROONRESPONSE._serialized_start = 24500 + _BAKEMACAROONRESPONSE._serialized_end = 24540 + _LISTMACAROONIDSREQUEST._serialized_start = 24542 + _LISTMACAROONIDSREQUEST._serialized_end = 24566 + _LISTMACAROONIDSRESPONSE._serialized_start = 24568 + _LISTMACAROONIDSRESPONSE._serialized_end = 24615 + _DELETEMACAROONIDREQUEST._serialized_start = 24617 + _DELETEMACAROONIDREQUEST._serialized_end = 24663 + _DELETEMACAROONIDRESPONSE._serialized_start = 24665 + _DELETEMACAROONIDRESPONSE._serialized_end = 24708 + _MACAROONPERMISSIONLIST._serialized_start = 24710 + _MACAROONPERMISSIONLIST._serialized_end = 24782 + _LISTPERMISSIONSREQUEST._serialized_start = 24784 + _LISTPERMISSIONSREQUEST._serialized_end = 24808 + _LISTPERMISSIONSRESPONSE._serialized_start = 24811 + _LISTPERMISSIONSRESPONSE._serialized_end = 25008 + _LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY._serialized_start = 24921 + _LISTPERMISSIONSRESPONSE_METHODPERMISSIONSENTRY._serialized_end = 25008 + _FAILURE._serialized_start = 25011 + _FAILURE._serialized_end = 25992 + _FAILURE_FAILURECODE._serialized_start = 25235 + _FAILURE_FAILURECODE._serialized_end = 25986 + _CHANNELUPDATE._serialized_start = 25995 + _CHANNELUPDATE._serialized_end = 26277 + _MACAROONID._serialized_start = 26279 + _MACAROONID._serialized_end = 26349 + _OP._serialized_start = 26351 + _OP._serialized_end = 26388 + _CHECKMACPERMREQUEST._serialized_start = 26390 + _CHECKMACPERMREQUEST._serialized_end = 26497 + _CHECKMACPERMRESPONSE._serialized_start = 26499 + _CHECKMACPERMRESPONSE._serialized_end = 26536 + _RPCMIDDLEWAREREQUEST._serialized_start = 26539 + _RPCMIDDLEWAREREQUEST._serialized_end = 26789 + _STREAMAUTH._serialized_start = 26791 + _STREAMAUTH._serialized_end = 26828 + _RPCMESSAGE._serialized_start = 26830 + _RPCMESSAGE._serialized_end = 26944 + _RPCMIDDLEWARERESPONSE._serialized_start = 26947 + _RPCMIDDLEWARERESPONSE._serialized_end = 27109 + _MIDDLEWAREREGISTRATION._serialized_start = 27111 + _MIDDLEWAREREGISTRATION._serialized_end = 27221 + _INTERCEPTFEEDBACK._serialized_start = 27223 + _INTERCEPTFEEDBACK._serialized_end = 27315 + _LIGHTNING._serialized_start = 29334 + _LIGHTNING._serialized_end = 34143 # @@protoc_insertion_point(module_scope) diff --git a/lnbits/wallets/lnd_grpc_files/router_pb2.py b/lnbits/wallets/lnd_grpc_files/router_pb2.py new file mode 100644 index 000000000..4237556bc --- /dev/null +++ b/lnbits/wallets/lnd_grpc_files/router_pb2.py @@ -0,0 +1,665 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: router.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import enum_type_wrapper + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +import lnbits.wallets.lnd_grpc_files.lightning_pb2 as lightning__pb2 + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n\x0crouter.proto\x12\trouterrpc\x1a\x0flightning.proto"\xb7\x05\n\x12SendPaymentRequest\x12\x0c\n\x04\x64\x65st\x18\x01 \x01(\x0c\x12\x0b\n\x03\x61mt\x18\x02 \x01(\x03\x12\x10\n\x08\x61mt_msat\x18\x0c \x01(\x03\x12\x14\n\x0cpayment_hash\x18\x03 \x01(\x0c\x12\x18\n\x10\x66inal_cltv_delta\x18\x04 \x01(\x05\x12\x14\n\x0cpayment_addr\x18\x14 \x01(\x0c\x12\x17\n\x0fpayment_request\x18\x05 \x01(\t\x12\x17\n\x0ftimeout_seconds\x18\x06 \x01(\x05\x12\x15\n\rfee_limit_sat\x18\x07 \x01(\x03\x12\x16\n\x0e\x66\x65\x65_limit_msat\x18\r \x01(\x03\x12\x1e\n\x10outgoing_chan_id\x18\x08 \x01(\x04\x42\x04\x18\x01\x30\x01\x12\x19\n\x11outgoing_chan_ids\x18\x13 \x03(\x04\x12\x17\n\x0flast_hop_pubkey\x18\x0e \x01(\x0c\x12\x12\n\ncltv_limit\x18\t \x01(\x05\x12%\n\x0broute_hints\x18\n \x03(\x0b\x32\x10.lnrpc.RouteHint\x12Q\n\x13\x64\x65st_custom_records\x18\x0b \x03(\x0b\x32\x34.routerrpc.SendPaymentRequest.DestCustomRecordsEntry\x12\x1a\n\x12\x61llow_self_payment\x18\x0f \x01(\x08\x12(\n\rdest_features\x18\x10 \x03(\x0e\x32\x11.lnrpc.FeatureBit\x12\x11\n\tmax_parts\x18\x11 \x01(\r\x12\x1b\n\x13no_inflight_updates\x18\x12 \x01(\x08\x12\x1b\n\x13max_shard_size_msat\x18\x15 \x01(\x04\x12\x0b\n\x03\x61mp\x18\x16 \x01(\x08\x12\x11\n\ttime_pref\x18\x17 \x01(\x01\x1a\x38\n\x16\x44\x65stCustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01"H\n\x13TrackPaymentRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x1b\n\x13no_inflight_updates\x18\x02 \x01(\x08"0\n\x0fRouteFeeRequest\x12\x0c\n\x04\x64\x65st\x18\x01 \x01(\x0c\x12\x0f\n\x07\x61mt_sat\x18\x02 \x01(\x03"E\n\x10RouteFeeResponse\x12\x18\n\x10routing_fee_msat\x18\x01 \x01(\x03\x12\x17\n\x0ftime_lock_delay\x18\x02 \x01(\x03"^\n\x12SendToRouteRequest\x12\x14\n\x0cpayment_hash\x18\x01 \x01(\x0c\x12\x1b\n\x05route\x18\x02 \x01(\x0b\x32\x0c.lnrpc.Route\x12\x15\n\rskip_temp_err\x18\x03 \x01(\x08"H\n\x13SendToRouteResponse\x12\x10\n\x08preimage\x18\x01 \x01(\x0c\x12\x1f\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32\x0e.lnrpc.Failure"\x1c\n\x1aResetMissionControlRequest"\x1d\n\x1bResetMissionControlResponse"\x1c\n\x1aQueryMissionControlRequest"J\n\x1bQueryMissionControlResponse\x12%\n\x05pairs\x18\x02 \x03(\x0b\x32\x16.routerrpc.PairHistoryJ\x04\x08\x01\x10\x02"T\n\x1cXImportMissionControlRequest\x12%\n\x05pairs\x18\x01 \x03(\x0b\x32\x16.routerrpc.PairHistory\x12\r\n\x05\x66orce\x18\x02 \x01(\x08"\x1f\n\x1dXImportMissionControlResponse"o\n\x0bPairHistory\x12\x11\n\tnode_from\x18\x01 \x01(\x0c\x12\x0f\n\x07node_to\x18\x02 \x01(\x0c\x12$\n\x07history\x18\x07 \x01(\x0b\x32\x13.routerrpc.PairDataJ\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05J\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07"\x99\x01\n\x08PairData\x12\x11\n\tfail_time\x18\x01 \x01(\x03\x12\x14\n\x0c\x66\x61il_amt_sat\x18\x02 \x01(\x03\x12\x15\n\rfail_amt_msat\x18\x04 \x01(\x03\x12\x14\n\x0csuccess_time\x18\x05 \x01(\x03\x12\x17\n\x0fsuccess_amt_sat\x18\x06 \x01(\x03\x12\x18\n\x10success_amt_msat\x18\x07 \x01(\x03J\x04\x08\x03\x10\x04" \n\x1eGetMissionControlConfigRequest"R\n\x1fGetMissionControlConfigResponse\x12/\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x1f.routerrpc.MissionControlConfig"Q\n\x1eSetMissionControlConfigRequest\x12/\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x1f.routerrpc.MissionControlConfig"!\n\x1fSetMissionControlConfigResponse"\xa3\x01\n\x14MissionControlConfig\x12\x19\n\x11half_life_seconds\x18\x01 \x01(\x04\x12\x17\n\x0fhop_probability\x18\x02 \x01(\x02\x12\x0e\n\x06weight\x18\x03 \x01(\x02\x12\x1f\n\x17maximum_payment_results\x18\x04 \x01(\r\x12&\n\x1eminimum_failure_relax_interval\x18\x05 \x01(\x04"O\n\x17QueryProbabilityRequest\x12\x11\n\tfrom_node\x18\x01 \x01(\x0c\x12\x0f\n\x07to_node\x18\x02 \x01(\x0c\x12\x10\n\x08\x61mt_msat\x18\x03 \x01(\x03"U\n\x18QueryProbabilityResponse\x12\x13\n\x0bprobability\x18\x01 \x01(\x01\x12$\n\x07history\x18\x02 \x01(\x0b\x32\x13.routerrpc.PairData"\x88\x01\n\x11\x42uildRouteRequest\x12\x10\n\x08\x61mt_msat\x18\x01 \x01(\x03\x12\x18\n\x10\x66inal_cltv_delta\x18\x02 \x01(\x05\x12\x1c\n\x10outgoing_chan_id\x18\x03 \x01(\x04\x42\x02\x30\x01\x12\x13\n\x0bhop_pubkeys\x18\x04 \x03(\x0c\x12\x14\n\x0cpayment_addr\x18\x05 \x01(\x0c"1\n\x12\x42uildRouteResponse\x12\x1b\n\x05route\x18\x01 \x01(\x0b\x32\x0c.lnrpc.Route"\x1c\n\x1aSubscribeHtlcEventsRequest"\xdc\x03\n\tHtlcEvent\x12\x1b\n\x13incoming_channel_id\x18\x01 \x01(\x04\x12\x1b\n\x13outgoing_channel_id\x18\x02 \x01(\x04\x12\x18\n\x10incoming_htlc_id\x18\x03 \x01(\x04\x12\x18\n\x10outgoing_htlc_id\x18\x04 \x01(\x04\x12\x14\n\x0ctimestamp_ns\x18\x05 \x01(\x04\x12\x32\n\nevent_type\x18\x06 \x01(\x0e\x32\x1e.routerrpc.HtlcEvent.EventType\x12\x30\n\rforward_event\x18\x07 \x01(\x0b\x32\x17.routerrpc.ForwardEventH\x00\x12\x39\n\x12\x66orward_fail_event\x18\x08 \x01(\x0b\x32\x1b.routerrpc.ForwardFailEventH\x00\x12.\n\x0csettle_event\x18\t \x01(\x0b\x32\x16.routerrpc.SettleEventH\x00\x12\x33\n\x0flink_fail_event\x18\n \x01(\x0b\x32\x18.routerrpc.LinkFailEventH\x00"<\n\tEventType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04SEND\x10\x01\x12\x0b\n\x07RECEIVE\x10\x02\x12\x0b\n\x07\x46ORWARD\x10\x03\x42\x07\n\x05\x65vent"v\n\x08HtlcInfo\x12\x19\n\x11incoming_timelock\x18\x01 \x01(\r\x12\x19\n\x11outgoing_timelock\x18\x02 \x01(\r\x12\x19\n\x11incoming_amt_msat\x18\x03 \x01(\x04\x12\x19\n\x11outgoing_amt_msat\x18\x04 \x01(\x04"1\n\x0c\x46orwardEvent\x12!\n\x04info\x18\x01 \x01(\x0b\x32\x13.routerrpc.HtlcInfo"\x12\n\x10\x46orwardFailEvent"\x1f\n\x0bSettleEvent\x12\x10\n\x08preimage\x18\x01 \x01(\x0c"\xae\x01\n\rLinkFailEvent\x12!\n\x04info\x18\x01 \x01(\x0b\x32\x13.routerrpc.HtlcInfo\x12\x30\n\x0cwire_failure\x18\x02 \x01(\x0e\x32\x1a.lnrpc.Failure.FailureCode\x12\x30\n\x0e\x66\x61ilure_detail\x18\x03 \x01(\x0e\x32\x18.routerrpc.FailureDetail\x12\x16\n\x0e\x66\x61ilure_string\x18\x04 \x01(\t"r\n\rPaymentStatus\x12&\n\x05state\x18\x01 \x01(\x0e\x32\x17.routerrpc.PaymentState\x12\x10\n\x08preimage\x18\x02 \x01(\x0c\x12!\n\x05htlcs\x18\x04 \x03(\x0b\x32\x12.lnrpc.HTLCAttemptJ\x04\x08\x03\x10\x04".\n\nCircuitKey\x12\x0f\n\x07\x63han_id\x18\x01 \x01(\x04\x12\x0f\n\x07htlc_id\x18\x02 \x01(\x04"\x97\x03\n\x1b\x46orwardHtlcInterceptRequest\x12\x33\n\x14incoming_circuit_key\x18\x01 \x01(\x0b\x32\x15.routerrpc.CircuitKey\x12\x1c\n\x14incoming_amount_msat\x18\x05 \x01(\x04\x12\x17\n\x0fincoming_expiry\x18\x06 \x01(\r\x12\x14\n\x0cpayment_hash\x18\x02 \x01(\x0c\x12"\n\x1aoutgoing_requested_chan_id\x18\x07 \x01(\x04\x12\x1c\n\x14outgoing_amount_msat\x18\x03 \x01(\x04\x12\x17\n\x0foutgoing_expiry\x18\x04 \x01(\r\x12Q\n\x0e\x63ustom_records\x18\x08 \x03(\x0b\x32\x39.routerrpc.ForwardHtlcInterceptRequest.CustomRecordsEntry\x12\x12\n\nonion_blob\x18\t \x01(\x0c\x1a\x34\n\x12\x43ustomRecordsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01"\xe5\x01\n\x1c\x46orwardHtlcInterceptResponse\x12\x33\n\x14incoming_circuit_key\x18\x01 \x01(\x0b\x32\x15.routerrpc.CircuitKey\x12\x33\n\x06\x61\x63tion\x18\x02 \x01(\x0e\x32#.routerrpc.ResolveHoldForwardAction\x12\x10\n\x08preimage\x18\x03 \x01(\x0c\x12\x17\n\x0f\x66\x61ilure_message\x18\x04 \x01(\x0c\x12\x30\n\x0c\x66\x61ilure_code\x18\x05 \x01(\x0e\x32\x1a.lnrpc.Failure.FailureCode"o\n\x17UpdateChanStatusRequest\x12\'\n\nchan_point\x18\x01 \x01(\x0b\x32\x13.lnrpc.ChannelPoint\x12+\n\x06\x61\x63tion\x18\x02 \x01(\x0e\x32\x1b.routerrpc.ChanStatusAction"\x1a\n\x18UpdateChanStatusResponse*\x81\x04\n\rFailureDetail\x12\x0b\n\x07UNKNOWN\x10\x00\x12\r\n\tNO_DETAIL\x10\x01\x12\x10\n\x0cONION_DECODE\x10\x02\x12\x15\n\x11LINK_NOT_ELIGIBLE\x10\x03\x12\x14\n\x10ON_CHAIN_TIMEOUT\x10\x04\x12\x14\n\x10HTLC_EXCEEDS_MAX\x10\x05\x12\x18\n\x14INSUFFICIENT_BALANCE\x10\x06\x12\x16\n\x12INCOMPLETE_FORWARD\x10\x07\x12\x13\n\x0fHTLC_ADD_FAILED\x10\x08\x12\x15\n\x11\x46ORWARDS_DISABLED\x10\t\x12\x14\n\x10INVOICE_CANCELED\x10\n\x12\x15\n\x11INVOICE_UNDERPAID\x10\x0b\x12\x1b\n\x17INVOICE_EXPIRY_TOO_SOON\x10\x0c\x12\x14\n\x10INVOICE_NOT_OPEN\x10\r\x12\x17\n\x13MPP_INVOICE_TIMEOUT\x10\x0e\x12\x14\n\x10\x41\x44\x44RESS_MISMATCH\x10\x0f\x12\x16\n\x12SET_TOTAL_MISMATCH\x10\x10\x12\x15\n\x11SET_TOTAL_TOO_LOW\x10\x11\x12\x10\n\x0cSET_OVERPAID\x10\x12\x12\x13\n\x0fUNKNOWN_INVOICE\x10\x13\x12\x13\n\x0fINVALID_KEYSEND\x10\x14\x12\x13\n\x0fMPP_IN_PROGRESS\x10\x15\x12\x12\n\x0e\x43IRCULAR_ROUTE\x10\x16*\xae\x01\n\x0cPaymentState\x12\r\n\tIN_FLIGHT\x10\x00\x12\r\n\tSUCCEEDED\x10\x01\x12\x12\n\x0e\x46\x41ILED_TIMEOUT\x10\x02\x12\x13\n\x0f\x46\x41ILED_NO_ROUTE\x10\x03\x12\x10\n\x0c\x46\x41ILED_ERROR\x10\x04\x12$\n FAILED_INCORRECT_PAYMENT_DETAILS\x10\x05\x12\x1f\n\x1b\x46\x41ILED_INSUFFICIENT_BALANCE\x10\x06*<\n\x18ResolveHoldForwardAction\x12\n\n\x06SETTLE\x10\x00\x12\x08\n\x04\x46\x41IL\x10\x01\x12\n\n\x06RESUME\x10\x02*5\n\x10\x43hanStatusAction\x12\n\n\x06\x45NABLE\x10\x00\x12\x0b\n\x07\x44ISABLE\x10\x01\x12\x08\n\x04\x41UTO\x10\x02\x32\xf1\x0b\n\x06Router\x12@\n\rSendPaymentV2\x12\x1d.routerrpc.SendPaymentRequest\x1a\x0e.lnrpc.Payment0\x01\x12\x42\n\x0eTrackPaymentV2\x12\x1e.routerrpc.TrackPaymentRequest\x1a\x0e.lnrpc.Payment0\x01\x12K\n\x10\x45stimateRouteFee\x12\x1a.routerrpc.RouteFeeRequest\x1a\x1b.routerrpc.RouteFeeResponse\x12Q\n\x0bSendToRoute\x12\x1d.routerrpc.SendToRouteRequest\x1a\x1e.routerrpc.SendToRouteResponse"\x03\x88\x02\x01\x12\x42\n\rSendToRouteV2\x12\x1d.routerrpc.SendToRouteRequest\x1a\x12.lnrpc.HTLCAttempt\x12\x64\n\x13ResetMissionControl\x12%.routerrpc.ResetMissionControlRequest\x1a&.routerrpc.ResetMissionControlResponse\x12\x64\n\x13QueryMissionControl\x12%.routerrpc.QueryMissionControlRequest\x1a&.routerrpc.QueryMissionControlResponse\x12j\n\x15XImportMissionControl\x12\'.routerrpc.XImportMissionControlRequest\x1a(.routerrpc.XImportMissionControlResponse\x12p\n\x17GetMissionControlConfig\x12).routerrpc.GetMissionControlConfigRequest\x1a*.routerrpc.GetMissionControlConfigResponse\x12p\n\x17SetMissionControlConfig\x12).routerrpc.SetMissionControlConfigRequest\x1a*.routerrpc.SetMissionControlConfigResponse\x12[\n\x10QueryProbability\x12".routerrpc.QueryProbabilityRequest\x1a#.routerrpc.QueryProbabilityResponse\x12I\n\nBuildRoute\x12\x1c.routerrpc.BuildRouteRequest\x1a\x1d.routerrpc.BuildRouteResponse\x12T\n\x13SubscribeHtlcEvents\x12%.routerrpc.SubscribeHtlcEventsRequest\x1a\x14.routerrpc.HtlcEvent0\x01\x12M\n\x0bSendPayment\x12\x1d.routerrpc.SendPaymentRequest\x1a\x18.routerrpc.PaymentStatus"\x03\x88\x02\x01\x30\x01\x12O\n\x0cTrackPayment\x12\x1e.routerrpc.TrackPaymentRequest\x1a\x18.routerrpc.PaymentStatus"\x03\x88\x02\x01\x30\x01\x12\x66\n\x0fHtlcInterceptor\x12\'.routerrpc.ForwardHtlcInterceptResponse\x1a&.routerrpc.ForwardHtlcInterceptRequest(\x01\x30\x01\x12[\n\x10UpdateChanStatus\x12".routerrpc.UpdateChanStatusRequest\x1a#.routerrpc.UpdateChanStatusResponseB1Z/github.com/lightningnetwork/lnd/lnrpc/routerrpcb\x06proto3' +) + +_FAILUREDETAIL = DESCRIPTOR.enum_types_by_name["FailureDetail"] +FailureDetail = enum_type_wrapper.EnumTypeWrapper(_FAILUREDETAIL) +_PAYMENTSTATE = DESCRIPTOR.enum_types_by_name["PaymentState"] +PaymentState = enum_type_wrapper.EnumTypeWrapper(_PAYMENTSTATE) +_RESOLVEHOLDFORWARDACTION = DESCRIPTOR.enum_types_by_name["ResolveHoldForwardAction"] +ResolveHoldForwardAction = enum_type_wrapper.EnumTypeWrapper(_RESOLVEHOLDFORWARDACTION) +_CHANSTATUSACTION = DESCRIPTOR.enum_types_by_name["ChanStatusAction"] +ChanStatusAction = enum_type_wrapper.EnumTypeWrapper(_CHANSTATUSACTION) +UNKNOWN = 0 +NO_DETAIL = 1 +ONION_DECODE = 2 +LINK_NOT_ELIGIBLE = 3 +ON_CHAIN_TIMEOUT = 4 +HTLC_EXCEEDS_MAX = 5 +INSUFFICIENT_BALANCE = 6 +INCOMPLETE_FORWARD = 7 +HTLC_ADD_FAILED = 8 +FORWARDS_DISABLED = 9 +INVOICE_CANCELED = 10 +INVOICE_UNDERPAID = 11 +INVOICE_EXPIRY_TOO_SOON = 12 +INVOICE_NOT_OPEN = 13 +MPP_INVOICE_TIMEOUT = 14 +ADDRESS_MISMATCH = 15 +SET_TOTAL_MISMATCH = 16 +SET_TOTAL_TOO_LOW = 17 +SET_OVERPAID = 18 +UNKNOWN_INVOICE = 19 +INVALID_KEYSEND = 20 +MPP_IN_PROGRESS = 21 +CIRCULAR_ROUTE = 22 +IN_FLIGHT = 0 +SUCCEEDED = 1 +FAILED_TIMEOUT = 2 +FAILED_NO_ROUTE = 3 +FAILED_ERROR = 4 +FAILED_INCORRECT_PAYMENT_DETAILS = 5 +FAILED_INSUFFICIENT_BALANCE = 6 +SETTLE = 0 +FAIL = 1 +RESUME = 2 +ENABLE = 0 +DISABLE = 1 +AUTO = 2 + + +_SENDPAYMENTREQUEST = DESCRIPTOR.message_types_by_name["SendPaymentRequest"] +_SENDPAYMENTREQUEST_DESTCUSTOMRECORDSENTRY = _SENDPAYMENTREQUEST.nested_types_by_name[ + "DestCustomRecordsEntry" +] +_TRACKPAYMENTREQUEST = DESCRIPTOR.message_types_by_name["TrackPaymentRequest"] +_ROUTEFEEREQUEST = DESCRIPTOR.message_types_by_name["RouteFeeRequest"] +_ROUTEFEERESPONSE = DESCRIPTOR.message_types_by_name["RouteFeeResponse"] +_SENDTOROUTEREQUEST = DESCRIPTOR.message_types_by_name["SendToRouteRequest"] +_SENDTOROUTERESPONSE = DESCRIPTOR.message_types_by_name["SendToRouteResponse"] +_RESETMISSIONCONTROLREQUEST = DESCRIPTOR.message_types_by_name[ + "ResetMissionControlRequest" +] +_RESETMISSIONCONTROLRESPONSE = DESCRIPTOR.message_types_by_name[ + "ResetMissionControlResponse" +] +_QUERYMISSIONCONTROLREQUEST = DESCRIPTOR.message_types_by_name[ + "QueryMissionControlRequest" +] +_QUERYMISSIONCONTROLRESPONSE = DESCRIPTOR.message_types_by_name[ + "QueryMissionControlResponse" +] +_XIMPORTMISSIONCONTROLREQUEST = DESCRIPTOR.message_types_by_name[ + "XImportMissionControlRequest" +] +_XIMPORTMISSIONCONTROLRESPONSE = DESCRIPTOR.message_types_by_name[ + "XImportMissionControlResponse" +] +_PAIRHISTORY = DESCRIPTOR.message_types_by_name["PairHistory"] +_PAIRDATA = DESCRIPTOR.message_types_by_name["PairData"] +_GETMISSIONCONTROLCONFIGREQUEST = DESCRIPTOR.message_types_by_name[ + "GetMissionControlConfigRequest" +] +_GETMISSIONCONTROLCONFIGRESPONSE = DESCRIPTOR.message_types_by_name[ + "GetMissionControlConfigResponse" +] +_SETMISSIONCONTROLCONFIGREQUEST = DESCRIPTOR.message_types_by_name[ + "SetMissionControlConfigRequest" +] +_SETMISSIONCONTROLCONFIGRESPONSE = DESCRIPTOR.message_types_by_name[ + "SetMissionControlConfigResponse" +] +_MISSIONCONTROLCONFIG = DESCRIPTOR.message_types_by_name["MissionControlConfig"] +_QUERYPROBABILITYREQUEST = DESCRIPTOR.message_types_by_name["QueryProbabilityRequest"] +_QUERYPROBABILITYRESPONSE = DESCRIPTOR.message_types_by_name["QueryProbabilityResponse"] +_BUILDROUTEREQUEST = DESCRIPTOR.message_types_by_name["BuildRouteRequest"] +_BUILDROUTERESPONSE = DESCRIPTOR.message_types_by_name["BuildRouteResponse"] +_SUBSCRIBEHTLCEVENTSREQUEST = DESCRIPTOR.message_types_by_name[ + "SubscribeHtlcEventsRequest" +] +_HTLCEVENT = DESCRIPTOR.message_types_by_name["HtlcEvent"] +_HTLCINFO = DESCRIPTOR.message_types_by_name["HtlcInfo"] +_FORWARDEVENT = DESCRIPTOR.message_types_by_name["ForwardEvent"] +_FORWARDFAILEVENT = DESCRIPTOR.message_types_by_name["ForwardFailEvent"] +_SETTLEEVENT = DESCRIPTOR.message_types_by_name["SettleEvent"] +_LINKFAILEVENT = DESCRIPTOR.message_types_by_name["LinkFailEvent"] +_PAYMENTSTATUS = DESCRIPTOR.message_types_by_name["PaymentStatus"] +_CIRCUITKEY = DESCRIPTOR.message_types_by_name["CircuitKey"] +_FORWARDHTLCINTERCEPTREQUEST = DESCRIPTOR.message_types_by_name[ + "ForwardHtlcInterceptRequest" +] +_FORWARDHTLCINTERCEPTREQUEST_CUSTOMRECORDSENTRY = ( + _FORWARDHTLCINTERCEPTREQUEST.nested_types_by_name["CustomRecordsEntry"] +) +_FORWARDHTLCINTERCEPTRESPONSE = DESCRIPTOR.message_types_by_name[ + "ForwardHtlcInterceptResponse" +] +_UPDATECHANSTATUSREQUEST = DESCRIPTOR.message_types_by_name["UpdateChanStatusRequest"] +_UPDATECHANSTATUSRESPONSE = DESCRIPTOR.message_types_by_name["UpdateChanStatusResponse"] +_HTLCEVENT_EVENTTYPE = _HTLCEVENT.enum_types_by_name["EventType"] +SendPaymentRequest = _reflection.GeneratedProtocolMessageType( + "SendPaymentRequest", + (_message.Message,), + { + "DestCustomRecordsEntry": _reflection.GeneratedProtocolMessageType( + "DestCustomRecordsEntry", + (_message.Message,), + { + "DESCRIPTOR": _SENDPAYMENTREQUEST_DESTCUSTOMRECORDSENTRY, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.SendPaymentRequest.DestCustomRecordsEntry) + }, + ), + "DESCRIPTOR": _SENDPAYMENTREQUEST, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.SendPaymentRequest) + }, +) +_sym_db.RegisterMessage(SendPaymentRequest) +_sym_db.RegisterMessage(SendPaymentRequest.DestCustomRecordsEntry) + +TrackPaymentRequest = _reflection.GeneratedProtocolMessageType( + "TrackPaymentRequest", + (_message.Message,), + { + "DESCRIPTOR": _TRACKPAYMENTREQUEST, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.TrackPaymentRequest) + }, +) +_sym_db.RegisterMessage(TrackPaymentRequest) + +RouteFeeRequest = _reflection.GeneratedProtocolMessageType( + "RouteFeeRequest", + (_message.Message,), + { + "DESCRIPTOR": _ROUTEFEEREQUEST, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.RouteFeeRequest) + }, +) +_sym_db.RegisterMessage(RouteFeeRequest) + +RouteFeeResponse = _reflection.GeneratedProtocolMessageType( + "RouteFeeResponse", + (_message.Message,), + { + "DESCRIPTOR": _ROUTEFEERESPONSE, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.RouteFeeResponse) + }, +) +_sym_db.RegisterMessage(RouteFeeResponse) + +SendToRouteRequest = _reflection.GeneratedProtocolMessageType( + "SendToRouteRequest", + (_message.Message,), + { + "DESCRIPTOR": _SENDTOROUTEREQUEST, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.SendToRouteRequest) + }, +) +_sym_db.RegisterMessage(SendToRouteRequest) + +SendToRouteResponse = _reflection.GeneratedProtocolMessageType( + "SendToRouteResponse", + (_message.Message,), + { + "DESCRIPTOR": _SENDTOROUTERESPONSE, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.SendToRouteResponse) + }, +) +_sym_db.RegisterMessage(SendToRouteResponse) + +ResetMissionControlRequest = _reflection.GeneratedProtocolMessageType( + "ResetMissionControlRequest", + (_message.Message,), + { + "DESCRIPTOR": _RESETMISSIONCONTROLREQUEST, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.ResetMissionControlRequest) + }, +) +_sym_db.RegisterMessage(ResetMissionControlRequest) + +ResetMissionControlResponse = _reflection.GeneratedProtocolMessageType( + "ResetMissionControlResponse", + (_message.Message,), + { + "DESCRIPTOR": _RESETMISSIONCONTROLRESPONSE, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.ResetMissionControlResponse) + }, +) +_sym_db.RegisterMessage(ResetMissionControlResponse) + +QueryMissionControlRequest = _reflection.GeneratedProtocolMessageType( + "QueryMissionControlRequest", + (_message.Message,), + { + "DESCRIPTOR": _QUERYMISSIONCONTROLREQUEST, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.QueryMissionControlRequest) + }, +) +_sym_db.RegisterMessage(QueryMissionControlRequest) + +QueryMissionControlResponse = _reflection.GeneratedProtocolMessageType( + "QueryMissionControlResponse", + (_message.Message,), + { + "DESCRIPTOR": _QUERYMISSIONCONTROLRESPONSE, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.QueryMissionControlResponse) + }, +) +_sym_db.RegisterMessage(QueryMissionControlResponse) + +XImportMissionControlRequest = _reflection.GeneratedProtocolMessageType( + "XImportMissionControlRequest", + (_message.Message,), + { + "DESCRIPTOR": _XIMPORTMISSIONCONTROLREQUEST, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.XImportMissionControlRequest) + }, +) +_sym_db.RegisterMessage(XImportMissionControlRequest) + +XImportMissionControlResponse = _reflection.GeneratedProtocolMessageType( + "XImportMissionControlResponse", + (_message.Message,), + { + "DESCRIPTOR": _XIMPORTMISSIONCONTROLRESPONSE, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.XImportMissionControlResponse) + }, +) +_sym_db.RegisterMessage(XImportMissionControlResponse) + +PairHistory = _reflection.GeneratedProtocolMessageType( + "PairHistory", + (_message.Message,), + { + "DESCRIPTOR": _PAIRHISTORY, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.PairHistory) + }, +) +_sym_db.RegisterMessage(PairHistory) + +PairData = _reflection.GeneratedProtocolMessageType( + "PairData", + (_message.Message,), + { + "DESCRIPTOR": _PAIRDATA, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.PairData) + }, +) +_sym_db.RegisterMessage(PairData) + +GetMissionControlConfigRequest = _reflection.GeneratedProtocolMessageType( + "GetMissionControlConfigRequest", + (_message.Message,), + { + "DESCRIPTOR": _GETMISSIONCONTROLCONFIGREQUEST, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.GetMissionControlConfigRequest) + }, +) +_sym_db.RegisterMessage(GetMissionControlConfigRequest) + +GetMissionControlConfigResponse = _reflection.GeneratedProtocolMessageType( + "GetMissionControlConfigResponse", + (_message.Message,), + { + "DESCRIPTOR": _GETMISSIONCONTROLCONFIGRESPONSE, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.GetMissionControlConfigResponse) + }, +) +_sym_db.RegisterMessage(GetMissionControlConfigResponse) + +SetMissionControlConfigRequest = _reflection.GeneratedProtocolMessageType( + "SetMissionControlConfigRequest", + (_message.Message,), + { + "DESCRIPTOR": _SETMISSIONCONTROLCONFIGREQUEST, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.SetMissionControlConfigRequest) + }, +) +_sym_db.RegisterMessage(SetMissionControlConfigRequest) + +SetMissionControlConfigResponse = _reflection.GeneratedProtocolMessageType( + "SetMissionControlConfigResponse", + (_message.Message,), + { + "DESCRIPTOR": _SETMISSIONCONTROLCONFIGRESPONSE, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.SetMissionControlConfigResponse) + }, +) +_sym_db.RegisterMessage(SetMissionControlConfigResponse) + +MissionControlConfig = _reflection.GeneratedProtocolMessageType( + "MissionControlConfig", + (_message.Message,), + { + "DESCRIPTOR": _MISSIONCONTROLCONFIG, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.MissionControlConfig) + }, +) +_sym_db.RegisterMessage(MissionControlConfig) + +QueryProbabilityRequest = _reflection.GeneratedProtocolMessageType( + "QueryProbabilityRequest", + (_message.Message,), + { + "DESCRIPTOR": _QUERYPROBABILITYREQUEST, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.QueryProbabilityRequest) + }, +) +_sym_db.RegisterMessage(QueryProbabilityRequest) + +QueryProbabilityResponse = _reflection.GeneratedProtocolMessageType( + "QueryProbabilityResponse", + (_message.Message,), + { + "DESCRIPTOR": _QUERYPROBABILITYRESPONSE, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.QueryProbabilityResponse) + }, +) +_sym_db.RegisterMessage(QueryProbabilityResponse) + +BuildRouteRequest = _reflection.GeneratedProtocolMessageType( + "BuildRouteRequest", + (_message.Message,), + { + "DESCRIPTOR": _BUILDROUTEREQUEST, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.BuildRouteRequest) + }, +) +_sym_db.RegisterMessage(BuildRouteRequest) + +BuildRouteResponse = _reflection.GeneratedProtocolMessageType( + "BuildRouteResponse", + (_message.Message,), + { + "DESCRIPTOR": _BUILDROUTERESPONSE, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.BuildRouteResponse) + }, +) +_sym_db.RegisterMessage(BuildRouteResponse) + +SubscribeHtlcEventsRequest = _reflection.GeneratedProtocolMessageType( + "SubscribeHtlcEventsRequest", + (_message.Message,), + { + "DESCRIPTOR": _SUBSCRIBEHTLCEVENTSREQUEST, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.SubscribeHtlcEventsRequest) + }, +) +_sym_db.RegisterMessage(SubscribeHtlcEventsRequest) + +HtlcEvent = _reflection.GeneratedProtocolMessageType( + "HtlcEvent", + (_message.Message,), + { + "DESCRIPTOR": _HTLCEVENT, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.HtlcEvent) + }, +) +_sym_db.RegisterMessage(HtlcEvent) + +HtlcInfo = _reflection.GeneratedProtocolMessageType( + "HtlcInfo", + (_message.Message,), + { + "DESCRIPTOR": _HTLCINFO, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.HtlcInfo) + }, +) +_sym_db.RegisterMessage(HtlcInfo) + +ForwardEvent = _reflection.GeneratedProtocolMessageType( + "ForwardEvent", + (_message.Message,), + { + "DESCRIPTOR": _FORWARDEVENT, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.ForwardEvent) + }, +) +_sym_db.RegisterMessage(ForwardEvent) + +ForwardFailEvent = _reflection.GeneratedProtocolMessageType( + "ForwardFailEvent", + (_message.Message,), + { + "DESCRIPTOR": _FORWARDFAILEVENT, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.ForwardFailEvent) + }, +) +_sym_db.RegisterMessage(ForwardFailEvent) + +SettleEvent = _reflection.GeneratedProtocolMessageType( + "SettleEvent", + (_message.Message,), + { + "DESCRIPTOR": _SETTLEEVENT, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.SettleEvent) + }, +) +_sym_db.RegisterMessage(SettleEvent) + +LinkFailEvent = _reflection.GeneratedProtocolMessageType( + "LinkFailEvent", + (_message.Message,), + { + "DESCRIPTOR": _LINKFAILEVENT, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.LinkFailEvent) + }, +) +_sym_db.RegisterMessage(LinkFailEvent) + +PaymentStatus = _reflection.GeneratedProtocolMessageType( + "PaymentStatus", + (_message.Message,), + { + "DESCRIPTOR": _PAYMENTSTATUS, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.PaymentStatus) + }, +) +_sym_db.RegisterMessage(PaymentStatus) + +CircuitKey = _reflection.GeneratedProtocolMessageType( + "CircuitKey", + (_message.Message,), + { + "DESCRIPTOR": _CIRCUITKEY, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.CircuitKey) + }, +) +_sym_db.RegisterMessage(CircuitKey) + +ForwardHtlcInterceptRequest = _reflection.GeneratedProtocolMessageType( + "ForwardHtlcInterceptRequest", + (_message.Message,), + { + "CustomRecordsEntry": _reflection.GeneratedProtocolMessageType( + "CustomRecordsEntry", + (_message.Message,), + { + "DESCRIPTOR": _FORWARDHTLCINTERCEPTREQUEST_CUSTOMRECORDSENTRY, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.ForwardHtlcInterceptRequest.CustomRecordsEntry) + }, + ), + "DESCRIPTOR": _FORWARDHTLCINTERCEPTREQUEST, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.ForwardHtlcInterceptRequest) + }, +) +_sym_db.RegisterMessage(ForwardHtlcInterceptRequest) +_sym_db.RegisterMessage(ForwardHtlcInterceptRequest.CustomRecordsEntry) + +ForwardHtlcInterceptResponse = _reflection.GeneratedProtocolMessageType( + "ForwardHtlcInterceptResponse", + (_message.Message,), + { + "DESCRIPTOR": _FORWARDHTLCINTERCEPTRESPONSE, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.ForwardHtlcInterceptResponse) + }, +) +_sym_db.RegisterMessage(ForwardHtlcInterceptResponse) + +UpdateChanStatusRequest = _reflection.GeneratedProtocolMessageType( + "UpdateChanStatusRequest", + (_message.Message,), + { + "DESCRIPTOR": _UPDATECHANSTATUSREQUEST, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.UpdateChanStatusRequest) + }, +) +_sym_db.RegisterMessage(UpdateChanStatusRequest) + +UpdateChanStatusResponse = _reflection.GeneratedProtocolMessageType( + "UpdateChanStatusResponse", + (_message.Message,), + { + "DESCRIPTOR": _UPDATECHANSTATUSRESPONSE, + "__module__": "router_pb2" + # @@protoc_insertion_point(class_scope:routerrpc.UpdateChanStatusResponse) + }, +) +_sym_db.RegisterMessage(UpdateChanStatusResponse) + +_ROUTER = DESCRIPTOR.services_by_name["Router"] +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = ( + b"Z/github.com/lightningnetwork/lnd/lnrpc/routerrpc" + ) + _SENDPAYMENTREQUEST_DESTCUSTOMRECORDSENTRY._options = None + _SENDPAYMENTREQUEST_DESTCUSTOMRECORDSENTRY._serialized_options = b"8\001" + _SENDPAYMENTREQUEST.fields_by_name["outgoing_chan_id"]._options = None + _SENDPAYMENTREQUEST.fields_by_name[ + "outgoing_chan_id" + ]._serialized_options = b"\030\0010\001" + _BUILDROUTEREQUEST.fields_by_name["outgoing_chan_id"]._options = None + _BUILDROUTEREQUEST.fields_by_name["outgoing_chan_id"]._serialized_options = b"0\001" + _FORWARDHTLCINTERCEPTREQUEST_CUSTOMRECORDSENTRY._options = None + _FORWARDHTLCINTERCEPTREQUEST_CUSTOMRECORDSENTRY._serialized_options = b"8\001" + _ROUTER.methods_by_name["SendToRoute"]._options = None + _ROUTER.methods_by_name["SendToRoute"]._serialized_options = b"\210\002\001" + _ROUTER.methods_by_name["SendPayment"]._options = None + _ROUTER.methods_by_name["SendPayment"]._serialized_options = b"\210\002\001" + _ROUTER.methods_by_name["TrackPayment"]._options = None + _ROUTER.methods_by_name["TrackPayment"]._serialized_options = b"\210\002\001" + _FAILUREDETAIL._serialized_start = 4280 + _FAILUREDETAIL._serialized_end = 4793 + _PAYMENTSTATE._serialized_start = 4796 + _PAYMENTSTATE._serialized_end = 4970 + _RESOLVEHOLDFORWARDACTION._serialized_start = 4972 + _RESOLVEHOLDFORWARDACTION._serialized_end = 5032 + _CHANSTATUSACTION._serialized_start = 5034 + _CHANSTATUSACTION._serialized_end = 5087 + _SENDPAYMENTREQUEST._serialized_start = 45 + _SENDPAYMENTREQUEST._serialized_end = 740 + _SENDPAYMENTREQUEST_DESTCUSTOMRECORDSENTRY._serialized_start = 684 + _SENDPAYMENTREQUEST_DESTCUSTOMRECORDSENTRY._serialized_end = 740 + _TRACKPAYMENTREQUEST._serialized_start = 742 + _TRACKPAYMENTREQUEST._serialized_end = 814 + _ROUTEFEEREQUEST._serialized_start = 816 + _ROUTEFEEREQUEST._serialized_end = 864 + _ROUTEFEERESPONSE._serialized_start = 866 + _ROUTEFEERESPONSE._serialized_end = 935 + _SENDTOROUTEREQUEST._serialized_start = 937 + _SENDTOROUTEREQUEST._serialized_end = 1031 + _SENDTOROUTERESPONSE._serialized_start = 1033 + _SENDTOROUTERESPONSE._serialized_end = 1105 + _RESETMISSIONCONTROLREQUEST._serialized_start = 1107 + _RESETMISSIONCONTROLREQUEST._serialized_end = 1135 + _RESETMISSIONCONTROLRESPONSE._serialized_start = 1137 + _RESETMISSIONCONTROLRESPONSE._serialized_end = 1166 + _QUERYMISSIONCONTROLREQUEST._serialized_start = 1168 + _QUERYMISSIONCONTROLREQUEST._serialized_end = 1196 + _QUERYMISSIONCONTROLRESPONSE._serialized_start = 1198 + _QUERYMISSIONCONTROLRESPONSE._serialized_end = 1272 + _XIMPORTMISSIONCONTROLREQUEST._serialized_start = 1274 + _XIMPORTMISSIONCONTROLREQUEST._serialized_end = 1358 + _XIMPORTMISSIONCONTROLRESPONSE._serialized_start = 1360 + _XIMPORTMISSIONCONTROLRESPONSE._serialized_end = 1391 + _PAIRHISTORY._serialized_start = 1393 + _PAIRHISTORY._serialized_end = 1504 + _PAIRDATA._serialized_start = 1507 + _PAIRDATA._serialized_end = 1660 + _GETMISSIONCONTROLCONFIGREQUEST._serialized_start = 1662 + _GETMISSIONCONTROLCONFIGREQUEST._serialized_end = 1694 + _GETMISSIONCONTROLCONFIGRESPONSE._serialized_start = 1696 + _GETMISSIONCONTROLCONFIGRESPONSE._serialized_end = 1778 + _SETMISSIONCONTROLCONFIGREQUEST._serialized_start = 1780 + _SETMISSIONCONTROLCONFIGREQUEST._serialized_end = 1861 + _SETMISSIONCONTROLCONFIGRESPONSE._serialized_start = 1863 + _SETMISSIONCONTROLCONFIGRESPONSE._serialized_end = 1896 + _MISSIONCONTROLCONFIG._serialized_start = 1899 + _MISSIONCONTROLCONFIG._serialized_end = 2062 + _QUERYPROBABILITYREQUEST._serialized_start = 2064 + _QUERYPROBABILITYREQUEST._serialized_end = 2143 + _QUERYPROBABILITYRESPONSE._serialized_start = 2145 + _QUERYPROBABILITYRESPONSE._serialized_end = 2230 + _BUILDROUTEREQUEST._serialized_start = 2233 + _BUILDROUTEREQUEST._serialized_end = 2369 + _BUILDROUTERESPONSE._serialized_start = 2371 + _BUILDROUTERESPONSE._serialized_end = 2420 + _SUBSCRIBEHTLCEVENTSREQUEST._serialized_start = 2422 + _SUBSCRIBEHTLCEVENTSREQUEST._serialized_end = 2450 + _HTLCEVENT._serialized_start = 2453 + _HTLCEVENT._serialized_end = 2929 + _HTLCEVENT_EVENTTYPE._serialized_start = 2860 + _HTLCEVENT_EVENTTYPE._serialized_end = 2920 + _HTLCINFO._serialized_start = 2931 + _HTLCINFO._serialized_end = 3049 + _FORWARDEVENT._serialized_start = 3051 + _FORWARDEVENT._serialized_end = 3100 + _FORWARDFAILEVENT._serialized_start = 3102 + _FORWARDFAILEVENT._serialized_end = 3120 + _SETTLEEVENT._serialized_start = 3122 + _SETTLEEVENT._serialized_end = 3153 + _LINKFAILEVENT._serialized_start = 3156 + _LINKFAILEVENT._serialized_end = 3330 + _PAYMENTSTATUS._serialized_start = 3332 + _PAYMENTSTATUS._serialized_end = 3446 + _CIRCUITKEY._serialized_start = 3448 + _CIRCUITKEY._serialized_end = 3494 + _FORWARDHTLCINTERCEPTREQUEST._serialized_start = 3497 + _FORWARDHTLCINTERCEPTREQUEST._serialized_end = 3904 + _FORWARDHTLCINTERCEPTREQUEST_CUSTOMRECORDSENTRY._serialized_start = 3852 + _FORWARDHTLCINTERCEPTREQUEST_CUSTOMRECORDSENTRY._serialized_end = 3904 + _FORWARDHTLCINTERCEPTRESPONSE._serialized_start = 3907 + _FORWARDHTLCINTERCEPTRESPONSE._serialized_end = 4136 + _UPDATECHANSTATUSREQUEST._serialized_start = 4138 + _UPDATECHANSTATUSREQUEST._serialized_end = 4249 + _UPDATECHANSTATUSRESPONSE._serialized_start = 4251 + _UPDATECHANSTATUSRESPONSE._serialized_end = 4277 + _ROUTER._serialized_start = 5090 + _ROUTER._serialized_end = 6611 +# @@protoc_insertion_point(module_scope) diff --git a/lnbits/wallets/lnd_grpc_files/router_pb2_grpc.py b/lnbits/wallets/lnd_grpc_files/router_pb2_grpc.py new file mode 100644 index 000000000..32923a91e --- /dev/null +++ b/lnbits/wallets/lnd_grpc_files/router_pb2_grpc.py @@ -0,0 +1,871 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + +import lnbits.wallets.lnd_grpc_files.lightning_pb2 as lightning__pb2 +import lnbits.wallets.lnd_grpc_files.router_pb2 as router__pb2 + + +class RouterStub(object): + """Router is a service that offers advanced interaction with the router + subsystem of the daemon. + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.SendPaymentV2 = channel.unary_stream( + "/routerrpc.Router/SendPaymentV2", + request_serializer=router__pb2.SendPaymentRequest.SerializeToString, + response_deserializer=lightning__pb2.Payment.FromString, + ) + self.TrackPaymentV2 = channel.unary_stream( + "/routerrpc.Router/TrackPaymentV2", + request_serializer=router__pb2.TrackPaymentRequest.SerializeToString, + response_deserializer=lightning__pb2.Payment.FromString, + ) + self.EstimateRouteFee = channel.unary_unary( + "/routerrpc.Router/EstimateRouteFee", + request_serializer=router__pb2.RouteFeeRequest.SerializeToString, + response_deserializer=router__pb2.RouteFeeResponse.FromString, + ) + self.SendToRoute = channel.unary_unary( + "/routerrpc.Router/SendToRoute", + request_serializer=router__pb2.SendToRouteRequest.SerializeToString, + response_deserializer=router__pb2.SendToRouteResponse.FromString, + ) + self.SendToRouteV2 = channel.unary_unary( + "/routerrpc.Router/SendToRouteV2", + request_serializer=router__pb2.SendToRouteRequest.SerializeToString, + response_deserializer=lightning__pb2.HTLCAttempt.FromString, + ) + self.ResetMissionControl = channel.unary_unary( + "/routerrpc.Router/ResetMissionControl", + request_serializer=router__pb2.ResetMissionControlRequest.SerializeToString, + response_deserializer=router__pb2.ResetMissionControlResponse.FromString, + ) + self.QueryMissionControl = channel.unary_unary( + "/routerrpc.Router/QueryMissionControl", + request_serializer=router__pb2.QueryMissionControlRequest.SerializeToString, + response_deserializer=router__pb2.QueryMissionControlResponse.FromString, + ) + self.XImportMissionControl = channel.unary_unary( + "/routerrpc.Router/XImportMissionControl", + request_serializer=router__pb2.XImportMissionControlRequest.SerializeToString, + response_deserializer=router__pb2.XImportMissionControlResponse.FromString, + ) + self.GetMissionControlConfig = channel.unary_unary( + "/routerrpc.Router/GetMissionControlConfig", + request_serializer=router__pb2.GetMissionControlConfigRequest.SerializeToString, + response_deserializer=router__pb2.GetMissionControlConfigResponse.FromString, + ) + self.SetMissionControlConfig = channel.unary_unary( + "/routerrpc.Router/SetMissionControlConfig", + request_serializer=router__pb2.SetMissionControlConfigRequest.SerializeToString, + response_deserializer=router__pb2.SetMissionControlConfigResponse.FromString, + ) + self.QueryProbability = channel.unary_unary( + "/routerrpc.Router/QueryProbability", + request_serializer=router__pb2.QueryProbabilityRequest.SerializeToString, + response_deserializer=router__pb2.QueryProbabilityResponse.FromString, + ) + self.BuildRoute = channel.unary_unary( + "/routerrpc.Router/BuildRoute", + request_serializer=router__pb2.BuildRouteRequest.SerializeToString, + response_deserializer=router__pb2.BuildRouteResponse.FromString, + ) + self.SubscribeHtlcEvents = channel.unary_stream( + "/routerrpc.Router/SubscribeHtlcEvents", + request_serializer=router__pb2.SubscribeHtlcEventsRequest.SerializeToString, + response_deserializer=router__pb2.HtlcEvent.FromString, + ) + self.SendPayment = channel.unary_stream( + "/routerrpc.Router/SendPayment", + request_serializer=router__pb2.SendPaymentRequest.SerializeToString, + response_deserializer=router__pb2.PaymentStatus.FromString, + ) + self.TrackPayment = channel.unary_stream( + "/routerrpc.Router/TrackPayment", + request_serializer=router__pb2.TrackPaymentRequest.SerializeToString, + response_deserializer=router__pb2.PaymentStatus.FromString, + ) + self.HtlcInterceptor = channel.stream_stream( + "/routerrpc.Router/HtlcInterceptor", + request_serializer=router__pb2.ForwardHtlcInterceptResponse.SerializeToString, + response_deserializer=router__pb2.ForwardHtlcInterceptRequest.FromString, + ) + self.UpdateChanStatus = channel.unary_unary( + "/routerrpc.Router/UpdateChanStatus", + request_serializer=router__pb2.UpdateChanStatusRequest.SerializeToString, + response_deserializer=router__pb2.UpdateChanStatusResponse.FromString, + ) + + +class RouterServicer(object): + """Router is a service that offers advanced interaction with the router + subsystem of the daemon. + """ + + def SendPaymentV2(self, request, context): + """ + SendPaymentV2 attempts to route a payment described by the passed + PaymentRequest to the final destination. The call returns a stream of + payment updates. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def TrackPaymentV2(self, request, context): + """ + TrackPaymentV2 returns an update stream for the payment identified by the + payment hash. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def EstimateRouteFee(self, request, context): + """ + EstimateRouteFee allows callers to obtain a lower bound w.r.t how much it + may cost to send an HTLC to the target end destination. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def SendToRoute(self, request, context): + """ + Deprecated, use SendToRouteV2. SendToRoute attempts to make a payment via + the specified route. This method differs from SendPayment in that it + allows users to specify a full route manually. This can be used for + things like rebalancing, and atomic swaps. It differs from the newer + SendToRouteV2 in that it doesn't return the full HTLC information. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def SendToRouteV2(self, request, context): + """ + SendToRouteV2 attempts to make a payment via the specified route. This + method differs from SendPayment in that it allows users to specify a full + route manually. This can be used for things like rebalancing, and atomic + swaps. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def ResetMissionControl(self, request, context): + """ + ResetMissionControl clears all mission control state and starts with a clean + slate. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def QueryMissionControl(self, request, context): + """ + QueryMissionControl exposes the internal mission control state to callers. + It is a development feature. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def XImportMissionControl(self, request, context): + """ + XImportMissionControl is an experimental API that imports the state provided + to the internal mission control's state, using all results which are more + recent than our existing values. These values will only be imported + in-memory, and will not be persisted across restarts. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def GetMissionControlConfig(self, request, context): + """ + GetMissionControlConfig returns mission control's current config. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def SetMissionControlConfig(self, request, context): + """ + SetMissionControlConfig will set mission control's config, if the config + provided is valid. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def QueryProbability(self, request, context): + """ + QueryProbability returns the current success probability estimate for a + given node pair and amount. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def BuildRoute(self, request, context): + """ + BuildRoute builds a fully specified route based on a list of hop public + keys. It retrieves the relevant channel policies from the graph in order to + calculate the correct fees and time locks. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def SubscribeHtlcEvents(self, request, context): + """ + SubscribeHtlcEvents creates a uni-directional stream from the server to + the client which delivers a stream of htlc events. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def SendPayment(self, request, context): + """ + Deprecated, use SendPaymentV2. SendPayment attempts to route a payment + described by the passed PaymentRequest to the final destination. The call + returns a stream of payment status updates. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def TrackPayment(self, request, context): + """ + Deprecated, use TrackPaymentV2. TrackPayment returns an update stream for + the payment identified by the payment hash. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def HtlcInterceptor(self, request_iterator, context): + """* + HtlcInterceptor dispatches a bi-directional streaming RPC in which + Forwarded HTLC requests are sent to the client and the client responds with + a boolean that tells LND if this htlc should be intercepted. + In case of interception, the htlc can be either settled, cancelled or + resumed later by using the ResolveHoldForward endpoint. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + def UpdateChanStatus(self, request, context): + """ + UpdateChanStatus attempts to manually set the state of a channel + (enabled, disabled, or auto). A manual "disable" request will cause the + channel to stay disabled until a subsequent manual request of either + "enable" or "auto". + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") + + +def add_RouterServicer_to_server(servicer, server): + rpc_method_handlers = { + "SendPaymentV2": grpc.unary_stream_rpc_method_handler( + servicer.SendPaymentV2, + request_deserializer=router__pb2.SendPaymentRequest.FromString, + response_serializer=lightning__pb2.Payment.SerializeToString, + ), + "TrackPaymentV2": grpc.unary_stream_rpc_method_handler( + servicer.TrackPaymentV2, + request_deserializer=router__pb2.TrackPaymentRequest.FromString, + response_serializer=lightning__pb2.Payment.SerializeToString, + ), + "EstimateRouteFee": grpc.unary_unary_rpc_method_handler( + servicer.EstimateRouteFee, + request_deserializer=router__pb2.RouteFeeRequest.FromString, + response_serializer=router__pb2.RouteFeeResponse.SerializeToString, + ), + "SendToRoute": grpc.unary_unary_rpc_method_handler( + servicer.SendToRoute, + request_deserializer=router__pb2.SendToRouteRequest.FromString, + response_serializer=router__pb2.SendToRouteResponse.SerializeToString, + ), + "SendToRouteV2": grpc.unary_unary_rpc_method_handler( + servicer.SendToRouteV2, + request_deserializer=router__pb2.SendToRouteRequest.FromString, + response_serializer=lightning__pb2.HTLCAttempt.SerializeToString, + ), + "ResetMissionControl": grpc.unary_unary_rpc_method_handler( + servicer.ResetMissionControl, + request_deserializer=router__pb2.ResetMissionControlRequest.FromString, + response_serializer=router__pb2.ResetMissionControlResponse.SerializeToString, + ), + "QueryMissionControl": grpc.unary_unary_rpc_method_handler( + servicer.QueryMissionControl, + request_deserializer=router__pb2.QueryMissionControlRequest.FromString, + response_serializer=router__pb2.QueryMissionControlResponse.SerializeToString, + ), + "XImportMissionControl": grpc.unary_unary_rpc_method_handler( + servicer.XImportMissionControl, + request_deserializer=router__pb2.XImportMissionControlRequest.FromString, + response_serializer=router__pb2.XImportMissionControlResponse.SerializeToString, + ), + "GetMissionControlConfig": grpc.unary_unary_rpc_method_handler( + servicer.GetMissionControlConfig, + request_deserializer=router__pb2.GetMissionControlConfigRequest.FromString, + response_serializer=router__pb2.GetMissionControlConfigResponse.SerializeToString, + ), + "SetMissionControlConfig": grpc.unary_unary_rpc_method_handler( + servicer.SetMissionControlConfig, + request_deserializer=router__pb2.SetMissionControlConfigRequest.FromString, + response_serializer=router__pb2.SetMissionControlConfigResponse.SerializeToString, + ), + "QueryProbability": grpc.unary_unary_rpc_method_handler( + servicer.QueryProbability, + request_deserializer=router__pb2.QueryProbabilityRequest.FromString, + response_serializer=router__pb2.QueryProbabilityResponse.SerializeToString, + ), + "BuildRoute": grpc.unary_unary_rpc_method_handler( + servicer.BuildRoute, + request_deserializer=router__pb2.BuildRouteRequest.FromString, + response_serializer=router__pb2.BuildRouteResponse.SerializeToString, + ), + "SubscribeHtlcEvents": grpc.unary_stream_rpc_method_handler( + servicer.SubscribeHtlcEvents, + request_deserializer=router__pb2.SubscribeHtlcEventsRequest.FromString, + response_serializer=router__pb2.HtlcEvent.SerializeToString, + ), + "SendPayment": grpc.unary_stream_rpc_method_handler( + servicer.SendPayment, + request_deserializer=router__pb2.SendPaymentRequest.FromString, + response_serializer=router__pb2.PaymentStatus.SerializeToString, + ), + "TrackPayment": grpc.unary_stream_rpc_method_handler( + servicer.TrackPayment, + request_deserializer=router__pb2.TrackPaymentRequest.FromString, + response_serializer=router__pb2.PaymentStatus.SerializeToString, + ), + "HtlcInterceptor": grpc.stream_stream_rpc_method_handler( + servicer.HtlcInterceptor, + request_deserializer=router__pb2.ForwardHtlcInterceptResponse.FromString, + response_serializer=router__pb2.ForwardHtlcInterceptRequest.SerializeToString, + ), + "UpdateChanStatus": grpc.unary_unary_rpc_method_handler( + servicer.UpdateChanStatus, + request_deserializer=router__pb2.UpdateChanStatusRequest.FromString, + response_serializer=router__pb2.UpdateChanStatusResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + "routerrpc.Router", rpc_method_handlers + ) + server.add_generic_rpc_handlers((generic_handler,)) + + +# This class is part of an EXPERIMENTAL API. +class Router(object): + """Router is a service that offers advanced interaction with the router + subsystem of the daemon. + """ + + @staticmethod + def SendPaymentV2( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_stream( + request, + target, + "/routerrpc.Router/SendPaymentV2", + router__pb2.SendPaymentRequest.SerializeToString, + lightning__pb2.Payment.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) + + @staticmethod + def TrackPaymentV2( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_stream( + request, + target, + "/routerrpc.Router/TrackPaymentV2", + router__pb2.TrackPaymentRequest.SerializeToString, + lightning__pb2.Payment.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) + + @staticmethod + def EstimateRouteFee( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/routerrpc.Router/EstimateRouteFee", + router__pb2.RouteFeeRequest.SerializeToString, + router__pb2.RouteFeeResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) + + @staticmethod + def SendToRoute( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/routerrpc.Router/SendToRoute", + router__pb2.SendToRouteRequest.SerializeToString, + router__pb2.SendToRouteResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) + + @staticmethod + def SendToRouteV2( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/routerrpc.Router/SendToRouteV2", + router__pb2.SendToRouteRequest.SerializeToString, + lightning__pb2.HTLCAttempt.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) + + @staticmethod + def ResetMissionControl( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/routerrpc.Router/ResetMissionControl", + router__pb2.ResetMissionControlRequest.SerializeToString, + router__pb2.ResetMissionControlResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) + + @staticmethod + def QueryMissionControl( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/routerrpc.Router/QueryMissionControl", + router__pb2.QueryMissionControlRequest.SerializeToString, + router__pb2.QueryMissionControlResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) + + @staticmethod + def XImportMissionControl( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/routerrpc.Router/XImportMissionControl", + router__pb2.XImportMissionControlRequest.SerializeToString, + router__pb2.XImportMissionControlResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) + + @staticmethod + def GetMissionControlConfig( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/routerrpc.Router/GetMissionControlConfig", + router__pb2.GetMissionControlConfigRequest.SerializeToString, + router__pb2.GetMissionControlConfigResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) + + @staticmethod + def SetMissionControlConfig( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/routerrpc.Router/SetMissionControlConfig", + router__pb2.SetMissionControlConfigRequest.SerializeToString, + router__pb2.SetMissionControlConfigResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) + + @staticmethod + def QueryProbability( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/routerrpc.Router/QueryProbability", + router__pb2.QueryProbabilityRequest.SerializeToString, + router__pb2.QueryProbabilityResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) + + @staticmethod + def BuildRoute( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/routerrpc.Router/BuildRoute", + router__pb2.BuildRouteRequest.SerializeToString, + router__pb2.BuildRouteResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) + + @staticmethod + def SubscribeHtlcEvents( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_stream( + request, + target, + "/routerrpc.Router/SubscribeHtlcEvents", + router__pb2.SubscribeHtlcEventsRequest.SerializeToString, + router__pb2.HtlcEvent.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) + + @staticmethod + def SendPayment( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_stream( + request, + target, + "/routerrpc.Router/SendPayment", + router__pb2.SendPaymentRequest.SerializeToString, + router__pb2.PaymentStatus.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) + + @staticmethod + def TrackPayment( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_stream( + request, + target, + "/routerrpc.Router/TrackPayment", + router__pb2.TrackPaymentRequest.SerializeToString, + router__pb2.PaymentStatus.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) + + @staticmethod + def HtlcInterceptor( + request_iterator, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.stream_stream( + request_iterator, + target, + "/routerrpc.Router/HtlcInterceptor", + router__pb2.ForwardHtlcInterceptResponse.SerializeToString, + router__pb2.ForwardHtlcInterceptRequest.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) + + @staticmethod + def UpdateChanStatus( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, + target, + "/routerrpc.Router/UpdateChanStatus", + router__pb2.UpdateChanStatusRequest.SerializeToString, + router__pb2.UpdateChanStatusResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) diff --git a/lnbits/wallets/lndgrpc.py b/lnbits/wallets/lndgrpc.py index 44fee78c3..fee8b955a 100644 --- a/lnbits/wallets/lndgrpc.py +++ b/lnbits/wallets/lndgrpc.py @@ -2,10 +2,11 @@ imports_ok = True try: import grpc from google import protobuf + from grpc import RpcError except ImportError: # pragma: nocover imports_ok = False - +import asyncio import base64 import binascii import hashlib @@ -19,6 +20,8 @@ from .macaroon import AESCipher, load_macaroon if imports_ok: import lnbits.wallets.lnd_grpc_files.lightning_pb2 as ln import lnbits.wallets.lnd_grpc_files.lightning_pb2_grpc as lnrpc + import lnbits.wallets.lnd_grpc_files.router_pb2 as router + import lnbits.wallets.lnd_grpc_files.router_pb2_grpc as routerrpc from .base import ( InvoiceResponse, @@ -111,6 +114,7 @@ class LndWallet(Wallet): f"{self.endpoint}:{self.port}", composite_creds ) self.rpc = lnrpc.LightningStub(channel) + self.routerpc = routerrpc.RouterStub(channel) def metadata_callback(self, _, callback): callback([("macaroon", self.macaroon)], None) @@ -118,6 +122,8 @@ class LndWallet(Wallet): async def status(self) -> StatusResponse: try: resp = await self.rpc.ChannelBalance(ln.ChannelBalanceRequest()) + except RpcError as exc: + return StatusResponse(str(exc._details), 0) except Exception as exc: return StatusResponse(str(exc), 0) @@ -132,7 +138,10 @@ class LndWallet(Wallet): params: Dict = {"value": amount, "expiry": 600, "private": True} if description_hash: - params["description_hash"] = description_hash # as bytes directly + params["description_hash"] = hashlib.sha256( + description_hash + ).digest() # as bytes directly + else: params["memo"] = memo or "" @@ -148,18 +157,39 @@ class LndWallet(Wallet): return InvoiceResponse(True, checking_id, payment_request, None) async def pay_invoice(self, bolt11: str, fee_limit_msat: int) -> PaymentResponse: - fee_limit_fixed = ln.FeeLimit(fixed=fee_limit_msat // 1000) - req = ln.SendRequest(payment_request=bolt11, fee_limit=fee_limit_fixed) - resp = await self.rpc.SendPaymentSync(req) + # fee_limit_fixed = ln.FeeLimit(fixed=fee_limit_msat // 1000) + req = router.SendPaymentRequest( + payment_request=bolt11, + fee_limit_msat=fee_limit_msat, + timeout_seconds=30, + no_inflight_updates=True, + ) + try: + resp = await self.routerpc.SendPaymentV2(req).read() + except RpcError as exc: + return PaymentResponse(False, "", 0, None, exc._details) + except Exception as exc: + return PaymentResponse(False, "", 0, None, str(exc)) - if resp.payment_error: - return PaymentResponse(False, "", 0, None, resp.payment_error) + # PaymentStatus from https://github.com/lightningnetwork/lnd/blob/master/channeldb/payments.go#L178 + statuses = { + 0: None, # NON_EXISTENT + 1: None, # IN_FLIGHT + 2: True, # SUCCEEDED + 3: False, # FAILED + } - r_hash = hashlib.sha256(resp.payment_preimage).digest() - checking_id = stringify_checking_id(r_hash) - fee_msat = resp.payment_route.total_fees_msat - preimage = resp.payment_preimage.hex() - return PaymentResponse(True, checking_id, fee_msat, preimage, None) + if resp.status in [0, 1, 3]: + fee_msat = 0 + preimage = "" + checking_id = "" + elif resp.status == 2: # SUCCEEDED + fee_msat = resp.htlcs[-1].route.total_fees_msat + preimage = resp.payment_preimage + checking_id = resp.payment_hash + return PaymentResponse( + statuses[resp.status], checking_id, fee_msat, preimage, None + ) async def get_invoice_status(self, checking_id: str) -> PaymentStatus: try: @@ -178,20 +208,55 @@ class LndWallet(Wallet): return PaymentStatus(None) async def get_payment_status(self, checking_id: str) -> PaymentStatus: - return PaymentStatus(True) + """ + This routine checks the payment status using routerpc.TrackPaymentV2. + """ + try: + r_hash = parse_checking_id(checking_id) + if len(r_hash) != 32: + raise binascii.Error + except binascii.Error: + # this may happen if we switch between backend wallets + # that use different checking_id formats + return PaymentStatus(None) + + # for some reason our checking_ids are in base64 but the payment hashes + # returned here are in hex, lnd is weird + checking_id = checking_id.replace("_", "/") + checking_id = base64.b64decode(checking_id).hex() + + resp = self.routerpc.TrackPaymentV2( + router.TrackPaymentRequest(payment_hash=r_hash) + ) + + # HTLCAttempt.HTLCStatus: + # https://github.com/lightningnetwork/lnd/blob/master/lnrpc/lightning.proto#L3641 + statuses = { + 0: None, # IN_FLIGHT + 1: True, # "SUCCEEDED" + 2: False, # "FAILED" + } + + try: + async for payment in resp: + return PaymentStatus(statuses[payment.htlcs[-1].status]) + except: # most likely the payment wasn't found + return PaymentStatus(None) + + return PaymentStatus(None) async def paid_invoices_stream(self) -> AsyncGenerator[str, None]: - request = ln.InvoiceSubscription() - try: - async for i in self.rpc.SubscribeInvoices(request): - if not i.settled: - continue + while True: + request = ln.InvoiceSubscription() + try: + async for i in self.rpc.SubscribeInvoices(request): + if not i.settled: + continue - checking_id = stringify_checking_id(i.r_hash) - yield checking_id - except error: - logger.error(error) - - logger.error( - "lost connection to lnd InvoiceSubscription, please restart lnbits." - ) + checking_id = stringify_checking_id(i.r_hash) + yield checking_id + except Exception as exc: + logger.error( + f"lost connection to lnd invoices stream: '{exc}', retrying in 5 seconds" + ) + await asyncio.sleep(5) diff --git a/lnbits/wallets/lndrest.py b/lnbits/wallets/lndrest.py index 575db64dd..9f7f95581 100644 --- a/lnbits/wallets/lndrest.py +++ b/lnbits/wallets/lndrest.py @@ -1,5 +1,6 @@ import asyncio import base64 +import hashlib import json from os import getenv from pydoc import describe @@ -75,9 +76,9 @@ class LndRestWallet(Wallet): ) -> InvoiceResponse: data: Dict = {"value": amount, "private": True} if description_hash: - data["description_hash"] = base64.b64encode(description_hash).decode( - "ascii" - ) + data["description_hash"] = base64.b64encode( + hashlib.sha256(description_hash).digest() + ).decode("ascii") else: data["memo"] = memo or "" @@ -141,15 +142,10 @@ class LndRestWallet(Wallet): return PaymentStatus(True) async def get_payment_status(self, checking_id: str) -> PaymentStatus: - async with httpx.AsyncClient(verify=self.cert) as client: - r = await client.get( - url=f"{self.endpoint}/v1/payments", - headers=self.auth, - params={"max_payments": "20", "reversed": True}, - ) - - if r.is_error: - return PaymentStatus(None) + """ + This routine checks the payment status using routerpc.TrackPaymentV2. + """ + url = f"{self.endpoint}/v2/router/track/{checking_id}" # check payment.status: # https://api.lightning.community/rest/index.html?python#peersynctype @@ -160,14 +156,27 @@ class LndRestWallet(Wallet): "FAILED": False, } - # for some reason our checking_ids are in base64 but the payment hashes - # returned here are in hex, lnd is weird - checking_id = checking_id.replace("_", "/") - checking_id = base64.b64decode(checking_id).hex() - - for p in r.json()["payments"]: - if p["payment_hash"] == checking_id: - return PaymentStatus(statuses[p["status"]]) + async with httpx.AsyncClient( + timeout=None, headers=self.auth, verify=self.cert + ) as client: + async with client.stream("GET", url) as r: + async for l in r.aiter_lines(): + try: + line = json.loads(l) + if line.get("error"): + logger.error( + line["error"]["message"] + if "message" in line["error"] + else line["error"] + ) + return PaymentStatus(None) + payment = line.get("result") + if payment is not None and payment.get("status"): + return PaymentStatus(statuses[payment["status"]]) + else: + return PaymentStatus(None) + except: + continue return PaymentStatus(None) @@ -190,10 +199,8 @@ class LndRestWallet(Wallet): payment_hash = base64.b64decode(inv["r_hash"]).hex() yield payment_hash - except (OSError, httpx.ConnectError, httpx.ReadError): - pass - - logger.error( - "lost connection to lnd invoices stream, retrying in 5 seconds" - ) - await asyncio.sleep(5) + except Exception as exc: + logger.error( + f"lost connection to lnd invoices stream: '{exc}', retrying in 5 seconds" + ) + await asyncio.sleep(5) diff --git a/lnbits/wallets/lnpay.py b/lnbits/wallets/lnpay.py index 18b4f8bbe..7ba45a228 100644 --- a/lnbits/wallets/lnpay.py +++ b/lnbits/wallets/lnpay.py @@ -1,4 +1,5 @@ import asyncio +import hashlib import json from http import HTTPStatus from os import getenv @@ -54,7 +55,7 @@ class LNPayWallet(Wallet): ) -> InvoiceResponse: data: Dict = {"num_satoshis": f"{amount}"} if description_hash: - data["description_hash"] = description_hash.hex() + data["description_hash"] = hashlib.sha256(description_hash).hexdigest() else: data["memo"] = memo or "" diff --git a/lnbits/wallets/lntxbot.py b/lnbits/wallets/lntxbot.py index 3c758e6c1..9b0954e9e 100644 --- a/lnbits/wallets/lntxbot.py +++ b/lnbits/wallets/lntxbot.py @@ -1,4 +1,5 @@ import asyncio +import hashlib import json from os import getenv from typing import AsyncGenerator, Dict, Optional @@ -54,7 +55,7 @@ class LntxbotWallet(Wallet): ) -> InvoiceResponse: data: Dict = {"amt": str(amount)} if description_hash: - data["description_hash"] = description_hash.hex() + data["description_hash"] = hashlib.sha256(description_hash).hexdigest() else: data["memo"] = memo or "" diff --git a/lnbits/wallets/opennode.py b/lnbits/wallets/opennode.py index be82365dd..0760d186b 100644 --- a/lnbits/wallets/opennode.py +++ b/lnbits/wallets/opennode.py @@ -65,7 +65,7 @@ class OpenNodeWallet(Wallet): json={ "amount": amount, "description": memo or "", - "callback_url": url_for("/webhook_listener", _external=True), + # "callback_url": url_for("/webhook_listener", _external=True), }, timeout=40, ) diff --git a/lnbits/wallets/spark.py b/lnbits/wallets/spark.py index 142e388d2..55758aab0 100644 --- a/lnbits/wallets/spark.py +++ b/lnbits/wallets/spark.py @@ -1,4 +1,5 @@ import asyncio +import hashlib import json import random from os import getenv @@ -101,7 +102,7 @@ class SparkWallet(Wallet): r = await self.invoicewithdescriptionhash( msatoshi=amount * 1000, label=label, - description_hash=description_hash.hex(), + description_hash=hashlib.sha256(description_hash).hexdigest(), ) else: r = await self.invoice( diff --git a/lnbits/wallets/void.py b/lnbits/wallets/void.py index 1139f7a88..d6a01d3ad 100644 --- a/lnbits/wallets/void.py +++ b/lnbits/wallets/void.py @@ -31,10 +31,10 @@ class VoidWallet(Wallet): raise Unsupported("") async def get_invoice_status(self, checking_id: str) -> PaymentStatus: - raise Unsupported("") + return PaymentStatus(None) async def get_payment_status(self, checking_id: str) -> PaymentStatus: - raise Unsupported("") + return PaymentStatus(None) async def paid_invoices_stream(self) -> AsyncGenerator[str, None]: yield "" diff --git a/mypy.ini b/mypy.ini deleted file mode 100644 index e5a974b51..000000000 --- a/mypy.ini +++ /dev/null @@ -1,8 +0,0 @@ -[mypy] -ignore_missing_imports = True -exclude = (?x)( - ^lnbits/extensions. - | ^lnbits/wallets/lnd_grpc_files. - ) -[mypy-lnbits.wallets.lnd_grpc_files.*] -follow_imports = skip diff --git a/nix/modules/lnbits-service.nix b/nix/modules/lnbits-service.nix index 5d8e06403..e7029e672 100644 --- a/nix/modules/lnbits-service.nix +++ b/nix/modules/lnbits-service.nix @@ -3,7 +3,7 @@ let defaultUser = "lnbits"; cfg = config.services.lnbits; - inherit (lib) mkOption mkIf types optionalAttrs; + inherit (lib) mkOption mkIf types optionalAttrs literalExpression; in { @@ -25,6 +25,7 @@ in }; package = mkOption { type = types.package; + defaultText = literalExpression "pkgs.lnbits"; default = pkgs.lnbits; description = '' The lnbits package to use. diff --git a/poetry.lock b/poetry.lock index 48c508ceb..975c62b2e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,6 +1,6 @@ [[package]] name = "aiofiles" -version = "0.7.0" +version = "0.8.0" description = "File support for asyncio." category = "main" optional = false @@ -17,6 +17,7 @@ python-versions = ">=3.6.2" [package.dependencies] idna = ">=2.8" sniffio = ">=1.1" +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} [package.extras] doc = ["packaging", "sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] @@ -31,9 +32,20 @@ category = "main" optional = false python-versions = ">=3.6" +[package.dependencies] +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} + [package.extras] tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"] +[[package]] +name = "atomicwrites" +version = "1.4.1" +description = "Atomic file writes." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + [[package]] name = "attrs" version = "21.2.0" @@ -64,6 +76,29 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "black" +version = "22.6.0" +description = "The uncompromising code formatter." +category = "dev" +optional = false +python-versions = ">=3.6.2" + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +pathspec = ">=0.9.0" +platformdirs = ">=2" +tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} +typed-ast = {version = ">=1.4.2", markers = "python_version < \"3.8\" and implementation_name == \"cpython\""} +typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.7.4)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + [[package]] name = "cerberus" version = "1.3.4" @@ -112,6 +147,7 @@ python-versions = ">=3.6" [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} [[package]] name = "colorama" @@ -121,6 +157,20 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "coverage" +version = "6.4.2" +description = "Code coverage measurement for Python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} + +[package.extras] +toml = ["tomli"] + [[package]] name = "ecdsa" version = "0.17.0" @@ -190,49 +240,52 @@ python-versions = ">=3.6" [[package]] name = "httpcore" -version = "0.13.7" +version = "0.15.0" description = "A minimal low-level HTTP client." category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] anyio = ">=3.0.0,<4.0.0" +certifi = "*" h11 = ">=0.11,<0.13" sniffio = ">=1.0.0,<2.0.0" [package.extras] http2 = ["h2 (>=3,<5)"] +socks = ["socksio (>=1.0.0,<2.0.0)"] [[package]] name = "httptools" -version = "0.2.0" +version = "0.4.0" description = "A collection of framework independent HTTP protocol utils." category = "main" optional = false -python-versions = "*" +python-versions = ">=3.5.0" [package.extras] -test = ["Cython (==0.29.22)"] +test = ["Cython (>=0.29.24,<0.30.0)"] [[package]] name = "httpx" -version = "0.19.0" +version = "0.23.0" description = "The next generation HTTP client." category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] certifi = "*" -charset-normalizer = "*" -httpcore = ">=0.13.3,<0.14.0" +httpcore = ">=0.15.0,<0.16.0" rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} sniffio = "*" [package.extras] brotli = ["brotlicffi", "brotli"] +cli = ["click (>=8.0.0,<9.0.0)", "rich (>=10,<13)", "pygments (>=2.0.0,<3.0.0)"] http2 = ["h2 (>=3,<5)"] +socks = ["socksio (>=1.0.0,<2.0.0)"] [[package]] name = "idna" @@ -251,6 +304,7 @@ optional = false python-versions = ">=3.6" [package.dependencies] +typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} zipp = ">=0.5" [package.extras] @@ -258,6 +312,28 @@ docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] perf = ["ipython"] testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] +[[package]] +name = "iniconfig" +version = "1.1.1" +description = "iniconfig: brain-dead simple config-ini parsing" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "isort" +version = "5.10.1" +description = "A Python utility / library to sort Python imports." +category = "dev" +optional = false +python-versions = ">=3.6.1,<4.0" + +[package.extras] +pipfile_deprecated_finder = ["pipreqs", "requirementslib"] +requirements_deprecated_finder = ["pipreqs", "pip-api"] +colors = ["colorama (>=0.4.3,<0.5.0)"] +plugins = ["setuptools"] + [[package]] name = "jinja2" version = "3.0.1" @@ -283,6 +359,7 @@ python-versions = ">=3.6" [package.dependencies] bech32 = "*" pydantic = "*" +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} [[package]] name = "loguru" @@ -297,7 +374,7 @@ colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""} win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} [package.extras] -dev = ["codecov (>=2.0.15)", "colorama (>=0.3.4)", "flake8 (>=3.7.7)", "tox (>=3.9.0)", "tox-travis (>=0.12)", "pytest (>=4.6.2)", "pytest-cov (>=2.7.1)", "Sphinx (>=2.2.1)", "sphinx-autobuild (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "black (>=19.10b0)", "isort (>=5.1.1)"] +dev = ["isort (>=5.1.1)", "black (>=19.10b0)", "sphinx-rtd-theme (>=0.4.3)", "sphinx-autobuild (>=0.7.1)", "Sphinx (>=2.2.1)", "pytest-cov (>=2.7.1)", "pytest (>=4.6.2)", "tox-travis (>=0.12)", "tox (>=3.9.0)", "flake8 (>=3.7.7)", "colorama (>=0.3.4)", "codecov (>=2.0.15)"] [[package]] name = "markupsafe" @@ -309,18 +386,61 @@ python-versions = ">=3.6" [[package]] name = "marshmallow" -version = "3.13.0" +version = "3.17.0" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.7" + +[package.dependencies] +packaging = ">=17.0" [package.extras] -dev = ["pytest", "pytz", "simplejson", "mypy (==0.910)", "flake8 (==3.9.2)", "flake8-bugbear (==21.4.3)", "pre-commit (>=2.4,<3.0)", "tox"] -docs = ["sphinx (==4.1.1)", "sphinx-issues (==1.2.0)", "alabaster (==0.7.12)", "sphinx-version-warning (==1.1.2)", "autodocsumm (==0.2.6)"] -lint = ["mypy (==0.910)", "flake8 (==3.9.2)", "flake8-bugbear (==21.4.3)", "pre-commit (>=2.4,<3.0)"] +dev = ["pytest", "pytz", "simplejson", "mypy (==0.961)", "flake8 (==4.0.1)", "flake8-bugbear (==22.6.22)", "pre-commit (>=2.4,<3.0)", "tox"] +docs = ["sphinx (==4.5.0)", "sphinx-issues (==3.0.1)", "alabaster (==0.7.12)", "sphinx-version-warning (==1.1.2)", "autodocsumm (==0.2.8)"] +lint = ["mypy (==0.961)", "flake8 (==4.0.1)", "flake8-bugbear (==22.6.22)", "pre-commit (>=2.4,<3.0)"] tests = ["pytest", "pytz", "simplejson"] +[[package]] +name = "mock" +version = "4.0.3" +description = "Rolling backport of unittest.mock for all Pythons" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +build = ["twine", "wheel", "blurb"] +docs = ["sphinx"] +test = ["pytest (<5.4)", "pytest-cov"] + +[[package]] +name = "mypy" +version = "0.971" +description = "Optional static typing for Python" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +mypy-extensions = ">=0.4.3" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typed-ast = {version = ">=1.4.0,<2", markers = "python_version < \"3.8\""} +typing-extensions = ">=3.10" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +python2 = ["typed-ast (>=1.4.0,<2)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "0.4.3" +description = "Experimental type system extensions for programs checked with the mypy typechecker." +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "outcome" version = "1.1.0" @@ -332,6 +452,52 @@ python-versions = ">=3.6" [package.dependencies] attrs = ">=19.2.0" +[[package]] +name = "packaging" +version = "21.3" +description = "Core utilities for Python packages" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" + +[[package]] +name = "pathspec" +version = "0.9.0" +description = "Utility library for gitignore style pattern matching of file paths." +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[[package]] +name = "platformdirs" +version = "2.5.2" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"] +test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytest (>=6)"] + +[[package]] +name = "pluggy" +version = "1.0.0" +description = "plugin and hook calling mechanisms for python" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} + +[package.extras] +testing = ["pytest-benchmark", "pytest"] +dev = ["tox", "pre-commit"] + [[package]] name = "psycopg2-binary" version = "2.9.1" @@ -340,6 +506,14 @@ category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "py" +version = "1.11.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + [[package]] name = "pycparser" version = "2.21" @@ -371,6 +545,17 @@ typing-extensions = ">=3.7.4.3" dotenv = ["python-dotenv (>=0.10.4)"] email = ["email-validator (>=1.0.3)"] +[[package]] +name = "pyparsing" +version = "3.0.9" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" +category = "main" +optional = false +python-versions = ">=3.6.8" + +[package.extras] +diagrams = ["railroad-diagrams", "jinja2"] + [[package]] name = "pypng" version = "0.0.21" @@ -401,6 +586,58 @@ python-versions = "*" [package.dependencies] six = "*" +[[package]] +name = "pytest" +version = "7.1.2" +description = "pytest: simple powerful testing with Python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} +attrs = ">=19.2.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +py = ">=1.8.2" +tomli = ">=1.0.0" + +[package.extras] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] + +[[package]] +name = "pytest-asyncio" +version = "0.19.0" +description = "Pytest support for asyncio" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +pytest = ">=6.1.0" +typing-extensions = {version = ">=3.7.2", markers = "python_version < \"3.8\""} + +[package.extras] +testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)", "flaky (>=3.5.0)", "mypy (>=0.931)", "pytest-trio (>=0.7.0)"] + +[[package]] +name = "pytest-cov" +version = "3.0.0" +description = "Pytest plugin for measuring coverage." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +coverage = {version = ">=5.2.1", extras = ["toml"]} +pytest = ">=4.6" + +[package.extras] +testing = ["virtualenv", "pytest-xdist", "six", "process-tests", "hunter", "fields"] + [[package]] name = "python-dotenv" version = "0.19.0" @@ -505,7 +742,7 @@ pymysql = ["pymysql (<1)", "pymysql"] [[package]] name = "sqlalchemy-aio" -version = "0.16.0" +version = "0.17.0" description = "Async support for SQLAlchemy." category = "main" optional = false @@ -514,7 +751,7 @@ python-versions = ">=3.6" [package.dependencies] outcome = "*" represent = ">=1.4" -sqlalchemy = "*" +sqlalchemy = "<1.4" [package.extras] test = ["pytest (>=5.4)", "pytest-asyncio (>=0.14)", "pytest-trio (>=0.6)"] @@ -544,6 +781,30 @@ typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\"" [package.extras] full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests"] +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +category = "dev" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "typed-ast" +version = "1.5.4" +description = "a fork of Python 2 and 3 ast modules with type comment support" +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "types-protobuf" +version = "3.19.22" +description = "Typing stubs for protobuf" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "typing-extensions" version = "3.10.0.2" @@ -563,6 +824,7 @@ python-versions = ">=3.7" [package.dependencies] click = ">=7.0" h11 = ">=0.8" +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} [package.extras] standard = ["websockets (>=10.0)", "httptools (>=0.4.0)", "watchfiles (>=0.13)", "python-dotenv (>=0.13)", "PyYAML (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "colorama (>=0.4)"] @@ -588,6 +850,19 @@ category = "main" optional = false python-versions = ">=3.5" +[[package]] +name = "websocket-client" +version = "1.3.3" +description = "WebSocket client for Python with low level API options" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["Sphinx (>=3.4)", "sphinx-rtd-theme (>=0.5)"] +optional = ["python-socks", "wsaccel"] +test = ["websockets"] + [[package]] name = "websockets" version = "10.0" @@ -605,7 +880,7 @@ optional = false python-versions = ">=3.5" [package.extras] -dev = ["pytest (>=4.6.2)", "black (>=19.3b0)"] +dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"] [[package]] name = "zipp" @@ -621,13 +896,13 @@ testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytes [metadata] lock-version = "1.1" -python-versions = "^3.9" -content-hash = "921a5f4fe1a4d1a4c3b490f8631ed4bdd0d8af1f1992f1a4f74eaed986c4eb0b" +python-versions = "^3.9 | ^3.8 | ^3.7" +content-hash = "cadb8f2e46f0c083e91956f4f0f70b53b6c106f1c0b47972b57132dfee357367" [metadata.files] aiofiles = [ - {file = "aiofiles-0.7.0-py3-none-any.whl", hash = "sha256:c67a6823b5f23fcab0a2595a289cec7d8c863ffcb4322fb8cd6b90400aedfdbc"}, - {file = "aiofiles-0.7.0.tar.gz", hash = "sha256:a1c4fc9b2ff81568c83e21392a82f344ea9d23da906e4f6a52662764545e19d4"}, + {file = "aiofiles-0.8.0-py3-none-any.whl", hash = "sha256:7a973fc22b29e9962d0897805ace5856e6a566ab1f0c8e5c91ff6c866519c937"}, + {file = "aiofiles-0.8.0.tar.gz", hash = "sha256:8334f23235248a3b2e83b2c3a78a22674f39969b96397126cc93664d9a901e59"}, ] anyio = [ {file = "anyio-3.6.1-py3-none-any.whl", hash = "sha256:cb29b9c70620506a9a8f87a309591713446953302d7d995344d0d7c6c0c9a7be"}, @@ -637,6 +912,9 @@ asgiref = [ {file = "asgiref-3.4.1-py3-none-any.whl", hash = "sha256:ffc141aa908e6f175673e7b1b3b7af4fdb0ecb738fc5c8b88f69f055c2415214"}, {file = "asgiref-3.4.1.tar.gz", hash = "sha256:4ef1ab46b484e3c706329cedeff284a5d40824200638503f5768edb6de7d58e9"}, ] +atomicwrites = [ + {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, +] attrs = [ {file = "attrs-21.2.0-py2.py3-none-any.whl", hash = "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1"}, {file = "attrs-21.2.0.tar.gz", hash = "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"}, @@ -650,6 +928,31 @@ bitstring = [ {file = "bitstring-3.1.9-py3-none-any.whl", hash = "sha256:0de167daa6a00c9386255a7cac931b45e6e24e0ad7ea64f1f92a64ac23ad4578"}, {file = "bitstring-3.1.9.tar.gz", hash = "sha256:a5848a3f63111785224dca8bb4c0a75b62ecdef56a042c8d6be74b16f7e860e7"}, ] +black = [ + {file = "black-22.6.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f586c26118bc6e714ec58c09df0157fe2d9ee195c764f630eb0d8e7ccce72e69"}, + {file = "black-22.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b270a168d69edb8b7ed32c193ef10fd27844e5c60852039599f9184460ce0807"}, + {file = "black-22.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6797f58943fceb1c461fb572edbe828d811e719c24e03375fd25170ada53825e"}, + {file = "black-22.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c85928b9d5f83b23cee7d0efcb310172412fbf7cb9d9ce963bd67fd141781def"}, + {file = "black-22.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:f6fe02afde060bbeef044af7996f335fbe90b039ccf3f5eb8f16df8b20f77666"}, + {file = "black-22.6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cfaf3895a9634e882bf9d2363fed5af8888802d670f58b279b0bece00e9a872d"}, + {file = "black-22.6.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94783f636bca89f11eb5d50437e8e17fbc6a929a628d82304c80fa9cd945f256"}, + {file = "black-22.6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2ea29072e954a4d55a2ff58971b83365eba5d3d357352a07a7a4df0d95f51c78"}, + {file = "black-22.6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e439798f819d49ba1c0bd9664427a05aab79bfba777a6db94fd4e56fae0cb849"}, + {file = "black-22.6.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:187d96c5e713f441a5829e77120c269b6514418f4513a390b0499b0987f2ff1c"}, + {file = "black-22.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:074458dc2f6e0d3dab7928d4417bb6957bb834434516f21514138437accdbe90"}, + {file = "black-22.6.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a218d7e5856f91d20f04e931b6f16d15356db1c846ee55f01bac297a705ca24f"}, + {file = "black-22.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:568ac3c465b1c8b34b61cd7a4e349e93f91abf0f9371eda1cf87194663ab684e"}, + {file = "black-22.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6c1734ab264b8f7929cef8ae5f900b85d579e6cbfde09d7387da8f04771b51c6"}, + {file = "black-22.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9a3ac16efe9ec7d7381ddebcc022119794872abce99475345c5a61aa18c45ad"}, + {file = "black-22.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:b9fd45787ba8aa3f5e0a0a98920c1012c884622c6c920dbe98dbd05bc7c70fbf"}, + {file = "black-22.6.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7ba9be198ecca5031cd78745780d65a3f75a34b2ff9be5837045dce55db83d1c"}, + {file = "black-22.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a3db5b6409b96d9bd543323b23ef32a1a2b06416d525d27e0f67e74f1446c8f2"}, + {file = "black-22.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:560558527e52ce8afba936fcce93a7411ab40c7d5fe8c2463e279e843c0328ee"}, + {file = "black-22.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b154e6bbde1e79ea3260c4b40c0b7b3109ffcdf7bc4ebf8859169a6af72cd70b"}, + {file = "black-22.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:4af5bc0e1f96be5ae9bd7aaec219c901a94d6caa2484c21983d043371c733fc4"}, + {file = "black-22.6.0-py3-none-any.whl", hash = "sha256:ac609cf8ef5e7115ddd07d85d988d074ed00e10fbc3445aee393e70164a2219c"}, + {file = "black-22.6.0.tar.gz", hash = "sha256:6c6d39e28aed379aec40da1c65434c77d75e65bb59a1e1c283de545fb4e7c6c9"}, +] cerberus = [ {file = "Cerberus-1.3.4.tar.gz", hash = "sha256:d1b21b3954b2498d9a79edf16b3170a3ac1021df88d197dc2ce5928ba519237c"}, ] @@ -721,6 +1024,49 @@ colorama = [ {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, ] +coverage = [ + {file = "coverage-6.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a9032f9b7d38bdf882ac9f66ebde3afb8145f0d4c24b2e600bc4c6304aafb87e"}, + {file = "coverage-6.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e0524adb49c716ca763dbc1d27bedce36b14f33e6b8af6dba56886476b42957c"}, + {file = "coverage-6.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4548be38a1c810d79e097a38107b6bf2ff42151900e47d49635be69943763d8"}, + {file = "coverage-6.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f23876b018dfa5d3e98e96f5644b109090f16a4acb22064e0f06933663005d39"}, + {file = "coverage-6.4.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fe75dcfcb889b6800f072f2af5a331342d63d0c1b3d2bf0f7b4f6c353e8c9c0"}, + {file = "coverage-6.4.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2f8553878a24b00d5ab04b7a92a2af50409247ca5c4b7a2bf4eabe94ed20d3ee"}, + {file = "coverage-6.4.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:d774d9e97007b018a651eadc1b3970ed20237395527e22cbeb743d8e73e0563d"}, + {file = "coverage-6.4.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d56f105592188ce7a797b2bd94b4a8cb2e36d5d9b0d8a1d2060ff2a71e6b9bbc"}, + {file = "coverage-6.4.2-cp310-cp310-win32.whl", hash = "sha256:d230d333b0be8042ac34808ad722eabba30036232e7a6fb3e317c49f61c93386"}, + {file = "coverage-6.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:5ef42e1db047ca42827a85e34abe973971c635f83aed49611b7f3ab49d0130f0"}, + {file = "coverage-6.4.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:25b7ec944f114f70803d6529394b64f8749e93cbfac0fe6c5ea1b7e6c14e8a46"}, + {file = "coverage-6.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bb00521ab4f99fdce2d5c05a91bddc0280f0afaee0e0a00425e28e209d4af07"}, + {file = "coverage-6.4.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2dff52b3e7f76ada36f82124703f4953186d9029d00d6287f17c68a75e2e6039"}, + {file = "coverage-6.4.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:147605e1702d996279bb3cc3b164f408698850011210d133a2cb96a73a2f7996"}, + {file = "coverage-6.4.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:422fa44070b42fef9fb8dabd5af03861708cdd6deb69463adc2130b7bf81332f"}, + {file = "coverage-6.4.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:8af6c26ba8df6338e57bedbf916d76bdae6308e57fc8f14397f03b5da8622b4e"}, + {file = "coverage-6.4.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5336e0352c0b12c7e72727d50ff02557005f79a0b8dcad9219c7c4940a930083"}, + {file = "coverage-6.4.2-cp37-cp37m-win32.whl", hash = "sha256:0f211df2cba951ffcae210ee00e54921ab42e2b64e0bf2c0befc977377fb09b7"}, + {file = "coverage-6.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:a13772c19619118903d65a91f1d5fea84be494d12fd406d06c849b00d31bf120"}, + {file = "coverage-6.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f7bd0ffbcd03dc39490a1f40b2669cc414fae0c4e16b77bb26806a4d0b7d1452"}, + {file = "coverage-6.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0895ea6e6f7f9939166cc835df8fa4599e2d9b759b02d1521b574e13b859ac32"}, + {file = "coverage-6.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e7ced84a11c10160c0697a6cc0b214a5d7ab21dfec1cd46e89fbf77cc66fae"}, + {file = "coverage-6.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80db4a47a199c4563d4a25919ff29c97c87569130375beca3483b41ad5f698e8"}, + {file = "coverage-6.4.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3def6791adf580d66f025223078dc84c64696a26f174131059ce8e91452584e1"}, + {file = "coverage-6.4.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4f89d8e03c8a3757aae65570d14033e8edf192ee9298303db15955cadcff0c63"}, + {file = "coverage-6.4.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6d0b48aff8e9720bdec315d67723f0babd936a7211dc5df453ddf76f89c59933"}, + {file = "coverage-6.4.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2b20286c2b726f94e766e86a3fddb7b7e37af5d0c635bdfa7e4399bc523563de"}, + {file = "coverage-6.4.2-cp38-cp38-win32.whl", hash = "sha256:d714af0bdba67739598849c9f18efdcc5a0412f4993914a0ec5ce0f1e864d783"}, + {file = "coverage-6.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:5f65e5d3ff2d895dab76b1faca4586b970a99b5d4b24e9aafffc0ce94a6022d6"}, + {file = "coverage-6.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a697977157adc052284a7160569b36a8bbec09db3c3220642e6323b47cec090f"}, + {file = "coverage-6.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c77943ef768276b61c96a3eb854eba55633c7a3fddf0a79f82805f232326d33f"}, + {file = "coverage-6.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54d8d0e073a7f238f0666d3c7c0d37469b2aa43311e4024c925ee14f5d5a1cbe"}, + {file = "coverage-6.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f22325010d8824594820d6ce84fa830838f581a7fd86a9235f0d2ed6deb61e29"}, + {file = "coverage-6.4.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24b04d305ea172ccb21bee5bacd559383cba2c6fcdef85b7701cf2de4188aa55"}, + {file = "coverage-6.4.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:866ebf42b4c5dbafd64455b0a1cd5aa7b4837a894809413b930026c91e18090b"}, + {file = "coverage-6.4.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e36750fbbc422c1c46c9d13b937ab437138b998fe74a635ec88989afb57a3978"}, + {file = "coverage-6.4.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:79419370d6a637cb18553ecb25228893966bd7935a9120fa454e7076f13b627c"}, + {file = "coverage-6.4.2-cp39-cp39-win32.whl", hash = "sha256:b5e28db9199dd3833cc8a07fa6cf429a01227b5d429facb56eccd765050c26cd"}, + {file = "coverage-6.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:edfdabe7aa4f97ed2b9dd5dde52d2bb29cb466993bb9d612ddd10d0085a683cf"}, + {file = "coverage-6.4.2-pp36.pp37.pp38-none-any.whl", hash = "sha256:e2618cb2cf5a7cc8d698306e42ebcacd02fb7ef8cfc18485c59394152c70be97"}, + {file = "coverage-6.4.2.tar.gz", hash = "sha256:6c3ccfe89c36f3e5b9837b9ee507472310164f352c9fe332120b764c9d60adbe"}, +] ecdsa = [ {file = "ecdsa-0.17.0-py2.py3-none-any.whl", hash = "sha256:5cf31d5b33743abe0dfc28999036c849a69d548f994b535e527ee3cb7f3ef676"}, {file = "ecdsa-0.17.0.tar.gz", hash = "sha256:b9f500bb439e4153d0330610f5d26baaf18d17b8ced1bc54410d189385ea68aa"}, @@ -741,29 +1087,48 @@ h11 = [ {file = "h11-0.12.0.tar.gz", hash = "sha256:47222cb6067e4a307d535814917cd98fd0a57b6788ce715755fa2b6c28b56042"}, ] httpcore = [ - {file = "httpcore-0.13.7-py3-none-any.whl", hash = "sha256:369aa481b014cf046f7067fddd67d00560f2f00426e79569d99cb11245134af0"}, - {file = "httpcore-0.13.7.tar.gz", hash = "sha256:036f960468759e633574d7c121afba48af6419615d36ab8ede979f1ad6276fa3"}, + {file = "httpcore-0.15.0-py3-none-any.whl", hash = "sha256:1105b8b73c025f23ff7c36468e4432226cbb959176eab66864b8e31c4ee27fa6"}, + {file = "httpcore-0.15.0.tar.gz", hash = "sha256:18b68ab86a3ccf3e7dc0f43598eaddcf472b602aba29f9aa6ab85fe2ada3980b"}, ] httptools = [ - {file = "httptools-0.2.0-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:79dbc21f3612a78b28384e989b21872e2e3cf3968532601544696e4ed0007ce5"}, - {file = "httptools-0.2.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:78d03dd39b09c99ec917d50189e6743adbfd18c15d5944392d2eabda688bf149"}, - {file = "httptools-0.2.0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:a23166e5ae2775709cf4f7ad4c2048755ebfb272767d244e1a96d55ac775cca7"}, - {file = "httptools-0.2.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:3ab1f390d8867f74b3b5ee2a7ecc9b8d7f53750bd45714bf1cb72a953d7dfa77"}, - {file = "httptools-0.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:a7594f9a010cdf1e16a58b3bf26c9da39bbf663e3b8d46d39176999d71816658"}, - {file = "httptools-0.2.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:01b392a166adcc8bc2f526a939a8aabf89fe079243e1543fd0e7dc1b58d737cb"}, - {file = "httptools-0.2.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:80ffa04fe8c8dfacf6e4cef8277347d35b0442c581f5814f3b0cf41b65c43c6e"}, - {file = "httptools-0.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d5682eeb10cca0606c4a8286a3391d4c3c5a36f0c448e71b8bd05be4e1694bfb"}, - {file = "httptools-0.2.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:a289c27ccae399a70eacf32df9a44059ca2ba4ac444604b00a19a6c1f0809943"}, - {file = "httptools-0.2.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:813871f961edea6cb2fe312f2d9b27d12a51ba92545380126f80d0de1917ea15"}, - {file = "httptools-0.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:cc9be041e428c10f8b6ab358c6b393648f9457094e1dcc11b4906026d43cd380"}, - {file = "httptools-0.2.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:b08d00d889a118f68f37f3c43e359aab24ee29eb2e3fe96d64c6a2ba8b9d6557"}, - {file = "httptools-0.2.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:fd3b8905e21431ad306eeaf56644a68fdd621bf8f3097eff54d0f6bdf7262065"}, - {file = "httptools-0.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:200fc1cdf733a9ff554c0bb97a4047785cfaad9875307d6087001db3eb2b417f"}, - {file = "httptools-0.2.0.tar.gz", hash = "sha256:94505026be56652d7a530ab03d89474dc6021019d6b8682281977163b3471ea0"}, + {file = "httptools-0.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fcddfe70553be717d9745990dfdb194e22ee0f60eb8f48c0794e7bfeda30d2d5"}, + {file = "httptools-0.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1ee0b459257e222b878a6c09ccf233957d3a4dcb883b0847640af98d2d9aac23"}, + {file = "httptools-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceafd5e960b39c7e0d160a1936b68eb87c5e79b3979d66e774f0c77d4d8faaed"}, + {file = "httptools-0.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fdb9f9ed79bc6f46b021b3319184699ba1a22410a82204e6e89c774530069683"}, + {file = "httptools-0.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:abe829275cdd4174b4c4e65ad718715d449e308d59793bf3a931ee1bf7e7b86c"}, + {file = "httptools-0.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7af6bdbd21a2a25d6784f6d67f44f5df33ef39b6159543b9f9064d365c01f919"}, + {file = "httptools-0.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:5d1fe6b6661022fd6cac541f54a4237496b246e6f1c0a6b41998ee08a1135afe"}, + {file = "httptools-0.4.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:48e48530d9b995a84d1d89ae6b3ec4e59ea7d494b150ac3bbc5e2ac4acce92cd"}, + {file = "httptools-0.4.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a113789e53ac1fa26edf99856a61e4c493868e125ae0dd6354cf518948fbbd5c"}, + {file = "httptools-0.4.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8e2eb957787cbb614a0f006bfc5798ff1d90ac7c4dd24854c84edbdc8c02369e"}, + {file = "httptools-0.4.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:7ee9f226acab9085037582c059d66769862706e8e8cd2340470ceb8b3850873d"}, + {file = "httptools-0.4.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:701e66b59dd21a32a274771238025d58db7e2b6ecebbab64ceff51b8e31527ae"}, + {file = "httptools-0.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6a1a7dfc1f9c78a833e2c4904757a0f47ce25d08634dd2a52af394eefe5f9777"}, + {file = "httptools-0.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:903f739c9fb78dab8970b0f3ea51f21955b24b45afa77b22ff0e172fc11ef111"}, + {file = "httptools-0.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54bbd295f031b866b9799dd39cb45deee81aca036c9bff9f58ca06726f6494f1"}, + {file = "httptools-0.4.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3194f6d6443befa8d4db16c1946b2fc428a3ceb8ab32eb6f09a59f86104dc1a0"}, + {file = "httptools-0.4.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cd1295f52971097f757edfbfce827b6dbbfb0f7a74901ee7d4933dff5ad4c9af"}, + {file = "httptools-0.4.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:20a45bcf22452a10fa8d58b7dbdb474381f6946bf5b8933e3662d572bc61bae4"}, + {file = "httptools-0.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d1f27bb0f75bef722d6e22dc609612bfa2f994541621cd2163f8c943b6463dfe"}, + {file = "httptools-0.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:7f7bfb74718f52d5ed47d608d507bf66d3bc01d4a8b3e6dd7134daaae129357b"}, + {file = "httptools-0.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a522d12e2ddbc2e91842ffb454a1aeb0d47607972c7d8fc88bd0838d97fb8a2a"}, + {file = "httptools-0.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2db44a0b294d317199e9f80123e72c6b005c55b625b57fae36de68670090fa48"}, + {file = "httptools-0.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c286985b5e194ca0ebb2908d71464b9be8f17cc66d6d3e330e8d5407248f56ad"}, + {file = "httptools-0.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d3a4e165ca6204f34856b765d515d558dc84f1352033b8721e8d06c3e44930c3"}, + {file = "httptools-0.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:72aa3fbe636b16d22e04b5a9d24711b043495e0ecfe58080addf23a1a37f3409"}, + {file = "httptools-0.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:9967d9758df505975913304c434cb9ab21e2c609ad859eb921f2f615a038c8de"}, + {file = "httptools-0.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f72b5d24d6730035128b238decdc4c0f2104b7056a7ca55cf047c106842ec890"}, + {file = "httptools-0.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:29bf97a5c532da9c7a04de2c7a9c31d1d54f3abd65a464119b680206bbbb1055"}, + {file = "httptools-0.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98993805f1e3cdb53de4eed02b55dcc953cdf017ba7bbb2fd89226c086a6d855"}, + {file = "httptools-0.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d9b90bf58f3ba04e60321a23a8723a1ff2a9377502535e70495e5ada8e6e6722"}, + {file = "httptools-0.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1a99346ebcb801b213c591540837340bdf6fd060a8687518d01c607d338b7424"}, + {file = "httptools-0.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:645373c070080e632480a3d251d892cb795be3d3a15f86975d0f1aca56fd230d"}, + {file = "httptools-0.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:34d2903dd2a3dd85d33705b6fde40bf91fc44411661283763fd0746723963c83"}, + {file = "httptools-0.4.0.tar.gz", hash = "sha256:2c9a930c378b3d15d6b695fb95ebcff81a7395b4f9775c4f10a076beb0b2c1ff"}, ] httpx = [ - {file = "httpx-0.19.0-py3-none-any.whl", hash = "sha256:9bd728a6c5ec0a9e243932a9983d57d3cc4a87bb4f554e1360fce407f78f9435"}, - {file = "httpx-0.19.0.tar.gz", hash = "sha256:92ecd2c00c688b529eda11cedb15161eaf02dee9116712f621c70d9a40b2cdd0"}, + {file = "httpx-0.23.0-py3-none-any.whl", hash = "sha256:42974f577483e1e932c3cdc3cd2303e883cbfba17fe228b0f63589764d7b9c4b"}, + {file = "httpx-0.23.0.tar.gz", hash = "sha256:f28eac771ec9eb4866d3fb4ab65abd42d38c424739e80c08d8d20570de60b0ef"}, ] idna = [ {file = "idna-3.2-py3-none-any.whl", hash = "sha256:14475042e284991034cb48e06f6851428fb14c4dc953acd9be9a5e95c7b6dd7a"}, @@ -773,6 +1138,14 @@ importlib-metadata = [ {file = "importlib_metadata-4.8.1-py3-none-any.whl", hash = "sha256:b618b6d2d5ffa2f16add5697cf57a46c76a56229b0ed1c438322e4e95645bd15"}, {file = "importlib_metadata-4.8.1.tar.gz", hash = "sha256:f284b3e11256ad1e5d03ab86bb2ccd6f5339688ff17a4d797a0fe7df326f23b1"}, ] +iniconfig = [ + {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, + {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, +] +isort = [ + {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, + {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, +] jinja2 = [ {file = "Jinja2-3.0.1-py3-none-any.whl", hash = "sha256:1f06f2da51e7b56b8f238affdd6b4e2c61e39598a378cc49345bc1bd42a978a4"}, {file = "Jinja2-3.0.1.tar.gz", hash = "sha256:703f484b47a6af502e743c9122595cc812b0271f661722403114f71a79d0f5a4"}, @@ -857,13 +1230,62 @@ markupsafe = [ {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"}, ] marshmallow = [ - {file = "marshmallow-3.13.0-py2.py3-none-any.whl", hash = "sha256:dd4724335d3c2b870b641ffe4a2f8728a1380cd2e7e2312756715ffeaa82b842"}, - {file = "marshmallow-3.13.0.tar.gz", hash = "sha256:c67929438fd73a2be92128caa0325b1b5ed8b626d91a094d2f7f2771bf1f1c0e"}, + {file = "marshmallow-3.17.0-py3-none-any.whl", hash = "sha256:00040ab5ea0c608e8787137627a8efae97fabd60552a05dc889c888f814e75eb"}, + {file = "marshmallow-3.17.0.tar.gz", hash = "sha256:635fb65a3285a31a30f276f30e958070f5214c7196202caa5c7ecf28f5274bc7"}, +] +mock = [ + {file = "mock-4.0.3-py3-none-any.whl", hash = "sha256:122fcb64ee37cfad5b3f48d7a7d51875d7031aaf3d8be7c42e2bee25044eee62"}, + {file = "mock-4.0.3.tar.gz", hash = "sha256:7d3fbbde18228f4ff2f1f119a45cdffa458b4c0dee32eb4d2bb2f82554bac7bc"}, +] +mypy = [ + {file = "mypy-0.971-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f2899a3cbd394da157194f913a931edfd4be5f274a88041c9dc2d9cdcb1c315c"}, + {file = "mypy-0.971-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:98e02d56ebe93981c41211c05adb630d1d26c14195d04d95e49cd97dbc046dc5"}, + {file = "mypy-0.971-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:19830b7dba7d5356d3e26e2427a2ec91c994cd92d983142cbd025ebe81d69cf3"}, + {file = "mypy-0.971-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:02ef476f6dcb86e6f502ae39a16b93285fef97e7f1ff22932b657d1ef1f28655"}, + {file = "mypy-0.971-cp310-cp310-win_amd64.whl", hash = "sha256:25c5750ba5609a0c7550b73a33deb314ecfb559c350bb050b655505e8aed4103"}, + {file = "mypy-0.971-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d3348e7eb2eea2472db611486846742d5d52d1290576de99d59edeb7cd4a42ca"}, + {file = "mypy-0.971-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3fa7a477b9900be9b7dd4bab30a12759e5abe9586574ceb944bc29cddf8f0417"}, + {file = "mypy-0.971-cp36-cp36m-win_amd64.whl", hash = "sha256:2ad53cf9c3adc43cf3bea0a7d01a2f2e86db9fe7596dfecb4496a5dda63cbb09"}, + {file = "mypy-0.971-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:855048b6feb6dfe09d3353466004490b1872887150c5bb5caad7838b57328cc8"}, + {file = "mypy-0.971-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:23488a14a83bca6e54402c2e6435467a4138785df93ec85aeff64c6170077fb0"}, + {file = "mypy-0.971-cp37-cp37m-win_amd64.whl", hash = "sha256:4b21e5b1a70dfb972490035128f305c39bc4bc253f34e96a4adf9127cf943eb2"}, + {file = "mypy-0.971-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:9796a2ba7b4b538649caa5cecd398d873f4022ed2333ffde58eaf604c4d2cb27"}, + {file = "mypy-0.971-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5a361d92635ad4ada1b1b2d3630fc2f53f2127d51cf2def9db83cba32e47c856"}, + {file = "mypy-0.971-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b793b899f7cf563b1e7044a5c97361196b938e92f0a4343a5d27966a53d2ec71"}, + {file = "mypy-0.971-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d1ea5d12c8e2d266b5fb8c7a5d2e9c0219fedfeb493b7ed60cd350322384ac27"}, + {file = "mypy-0.971-cp38-cp38-win_amd64.whl", hash = "sha256:23c7ff43fff4b0df93a186581885c8512bc50fc4d4910e0f838e35d6bb6b5e58"}, + {file = "mypy-0.971-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1f7656b69974a6933e987ee8ffb951d836272d6c0f81d727f1d0e2696074d9e6"}, + {file = "mypy-0.971-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d2022bfadb7a5c2ef410d6a7c9763188afdb7f3533f22a0a32be10d571ee4bbe"}, + {file = "mypy-0.971-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef943c72a786b0f8d90fd76e9b39ce81fb7171172daf84bf43eaf937e9f220a9"}, + {file = "mypy-0.971-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d744f72eb39f69312bc6c2abf8ff6656973120e2eb3f3ec4f758ed47e414a4bf"}, + {file = "mypy-0.971-cp39-cp39-win_amd64.whl", hash = "sha256:77a514ea15d3007d33a9e2157b0ba9c267496acf12a7f2b9b9f8446337aac5b0"}, + {file = "mypy-0.971-py3-none-any.whl", hash = "sha256:0d054ef16b071149917085f51f89555a576e2618d5d9dd70bd6eea6410af3ac9"}, + {file = "mypy-0.971.tar.gz", hash = "sha256:40b0f21484238269ae6a57200c807d80debc6459d444c0489a102d7c6a75fa56"}, +] +mypy-extensions = [ + {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, + {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, ] outcome = [ {file = "outcome-1.1.0-py2.py3-none-any.whl", hash = "sha256:c7dd9375cfd3c12db9801d080a3b63d4b0a261aa996c4c13152380587288d958"}, {file = "outcome-1.1.0.tar.gz", hash = "sha256:e862f01d4e626e63e8f92c38d1f8d5546d3f9cce989263c521b2e7990d186967"}, ] +packaging = [ + {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, + {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, +] +pathspec = [ + {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, + {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, +] +platformdirs = [ + {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, + {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, +] +pluggy = [ + {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, + {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, +] psycopg2-binary = [ {file = "psycopg2-binary-2.9.1.tar.gz", hash = "sha256:b0221ca5a9837e040ebf61f48899926b5783668b7807419e4adae8175a31f773"}, {file = "psycopg2_binary-2.9.1-cp310-cp310-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:24b0b6688b9f31a911f2361fe818492650795c9e5d3a1bc647acbd7440142a4f"}, @@ -902,6 +1324,10 @@ psycopg2-binary = [ {file = "psycopg2_binary-2.9.1-cp39-cp39-win32.whl", hash = "sha256:0b7dae87f0b729922e06f85f667de7bf16455d411971b2043bbd9577af9d1975"}, {file = "psycopg2_binary-2.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:b4d7679a08fea64573c969f6994a2631908bb2c0e69a7235648642f3d2e39a68"}, ] +py = [ + {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, + {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, +] pycparser = [ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, @@ -959,6 +1385,10 @@ pydantic = [ {file = "pydantic-1.8.2-py3-none-any.whl", hash = "sha256:fec866a0b59f372b7e776f2d7308511784dace622e0992a0b59ea3ccee0ae833"}, {file = "pydantic-1.8.2.tar.gz", hash = "sha256:26464e57ccaafe72b7ad156fdaa4e9b9ef051f69e175dbbb463283000c05ab7b"}, ] +pyparsing = [ + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, +] pypng = [ {file = "pypng-0.0.21-py3-none-any.whl", hash = "sha256:76f8a1539ec56451da7ab7121f12a361969fe0f2d48d703d198ce2a99d6c5afd"}, ] @@ -969,6 +1399,18 @@ pyqrcode = [ pyscss = [ {file = "pyScss-1.3.7.tar.gz", hash = "sha256:f1df571569021a23941a538eb154405dde80bed35dc1ea7c5f3e18e0144746bf"}, ] +pytest = [ + {file = "pytest-7.1.2-py3-none-any.whl", hash = "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c"}, + {file = "pytest-7.1.2.tar.gz", hash = "sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45"}, +] +pytest-asyncio = [ + {file = "pytest-asyncio-0.19.0.tar.gz", hash = "sha256:ac4ebf3b6207259750bc32f4c1d8fcd7e79739edbc67ad0c58dd150b1d072fed"}, + {file = "pytest_asyncio-0.19.0-py3-none-any.whl", hash = "sha256:7a97e37cfe1ed296e2e84941384bdd37c376453912d397ed39293e0916f521fa"}, +] +pytest-cov = [ + {file = "pytest-cov-3.0.0.tar.gz", hash = "sha256:e7f0f5b1617d2210a2cabc266dfe2f4c75a8d32fb89eafb7ad9d06f6d076d470"}, + {file = "pytest_cov-3.0.0-py3-none-any.whl", hash = "sha256:578d5d15ac4a25e5f961c938b85a05b09fdaae9deef3bb6de9a6e766622ca7a6"}, +] python-dotenv = [ {file = "python-dotenv-0.19.0.tar.gz", hash = "sha256:f521bc2ac9a8e03c736f62911605c5d83970021e3fa95b37d769e2bbbe9b6172"}, {file = "python_dotenv-0.19.0-py2.py3-none-any.whl", hash = "sha256:aae25dc1ebe97c420f50b81fb0e5c949659af713f31fdb63c749ca68748f34b1"}, @@ -1090,8 +1532,8 @@ sqlalchemy = [ {file = "SQLAlchemy-1.3.23.tar.gz", hash = "sha256:6fca33672578666f657c131552c4ef8979c1606e494f78cd5199742dfb26918b"}, ] sqlalchemy-aio = [ - {file = "sqlalchemy_aio-0.16.0-py2.py3-none-any.whl", hash = "sha256:f767320427c22c66fa5840a1f17f3261110a8ddc8560558f4fbf12d31a66b17b"}, - {file = "sqlalchemy_aio-0.16.0.tar.gz", hash = "sha256:7f77366f55d34891c87386dd0962a28b948b684e8ea5edb7daae4187c0b291bf"}, + {file = "sqlalchemy_aio-0.17.0-py3-none-any.whl", hash = "sha256:3f4aa392c38f032d6734826a4138a0f02ed3122d442ed142be1e5964f2a33b60"}, + {file = "sqlalchemy_aio-0.17.0.tar.gz", hash = "sha256:f531c7982662d71dfc0b117e77bb2ed544e25cd5361e76cf9f5208edcfb71f7b"}, ] sse-starlette = [ {file = "sse-starlette-0.6.2.tar.gz", hash = "sha256:1c0cc62cc7d021a386dc06a16a9ddc3e2861d19da6bc2e654e65cc111e820456"}, @@ -1100,6 +1542,40 @@ starlette = [ {file = "starlette-0.19.1-py3-none-any.whl", hash = "sha256:5a60c5c2d051f3a8eb546136aa0c9399773a689595e099e0877704d5888279bf"}, {file = "starlette-0.19.1.tar.gz", hash = "sha256:c6d21096774ecb9639acad41b86b7706e52ba3bf1dc13ea4ed9ad593d47e24c7"}, ] +tomli = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] +typed-ast = [ + {file = "typed_ast-1.5.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:669dd0c4167f6f2cd9f57041e03c3c2ebf9063d0757dc89f79ba1daa2bfca9d4"}, + {file = "typed_ast-1.5.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:211260621ab1cd7324e0798d6be953d00b74e0428382991adfddb352252f1d62"}, + {file = "typed_ast-1.5.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:267e3f78697a6c00c689c03db4876dd1efdfea2f251a5ad6555e82a26847b4ac"}, + {file = "typed_ast-1.5.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c542eeda69212fa10a7ada75e668876fdec5f856cd3d06829e6aa64ad17c8dfe"}, + {file = "typed_ast-1.5.4-cp310-cp310-win_amd64.whl", hash = "sha256:a9916d2bb8865f973824fb47436fa45e1ebf2efd920f2b9f99342cb7fab93f72"}, + {file = "typed_ast-1.5.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:79b1e0869db7c830ba6a981d58711c88b6677506e648496b1f64ac7d15633aec"}, + {file = "typed_ast-1.5.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a94d55d142c9265f4ea46fab70977a1944ecae359ae867397757d836ea5a3f47"}, + {file = "typed_ast-1.5.4-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:183afdf0ec5b1b211724dfef3d2cad2d767cbefac291f24d69b00546c1837fb6"}, + {file = "typed_ast-1.5.4-cp36-cp36m-win_amd64.whl", hash = "sha256:639c5f0b21776605dd6c9dbe592d5228f021404dafd377e2b7ac046b0349b1a1"}, + {file = "typed_ast-1.5.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cf4afcfac006ece570e32d6fa90ab74a17245b83dfd6655a6f68568098345ff6"}, + {file = "typed_ast-1.5.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed855bbe3eb3715fca349c80174cfcfd699c2f9de574d40527b8429acae23a66"}, + {file = "typed_ast-1.5.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6778e1b2f81dfc7bc58e4b259363b83d2e509a65198e85d5700dfae4c6c8ff1c"}, + {file = "typed_ast-1.5.4-cp37-cp37m-win_amd64.whl", hash = "sha256:0261195c2062caf107831e92a76764c81227dae162c4f75192c0d489faf751a2"}, + {file = "typed_ast-1.5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2efae9db7a8c05ad5547d522e7dbe62c83d838d3906a3716d1478b6c1d61388d"}, + {file = "typed_ast-1.5.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7d5d014b7daa8b0bf2eaef684295acae12b036d79f54178b92a2b6a56f92278f"}, + {file = "typed_ast-1.5.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:370788a63915e82fd6f212865a596a0fefcbb7d408bbbb13dea723d971ed8bdc"}, + {file = "typed_ast-1.5.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4e964b4ff86550a7a7d56345c7864b18f403f5bd7380edf44a3c1fb4ee7ac6c6"}, + {file = "typed_ast-1.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:683407d92dc953c8a7347119596f0b0e6c55eb98ebebd9b23437501b28dcbb8e"}, + {file = "typed_ast-1.5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4879da6c9b73443f97e731b617184a596ac1235fe91f98d279a7af36c796da35"}, + {file = "typed_ast-1.5.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3e123d878ba170397916557d31c8f589951e353cc95fb7f24f6bb69adc1a8a97"}, + {file = "typed_ast-1.5.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebd9d7f80ccf7a82ac5f88c521115cc55d84e35bf8b446fcd7836eb6b98929a3"}, + {file = "typed_ast-1.5.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98f80dee3c03455e92796b58b98ff6ca0b2a6f652120c263efdba4d6c5e58f72"}, + {file = "typed_ast-1.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:0fdbcf2fef0ca421a3f5912555804296f0b0960f0418c440f5d6d3abb549f3e1"}, + {file = "typed_ast-1.5.4.tar.gz", hash = "sha256:39e21ceb7388e4bb37f4c679d72707ed46c2fbf2a5609b8b8ebc4b067d977df2"}, +] +types-protobuf = [ + {file = "types-protobuf-3.19.22.tar.gz", hash = "sha256:d2b26861b0cb46a3c8669b0df507b7ef72e487da66d61f9f3576aa76ce028a83"}, + {file = "types_protobuf-3.19.22-py3-none-any.whl", hash = "sha256:d291388678af91bb045fafa864f142dc4ac22f5d4cdca097c7d8d8a32fa9b3ab"}, +] typing-extensions = [ {file = "typing_extensions-3.10.0.2-py2-none-any.whl", hash = "sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7"}, {file = "typing_extensions-3.10.0.2-py3-none-any.whl", hash = "sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34"}, @@ -1131,6 +1607,10 @@ watchgod = [ {file = "watchgod-0.7-py3-none-any.whl", hash = "sha256:d6c1ea21df37847ac0537ca0d6c2f4cdf513562e95f77bb93abbcf05573407b7"}, {file = "watchgod-0.7.tar.gz", hash = "sha256:48140d62b0ebe9dd9cf8381337f06351e1f2e70b2203fa9c6eff4e572ca84f29"}, ] +websocket-client = [ + {file = "websocket-client-1.3.3.tar.gz", hash = "sha256:d58c5f284d6a9bf8379dab423259fe8f85b70d5fa5d2916d5791a84594b122b1"}, + {file = "websocket_client-1.3.3-py3-none-any.whl", hash = "sha256:5d55652dc1d0b3c734f044337d929aaf83f4f9138816ec680c1aefefb4dc4877"}, +] websockets = [ {file = "websockets-10.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cd8c6f2ec24aedace251017bc7a414525171d4e6578f914acab9349362def4da"}, {file = "websockets-10.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:1f6b814cff6aadc4288297cb3a248614829c6e4ff5556593c44a115e9dd49939"}, @@ -1158,7 +1638,10 @@ websockets = [ {file = "websockets-10.0-cp39-cp39-win_amd64.whl", hash = "sha256:c5880442f5fc268f1ef6d37b2c152c114deccca73f48e3a8c48004d2f16f4567"}, {file = "websockets-10.0.tar.gz", hash = "sha256:c4fc9a1d242317892590abe5b61a9127f1a61740477bfb121743f290b8054002"}, ] -win32-setctime = [] +win32-setctime = [ + {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, + {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"}, +] zipp = [ {file = "zipp-3.5.0-py3-none-any.whl", hash = "sha256:957cfda87797e389580cb8b9e3870841ca991e2125350677b2ca83a0e99390a3"}, {file = "zipp-3.5.0.tar.gz", hash = "sha256:f5812b1e007e48cff63449a5e9f4e7ebea716b4111f9c4f9a645f91d579bf0c4"}, diff --git a/pyproject.toml b/pyproject.toml index 5c4bc7a05..1ae8c1fec 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,8 +9,8 @@ generate-setup-file = false script = "build.py" [tool.poetry.dependencies] -python = "^3.9" -aiofiles = "0.7.0" +python = "^3.9 | ^3.8 | ^3.7" +aiofiles = "0.8.0" asgiref = "3.4.1" attrs = "21.2.0" bech32 = "1.2.0" @@ -24,15 +24,15 @@ embit = "0.4.9" environs = "9.3.3" fastapi = "0.78.0" h11 = "0.12.0" -httpcore = "0.13.7" -httptools = "0.2.0" -httpx = "0.19.0" +httpcore = "0.15.0" +httptools = "0.4.0" +httpx = "0.23.0" idna = "3.2" importlib-metadata = "4.8.1" jinja2 = "3.0.1" lnurl = "0.3.6" markupsafe = "2.0.1" -marshmallow = "3.13.0" +marshmallow = "3.17.0" outcome = "1.1.0" psycopg2-binary = "2.9.1" pycryptodomex = "3.14.1" @@ -49,7 +49,7 @@ shortuuid = "1.0.1" six = "1.16.0" sniffio = "1.2.0" sqlalchemy = "1.3.23" -sqlalchemy-aio = "0.16.0" +sqlalchemy-aio = "0.17.0" sse-starlette = "0.6.2" typing-extensions = "3.10.0.2" uvicorn = "0.18.1" @@ -59,8 +59,17 @@ websockets = "10.0" zipp = "3.5.0" loguru = "0.5.3" cffi = "1.15.0" +websocket-client = "1.3.3" [tool.poetry.dev-dependencies] +isort = "^5.10.1" +pytest = "^7.1.2" +mock = "^4.0.3" +black = "^22.6.0" +pytest-asyncio = "^0.19.0" +pytest-cov = "^3.0.0" +mypy = "^0.971" +types-protobuf = "^3.19.22" [build-system] requires = ["poetry-core>=1.0.0"] @@ -68,3 +77,20 @@ build-backend = "poetry.core.masonry.api" [tool.poetry.scripts] lnbits = "lnbits.server:main" + +[tool.isort] +profile = "black" + +[tool.mypy] +ignore_missing_imports = "True" +files = "lnbits" +exclude = """(?x)( + ^lnbits/extensions. + | ^lnbits/wallets/lnd_grpc_files. +)""" + +[tool.pytest.ini_options] +addopts = "--durations=1 -s --cov=lnbits --cov-report=xml" +testpaths = [ + "tests" +] diff --git a/pytest.ini b/pytest.ini deleted file mode 100644 index 33eea0522..000000000 --- a/pytest.ini +++ /dev/null @@ -1,3 +0,0 @@ -[pytest] -filterwarnings = - ignore::pytest.PytestCacheWarning diff --git a/requirements.txt b/requirements.txt index 23d428e54..697ea1d4d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -50,3 +50,4 @@ uvicorn==0.18.2 uvloop==0.16.0 watchfiles==0.16.0 websockets==10.3 +websocket-client==1.3.3 diff --git a/tests/conftest.py b/tests/conftest.py index adb1fa362..1e719c76a 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,19 +1,17 @@ import asyncio -import pytest_asyncio +from typing import Tuple +import pytest_asyncio from httpx import AsyncClient + from lnbits.app import create_app from lnbits.commands import migrate_databases -from lnbits.settings import HOST, PORT - -from lnbits.core.views.api import api_payments_create_invoice, CreateInvoiceData - from lnbits.core.crud import create_account, create_wallet, get_wallet -from tests.helpers import credit_wallet, get_random_invoice_data - +from lnbits.core.models import BalanceCheck, Payment, User, Wallet +from lnbits.core.views.api import CreateInvoiceData, api_payments_create_invoice from lnbits.db import Database -from lnbits.core.models import User, Wallet, Payment, BalanceCheck -from typing import Tuple +from lnbits.settings import HOST, PORT +from tests.helpers import credit_wallet, get_random_invoice_data @pytest_asyncio.fixture(scope="session") @@ -122,12 +120,8 @@ async def adminkey_headers_to(to_wallet): @pytest_asyncio.fixture(scope="session") async def invoice(to_wallet): - wallet = to_wallet data = await get_random_invoice_data() invoiceData = CreateInvoiceData(**data) - stuff_lock = asyncio.Lock() - async with stuff_lock: - invoice = await api_payments_create_invoice(invoiceData, wallet) - await asyncio.sleep(1) + invoice = await api_payments_create_invoice(invoiceData, to_wallet) yield invoice del invoice diff --git a/tests/core/views/test_api.py b/tests/core/views/test_api.py index dfd2b32ae..9dd13004c 100644 --- a/tests/core/views/test_api.py +++ b/tests/core/views/test_api.py @@ -1,10 +1,20 @@ +import hashlib +from binascii import hexlify + import pytest import pytest_asyncio + +from lnbits import bolt11 from lnbits.core.crud import get_wallet -from lnbits.core.views.api import api_payment +from lnbits.core.views.api import ( + CreateInvoiceData, + api_payment, + api_payments_create_invoice, +) from ...helpers import get_random_invoice_data + # check if the client is working @pytest.mark.asyncio async def test_core_views_generic(client): @@ -179,3 +189,21 @@ async def test_api_payment_with_key(invoice, inkey_headers_from): assert type(response) == dict assert response["paid"] == True assert "details" in response + + +# check POST /api/v1/payments: invoice creation with a description hash +@pytest.mark.asyncio +async def test_create_invoice_with_description_hash(client, inkey_headers_to): + data = await get_random_invoice_data() + descr_hash = hashlib.sha256("asdasdasd".encode("utf-8")).hexdigest() + data["description_hash"] = "asdasdasd".encode("utf-8").hex() + + response = await client.post( + "/api/v1/payments", json=data, headers=inkey_headers_to + ) + invoice = response.json() + + invoice_bolt11 = bolt11.decode(invoice["payment_request"]) + assert invoice_bolt11.description_hash == descr_hash + assert invoice_bolt11.description is None + return invoice diff --git a/tests/core/views/test_generic.py b/tests/core/views/test_generic.py index 6e6354d1b..4300b78b9 100644 --- a/tests/core/views/test_generic.py +++ b/tests/core/views/test_generic.py @@ -1,5 +1,6 @@ import pytest import pytest_asyncio + from tests.conftest import client diff --git a/tests/core/views/test_public_api.py b/tests/core/views/test_public_api.py index d9c253c2b..6ebaeabd3 100644 --- a/tests/core/views/test_public_api.py +++ b/tests/core/views/test_public_api.py @@ -1,7 +1,9 @@ import pytest import pytest_asyncio + from lnbits.core.crud import get_wallet + # check if the client is working @pytest.mark.asyncio async def test_core_views_generic(client): diff --git a/tests/extensions/bleskomat/conftest.py b/tests/extensions/bleskomat/conftest.py index b4ad0bfc0..13be2b579 100644 --- a/tests/extensions/bleskomat/conftest.py +++ b/tests/extensions/bleskomat/conftest.py @@ -1,17 +1,19 @@ import json +import secrets + import pytest import pytest_asyncio -import secrets + from lnbits.core.crud import create_account, create_wallet from lnbits.extensions.bleskomat.crud import create_bleskomat, create_bleskomat_lnurl -from lnbits.extensions.bleskomat.models import CreateBleskomat +from lnbits.extensions.bleskomat.exchange_rates import exchange_rate_providers from lnbits.extensions.bleskomat.helpers import ( generate_bleskomat_lnurl_secret, generate_bleskomat_lnurl_signature, prepare_lnurl_params, query_to_signing_payload, ) -from lnbits.extensions.bleskomat.exchange_rates import exchange_rate_providers +from lnbits.extensions.bleskomat.models import CreateBleskomat exchange_rate_providers["dummy"] = { "name": "dummy", diff --git a/tests/extensions/bleskomat/test_lnurl_api.py b/tests/extensions/bleskomat/test_lnurl_api.py index 0189e119b..0100a62da 100644 --- a/tests/extensions/bleskomat/test_lnurl_api.py +++ b/tests/extensions/bleskomat/test_lnurl_api.py @@ -1,16 +1,18 @@ +import secrets + import pytest import pytest_asyncio -import secrets + from lnbits.core.crud import get_wallet -from lnbits.settings import HOST, PORT from lnbits.extensions.bleskomat.crud import get_bleskomat_lnurl from lnbits.extensions.bleskomat.helpers import ( generate_bleskomat_lnurl_signature, query_to_signing_payload, ) +from lnbits.settings import HOST, PORT from tests.conftest import client -from tests.helpers import credit_wallet from tests.extensions.bleskomat.conftest import bleskomat, lnurl +from tests.helpers import credit_wallet from tests.mocks import WALLET diff --git a/tests/helpers.py b/tests/helpers.py index 0ba1963df..7be26ce37 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -1,7 +1,8 @@ import hashlib -import secrets import random +import secrets import string + from lnbits.core.crud import create_payment diff --git a/tests/mocks.py b/tests/mocks.py index c99691cbc..65e8440a6 100644 --- a/tests/mocks.py +++ b/tests/mocks.py @@ -1,12 +1,8 @@ from mock import AsyncMock -from lnbits import bolt11 -from lnbits.wallets.base import ( - StatusResponse, - PaymentResponse, - PaymentStatus, -) -from lnbits.settings import WALLET +from lnbits import bolt11 +from lnbits.settings import WALLET +from lnbits.wallets.base import PaymentResponse, PaymentStatus, StatusResponse from lnbits.wallets.fake import FakeWallet from .helpers import get_random_string diff --git a/tools/conv.py b/tools/conv.py index b93bcfbea..10e8c9cdd 100644 --- a/tools/conv.py +++ b/tools/conv.py @@ -1,6 +1,7 @@ import argparse import os import sqlite3 +from typing import List import psycopg2 from environs import Env # type: ignore @@ -110,627 +111,59 @@ def insert_to_pg(query, data): connection.close() -def migrate_core(sqlite_db_file): - sq = get_sqlite_cursor(sqlite_db_file) +def migrate_core(file: str, exclude_tables: List[str] = []): + print(f"Migrating core: {file}") + migrate_db(file, "public", exclude_tables) + print("✅ Migrated core") - # ACCOUNTS - res = sq.execute("SELECT * FROM accounts;") - q = f"INSERT INTO public.accounts (id, email, pass) VALUES (%s, %s, %s);" - insert_to_pg(q, res.fetchall()) - # WALLETS - res = sq.execute("SELECT * FROM wallets;") - q = f'INSERT INTO public.wallets (id, name, "user", adminkey, inkey) VALUES (%s, %s, %s, %s, %s);' - insert_to_pg(q, res.fetchall()) +def migrate_ext(file: str): + filename = os.path.basename(file) + schema = filename.replace("ext_", "").split(".")[0] + print(f"Migrating ext: {file}.{schema}") + migrate_db(file, schema) + print(f"✅ Migrated ext: {schema}") - # API PAYMENTS - res = sq.execute("SELECT * FROM apipayments;") - q = f""" - INSERT INTO public.apipayments( - checking_id, amount, fee, wallet, pending, memo, "time", hash, preimage, bolt11, extra, webhook, webhook_status) - VALUES (%s, %s, %s, %s, %s::boolean, %s, to_timestamp(%s), %s, %s, %s, %s, %s, %s); + +def migrate_db(file: str, schema: str, exclude_tables: List[str] = []): + sq = get_sqlite_cursor(file) + tables = sq.execute( + """ + SELECT name FROM sqlite_master + WHERE type='table' AND name not like 'sqlite?_%' escape '?' """ - insert_to_pg(q, res.fetchall()) + ).fetchall() - # BALANCE CHECK - res = sq.execute("SELECT * FROM balance_check;") - q = f"INSERT INTO public.balance_check(wallet, service, url) VALUES (%s, %s, %s);" - insert_to_pg(q, res.fetchall()) + for table in tables: + tableName = table[0] + if tableName in exclude_tables: + continue - # BALANCE NOTIFY - res = sq.execute("SELECT * FROM balance_notify;") - q = f"INSERT INTO public.balance_notify(wallet, url) VALUES (%s, %s);" - insert_to_pg(q, res.fetchall()) + columns = sq.execute(f"PRAGMA table_info({tableName})").fetchall() + q = build_insert_query(schema, tableName, columns) - # EXTENSIONS - res = sq.execute("SELECT * FROM extensions;") - q = f'INSERT INTO public.extensions("user", extension, active) VALUES (%s, %s, %s::boolean);' - insert_to_pg(q, res.fetchall()) - - print("Migrated: core") - - -def migrate_ext(sqlite_db_file, schema, ignore_missing=True): - - # skip this file it has been moved to ext_lnurldevices.sqlite3 - if sqlite_db_file == "data/ext_lnurlpos.sqlite3": - return - - print(f"Migrating {sqlite_db_file}.{schema}") - sq = get_sqlite_cursor(sqlite_db_file) - if schema == "bleskomat": - # BLESKOMAT LNURLS - res = sq.execute("SELECT * FROM bleskomat_lnurls;") - q = f""" - INSERT INTO bleskomat.bleskomat_lnurls( - id, bleskomat, wallet, hash, tag, params, api_key_id, initial_uses, remaining_uses, created_time, updated_time) - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s); - """ - insert_to_pg(q, res.fetchall()) - - # BLESKOMATS - res = sq.execute("SELECT * FROM bleskomats;") - q = f""" - INSERT INTO bleskomat.bleskomats( - id, wallet, api_key_id, api_key_secret, api_key_encoding, name, fiat_currency, exchange_rate_provider, fee) - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s); - """ - insert_to_pg(q, res.fetchall()) - elif schema == "captcha": - # CAPTCHA - res = sq.execute("SELECT * FROM captchas;") - q = f""" - INSERT INTO captcha.captchas( - id, wallet, url, memo, description, amount, "time", remembers, extras) - VALUES (%s, %s, %s, %s, %s, %s, to_timestamp(%s), %s, %s); - """ - insert_to_pg(q, res.fetchall()) - elif schema == "copilot": - # OLD COPILOTS - res = sq.execute("SELECT * FROM copilots;") - q = f""" - INSERT INTO copilot.copilots( - id, "user", title, lnurl_toggle, wallet, animation1, animation2, animation3, animation1threshold, animation2threshold, animation3threshold, animation1webhook, animation2webhook, animation3webhook, lnurl_title, show_message, show_ack, show_price, amount_made, fullscreen_cam, iframe_url, "timestamp") - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, to_timestamp(%s)); - """ - insert_to_pg(q, res.fetchall()) - - # NEW COPILOTS - q = f""" - INSERT INTO copilot.newer_copilots( - id, "user", title, lnurl_toggle, wallet, animation1, animation2, animation3, animation1threshold, animation2threshold, animation3threshold, animation1webhook, animation2webhook, animation3webhook, lnurl_title, show_message, show_ack, show_price, amount_made, fullscreen_cam, iframe_url, "timestamp") - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, to_timestamp(%s)); - """ - insert_to_pg(q, res.fetchall()) - elif schema == "events": - # EVENTS - res = sq.execute("SELECT * FROM events;") - q = f""" - INSERT INTO events.events( - id, wallet, name, info, closing_date, event_start_date, event_end_date, amount_tickets, price_per_ticket, sold, "time") - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, to_timestamp(%s)); - """ - insert_to_pg(q, res.fetchall()) - # EVENT TICKETS - res = sq.execute("SELECT * FROM ticket;") - q = f""" - INSERT INTO events.ticket( - id, wallet, event, name, email, registered, paid, "time") - VALUES (%s, %s, %s, %s, %s, %s::boolean, %s::boolean, to_timestamp(%s)); - """ - insert_to_pg(q, res.fetchall()) - elif schema == "example": - # Example doesn't have a database at the moment - pass - elif schema == "hivemind": - # Hivemind doesn't have a database at the moment - pass - elif schema == "jukebox": - # JUKEBOXES - res = sq.execute("SELECT * FROM jukebox;") - q = f""" - INSERT INTO jukebox.jukebox( - id, "user", title, wallet, inkey, sp_user, sp_secret, sp_access_token, sp_refresh_token, sp_device, sp_playlists, price, profit) - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s); - """ - insert_to_pg(q, res.fetchall()) - # JUKEBOX PAYMENTS - res = sq.execute("SELECT * FROM jukebox_payment;") - q = f""" - INSERT INTO jukebox.jukebox_payment( - payment_hash, juke_id, song_id, paid) - VALUES (%s, %s, %s, %s::boolean); - """ - insert_to_pg(q, res.fetchall()) - elif schema == "withdraw": - # WITHDRAW LINK - res = sq.execute("SELECT * FROM withdraw_link;") - q = f""" - INSERT INTO withdraw.withdraw_link ( - id, - wallet, - title, - min_withdrawable, - max_withdrawable, - uses, - wait_time, - is_unique, - unique_hash, - k1, - open_time, - used, - usescsv, - webhook_url, - custom_url - ) - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s); - """ - insert_to_pg(q, res.fetchall()) - # WITHDRAW HASH CHECK - res = sq.execute("SELECT * FROM hash_check;") - q = f""" - INSERT INTO withdraw.hash_check (id, lnurl_id) - VALUES (%s, %s); - """ - insert_to_pg(q, res.fetchall()) - elif schema == "watchonly": - # WALLETS - res = sq.execute("SELECT * FROM wallets;") - q = f""" - INSERT INTO watchonly.wallets ( - id, - "user", - masterpub, - title, - address_no, - balance, - type, - fingerprint - ) - VALUES (%s, %s, %s, %s, %s, %s, %s, %s); - """ - insert_to_pg(q, res.fetchall()) - # ADDRESSES - res = sq.execute("SELECT * FROM addresses;") - q = f""" - INSERT INTO watchonly.addresses (id, address, wallet, amount, branch_index, address_index, has_activity, note) - VALUES (%s, %s, %s, %s, %s, %s, %s::boolean, %s); - """ - insert_to_pg(q, res.fetchall()) - # CONFIG - res = sq.execute("SELECT * FROM config;") - q = f""" - INSERT INTO watchonly.config ("user", json_data) - VALUES (%s, %s); - """ - insert_to_pg(q, res.fetchall()) - elif schema == "usermanager": - # USERS - res = sq.execute("SELECT * FROM users;") - q = f""" - INSERT INTO usermanager.users (id, name, admin, email, password) - VALUES (%s, %s, %s, %s, %s); - """ - insert_to_pg(q, res.fetchall()) - # WALLETS - res = sq.execute("SELECT * FROM wallets;") - q = f""" - INSERT INTO usermanager.wallets (id, admin, name, "user", adminkey, inkey) - VALUES (%s, %s, %s, %s, %s, %s); - """ - insert_to_pg(q, res.fetchall()) - elif schema == "tpos": - # TPOSS - res = sq.execute("SELECT * FROM tposs;") - q = f""" - INSERT INTO tpos.tposs (id, wallet, name, currency, tip_wallet, tip_options) - VALUES (%s, %s, %s, %s, %s, %s); - """ - insert_to_pg(q, res.fetchall()) - elif schema == "tipjar": - # TIPJARS - res = sq.execute("SELECT * FROM TipJars;") - q = f""" - INSERT INTO tipjar.TipJars (id, name, wallet, onchain, webhook) - VALUES (%s, %s, %s, %s, %s); - """ - pay_links = res.fetchall() - insert_to_pg(q, pay_links) - fix_id("tipjar.tipjars_id_seq", pay_links) - # TIPS - res = sq.execute("SELECT * FROM Tips;") - q = f""" - INSERT INTO tipjar.Tips (id, wallet, name, message, sats, tipjar) - VALUES (%s, %s, %s, %s, %s, %s); - """ - insert_to_pg(q, res.fetchall()) - elif schema == "subdomains": - # DOMAIN - res = sq.execute("SELECT * FROM domain;") - q = f""" - INSERT INTO subdomains.domain ( - id, - wallet, - domain, - webhook, - cf_token, - cf_zone_id, - description, - cost, - amountmade, - allowed_record_types, - time - ) - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, to_timestamp(%s)); - """ - insert_to_pg(q, res.fetchall()) - # SUBDOMAIN - res = sq.execute("SELECT * FROM subdomain;") - q = f""" - INSERT INTO subdomains.subdomain ( - id, - domain, - email, - subdomain, - ip, - wallet, - sats, - duration, - paid, - record_type, - time - ) - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s::boolean, %s, to_timestamp(%s)); - """ - insert_to_pg(q, res.fetchall()) - elif schema == "streamalerts": - # SERVICES - res = sq.execute("SELECT * FROM Services;") - q = f""" - INSERT INTO streamalerts.Services ( - id, - state, - twitchuser, - client_id, - client_secret, - wallet, - onchain, - servicename, - authenticated, - token - ) - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s::boolean, %s); - """ - services = res.fetchall() - insert_to_pg(q, services) - fix_id("streamalerts.services_id_seq", services) - # DONATIONS - res = sq.execute("SELECT * FROM Donations;") - q = f""" - INSERT INTO streamalerts.Donations ( - id, - wallet, - name, - message, - cur_code, - sats, - amount, - service, - posted, - ) - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s::boolean); - """ - insert_to_pg(q, res.fetchall()) - elif schema == "splitpayments": - # TARGETS - res = sq.execute("SELECT * FROM targets;") - q = f""" - INSERT INTO splitpayments.targets (wallet, source, percent, alias) - VALUES (%s, %s, %s, %s); - """ - insert_to_pg(q, res.fetchall()) - elif schema == "satspay": - # CHARGES - res = sq.execute("SELECT * FROM charges;") - q = f""" - INSERT INTO satspay.charges ( - id, - "user", - description, - onchainwallet, - onchainaddress, - lnbitswallet, - payment_request, - payment_hash, - webhook, - completelink, - completelinktext, - time, - amount, - balance, - timestamp - ) - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, to_timestamp(%s)); - """ - insert_to_pg(q, res.fetchall()) - elif schema == "satsdice": - # SATSDICE PAY - res = sq.execute("SELECT * FROM satsdice_pay;") - q = f""" - INSERT INTO satsdice.satsdice_pay ( - id, - wallet, - title, - min_bet, - max_bet, - amount, - served_meta, - served_pr, - multiplier, - haircut, - chance, - base_url, - open_time - ) - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s); - """ - insert_to_pg(q, res.fetchall()) - # SATSDICE WITHDRAW - res = sq.execute("SELECT * FROM satsdice_withdraw;") - q = f""" - INSERT INTO satsdice.satsdice_withdraw ( - id, - satsdice_pay, - value, - unique_hash, - k1, - open_time, - used - ) - VALUES (%s, %s, %s, %s, %s, %s, %s); - """ - insert_to_pg(q, res.fetchall()) - # SATSDICE PAYMENT - res = sq.execute("SELECT * FROM satsdice_payment;") - q = f""" - INSERT INTO satsdice.satsdice_payment ( - payment_hash, - satsdice_pay, - value, - paid, - lost - ) - VALUES (%s, %s, %s, %s::boolean, %s::boolean); - """ - insert_to_pg(q, res.fetchall()) - # SATSDICE HASH CHECK - res = sq.execute("SELECT * FROM hash_checkw;") - q = f""" - INSERT INTO satsdice.hash_checkw (id, lnurl_id) - VALUES (%s, %s); - """ - insert_to_pg(q, res.fetchall()) - elif schema == "paywall": - # PAYWALLS - res = sq.execute("SELECT * FROM paywalls;") - q = f""" - INSERT INTO paywall.paywalls( - id, - wallet, - url, - memo, - description, - amount, - time, - remembers, - extras - ) - VALUES (%s, %s, %s, %s, %s, %s, to_timestamp(%s), %s, %s); - """ - insert_to_pg(q, res.fetchall()) - elif schema == "offlineshop": - # SHOPS - res = sq.execute("SELECT * FROM shops;") - q = f""" - INSERT INTO offlineshop.shops (id, wallet, method, wordlist) - VALUES (%s, %s, %s, %s); - """ - shops = res.fetchall() - insert_to_pg(q, shops) - fix_id("offlineshop.shops_id_seq", shops) - # ITEMS - res = sq.execute("SELECT * FROM items;") - q = f""" - INSERT INTO offlineshop.items (shop, id, name, description, image, enabled, price, unit, fiat_base_multiplier) - VALUES (%s, %s, %s, %s, %s, %s::boolean, %s, %s, %s); - """ - items = res.fetchall() - insert_to_pg(q, items) - fix_id("offlineshop.items_id_seq", items) - elif schema == "lnurlpos" or schema == "lnurldevice": - # lnurldevice - res = sq.execute("SELECT * FROM lnurldevices;") - q = f""" - INSERT INTO lnurldevice.lnurldevices (id, key, title, wallet, currency, device, profit, timestamp) - VALUES (%s, %s, %s, %s, %s, %s, %s, to_timestamp(%s)); - """ - insert_to_pg(q, res.fetchall()) - # lnurldevice PAYMENT - res = sq.execute("SELECT * FROM lnurldevicepayment;") - q = f""" - INSERT INTO lnurldevice.lnurldevicepayment (id, deviceid, payhash, payload, pin, sats, timestamp) - VALUES (%s, %s, %s, %s, %s, %s, to_timestamp(%s)); - """ - insert_to_pg(q, res.fetchall()) - elif schema == "lnurlp": - # PAY LINKS - res = sq.execute("SELECT * FROM pay_links;") - q = f""" - INSERT INTO lnurlp.pay_links ( - id, - wallet, - description, - min, - served_meta, - served_pr, - webhook_url, - success_text, - success_url, - currency, - comment_chars, - max, - fiat_base_multiplier - ) - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s); - """ - pay_links = res.fetchall() - insert_to_pg(q, pay_links) - fix_id("lnurlp.pay_links_id_seq", pay_links) - elif schema == "lndhub": - # LndHub doesn't have a database at the moment - pass - elif schema == "lnticket": - # TICKET - res = sq.execute("SELECT * FROM ticket;") - q = f""" - INSERT INTO lnticket.ticket ( - id, - form, - email, - ltext, - name, - wallet, - sats, - paid, - time - ) - VALUES (%s, %s, %s, %s, %s, %s, %s, %s::boolean, to_timestamp(%s)); - """ - insert_to_pg(q, res.fetchall()) - # FORM - res = sq.execute("SELECT * FROM form2;") - q = f""" - INSERT INTO lnticket.form2 ( - id, - wallet, - name, - webhook, - description, - flatrate, - amount, - amountmade, - time - ) - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, to_timestamp(%s)); - """ - insert_to_pg(q, res.fetchall()) - elif schema == "livestream": - # LIVESTREAMS - res = sq.execute("SELECT * FROM livestreams;") - q = f""" - INSERT INTO livestream.livestreams ( - id, - wallet, - fee_pct, - current_track - ) - VALUES (%s, %s, %s, %s); - """ - livestreams = res.fetchall() - insert_to_pg(q, livestreams) - fix_id("livestream.livestreams_id_seq", livestreams) - # PRODUCERS - res = sq.execute("SELECT * FROM producers;") - q = f""" - INSERT INTO livestream.producers ( - livestream, - id, - "user", - wallet, - name - ) - VALUES (%s, %s, %s, %s, %s); - """ - producers = res.fetchall() - insert_to_pg(q, producers) - fix_id("livestream.producers_id_seq", producers) - # TRACKS - res = sq.execute("SELECT * FROM tracks;") - q = f""" - INSERT INTO livestream.tracks ( - livestream, - id, - download_url, - price_msat, - name, - producer - ) - VALUES (%s, %s, %s, %s, %s, %s); - """ - tracks = res.fetchall() - insert_to_pg(q, tracks) - fix_id("livestream.tracks_id_seq", tracks) - elif schema == "lnaddress": - # DOMAINS - res = sq.execute("SELECT * FROM domain;") - q = f""" - INSERT INTO lnaddress.domain( - id, wallet, domain, webhook, cf_token, cf_zone_id, cost, "time") - VALUES (%s, %s, %s, %s, %s, %s, %s, to_timestamp(%s)); - """ - insert_to_pg(q, res.fetchall()) - # ADDRESSES - res = sq.execute("SELECT * FROM address;") - q = f""" - INSERT INTO lnaddress.address( - id, wallet, domain, email, username, wallet_key, wallet_endpoint, sats, duration, paid, "time") - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s::boolean, to_timestamp(%s)); - """ - insert_to_pg(q, res.fetchall()) - elif schema == "discordbot": - # USERS - res = sq.execute("SELECT * FROM users;") - q = f""" - INSERT INTO discordbot.users( - id, name, admin, discord_id) - VALUES (%s, %s, %s, %s); - """ - insert_to_pg(q, res.fetchall()) - # WALLETS - res = sq.execute("SELECT * FROM wallets;") - q = f""" - INSERT INTO discordbot.wallets( - id, admin, name, "user", adminkey, inkey) - VALUES (%s, %s, %s, %s, %s, %s); - """ - insert_to_pg(q, res.fetchall()) - elif schema == "scrub": - # SCRUB LINKS - res = sq.execute("SELECT * FROM scrub_links;") - q = f""" - INSERT INTO scrub.scrub_links ( - id, - wallet, - description, - payoraddress - ) - VALUES (%s, %s, %s, %s); - """ - insert_to_pg(q, res.fetchall()) - else: - print(f"❌ Not implemented: {schema}") - sq.close() - - if ignore_missing == False: - raise Exception( - f"Not implemented: {schema}. Use --ignore-missing to skip missing extensions." - ) - return - - print(f"✅ Migrated: {schema}") + data = sq.execute(f"SELECT * FROM {tableName};").fetchall() + insert_to_pg(q, data) sq.close() +def build_insert_query(schema, tableName, columns): + to_columns = ", ".join(map(lambda column: f'"{column[1]}"', columns)) + values = ", ".join(map(lambda column: to_column_type(column[2]), columns)) + return f""" + INSERT INTO {schema}.{tableName}({to_columns}) + VALUES ({values}); + """ + + +def to_column_type(columnType): + if columnType == "TIMESTAMP": + return "to_timestamp(%s)" + if columnType == "BOOLEAN": + return "%s::boolean" + return "%s" + + parser = argparse.ArgumentParser( description="LNbits migration tool for migrating data from SQLite to PostgreSQL" ) @@ -774,11 +207,11 @@ args = parser.parse_args() print("Selected path: ", args.sqlite_path) if os.path.isdir(args.sqlite_path): + exclude_tables = ["dbversions"] file = os.path.join(args.sqlite_path, "database.sqlite3") check_db_versions(file) if not args.extensions_only: - print(f"Migrating: {file}") - migrate_core(file) + migrate_core(file, exclude_tables) if os.path.isdir(args.sqlite_path): files = [ @@ -787,13 +220,8 @@ if os.path.isdir(args.sqlite_path): else: files = [args.sqlite_path] +excluded_exts = ["ext_lnurlpos.sqlite3"] for file in files: filename = os.path.basename(file) - if filename.startswith("ext_"): - schema = filename.replace("ext_", "").split(".")[0] - print(f"Migrating: {file}") - migrate_ext( - file, - schema, - ignore_missing=args.skip_missing, - ) + if filename.startswith("ext_") and filename not in excluded_exts: + migrate_ext(file)