mirror of
https://github.com/lnbits/lnbits-legend.git
synced 2025-03-13 03:22:36 +01:00
feat: add boltz client fundingsource (#2358)
* feat: add boltz client standalone fundingsource WIP. https://docs.boltz.exchange/v/boltz-client this fundingsource utilizing the boltz client standalone function: https://github.com/BoltzExchange/boltz-client/pull/123 this makes him act like a lightning node while submarine swapping everything on liquid network. like aqua does in its wallet. * feat: paid_invoices_stream * feat: proper invoice and payment status check * feat: authenticate over insecure channel aswell * chore: lint * docs: add more setup instructions * chore: add `boltz_client_cert` in frontend * feat: populate fee_msat in get_payment_status and get_invoice_status * fixup! * chore: bundle * added boltz logo * add BoltzWallet to __all__ * chore: bump grpcio and protobuf deps and add grpcio-tools as dev dependency * chore: update protos * feat: pass description when creating swap * fixup! * chore: bundle --------- Co-authored-by: jackstar12 <jkranawetter05@gmail.com> Co-authored-by: Pavol Rusnak <pavol@rusnak.io>
This commit is contained in:
parent
296b1dfa9a
commit
1900cf9aa4
18 changed files with 4282 additions and 104 deletions
|
@ -28,7 +28,7 @@ PORT=5000
|
|||
######################################
|
||||
|
||||
# which fundingsources are allowed in the admin ui
|
||||
LNBITS_ALLOWED_FUNDING_SOURCES="VoidWallet, FakeWallet, CoreLightningWallet, CoreLightningRestWallet, LndRestWallet, EclairWallet, LndWallet, LnTipsWallet, LNPayWallet, LNbitsWallet, BlinkWallet, AlbyWallet, ZBDWallet, PhoenixdWallet, OpenNodeWallet, NWCWallet, BreezSdkWallet"
|
||||
LNBITS_ALLOWED_FUNDING_SOURCES="VoidWallet, FakeWallet, CoreLightningWallet, CoreLightningRestWallet, LndRestWallet, EclairWallet, LndWallet, LnTipsWallet, LNPayWallet, LNbitsWallet, BlinkWallet, AlbyWallet, ZBDWallet, PhoenixdWallet, OpenNodeWallet, NWCWallet, BreezSdkWallet, BoltzWallet"
|
||||
|
||||
LNBITS_BACKEND_WALLET_CLASS=VoidWallet
|
||||
# VoidWallet is just a fallback that works without any actual Lightning capabilities,
|
||||
|
@ -87,6 +87,12 @@ LNPAY_WALLET_KEY=LNPAY_ADMIN_KEY
|
|||
ALBY_API_ENDPOINT=https://api.getalby.com/
|
||||
ALBY_ACCESS_TOKEN=ALBY_ACCESS_TOKEN
|
||||
|
||||
# BoltzWallet
|
||||
BOLTZ_CLIENT_ENDPOINT=127.0.0.1:9002
|
||||
BOLTZ_CLIENT_MACAROON="/home/bob/.boltz/macaroon" # or HEXSTRING
|
||||
BOLTZ_CLIENT_CERT="/home/bob/.boltz/tls.cert" # or HEXSTRING
|
||||
BOLTZ_CLIENT_WALLET="lnbits"
|
||||
|
||||
# ZBDWallet
|
||||
ZBD_API_ENDPOINT=https://api.zebedee.io/v0/
|
||||
ZBD_API_KEY=ZBD_ACCESS_TOKEN
|
||||
|
|
|
@ -93,6 +93,18 @@ For the invoice to work you must have a publicly accessible URL in your LNbits.
|
|||
- `ALBY_API_ENDPOINT`: https://api.getalby.com/
|
||||
- `ALBY_ACCESS_TOKEN`: AlbyAccessToken
|
||||
|
||||
### Boltz
|
||||
|
||||
This funding source connects to a running [boltz-client](https://docs.boltz.exchange/v/boltz-client) and handles all lightning payments through submarine swaps on the liquid network.
|
||||
You can configure the daemon to run in standalone mode by `standalone = True` in the config file or using the cli flag (`boltzd --standalone`).
|
||||
Once running, you can create a liquid wallet using `boltzcli wallet create lnbits lbtc`.
|
||||
|
||||
- `LNBITS_BACKEND_WALLET_CLASS`: **BoltzWallet**
|
||||
- `BOLTZ_CLIENT_ENDPOINT`: 127.0.0.1:9002
|
||||
- `BOLTZ_CLIENT_MACAROON`: /home/bob/.boltz/macaroons/admin.macaroon or Base64/Hex
|
||||
- `BOLTZ_CLIENT_CERT`: /home/bob/.boltz/tls.cert or Base64/Hex
|
||||
- `BOLTZ_CLIENT_WALLET`: lnbits
|
||||
|
||||
### ZBD
|
||||
|
||||
For the invoice to work you must have a publicly accessible URL in your LNbits. No manual webhook setting is necessary. You can generate an ZBD API Key here: https://zbd.dev/docs/dashboard/projects/api
|
||||
|
|
|
@ -545,18 +545,15 @@
|
|||
></q-img>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col q-pl-md"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<a
|
||||
href="https://nwc.dev/"
|
||||
href="https://boltz.exchange/"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<q-img
|
||||
contain
|
||||
:src="($q.dark.isActive) ? '{{ static_url_for('static', 'images/nwc.png') }}' : '{{ static_url_for('static', 'images/nwcl.png') }}'"
|
||||
:src="($q.dark.isActive) ? '{{ static_url_for('static', 'images/boltz.svg') }}' : '{{ static_url_for('static', 'images/boltz.svg') }}'"
|
||||
></q-img>
|
||||
</a>
|
||||
</div>
|
||||
|
|
|
@ -270,6 +270,13 @@ class BreezSdkFundingSource(LNbitsSettings):
|
|||
breez_greenlight_device_cert: Optional[str] = Field(default=None)
|
||||
|
||||
|
||||
class BoltzFundingSource(LNbitsSettings):
|
||||
boltz_client_endpoint: Optional[str] = Field(default="127.0.0.1:9002")
|
||||
boltz_client_macaroon: Optional[str] = Field(default=None)
|
||||
boltz_client_wallet: Optional[str] = Field(default="lnbits")
|
||||
boltz_client_cert: Optional[str] = Field(default=None)
|
||||
|
||||
|
||||
class LightningSettings(LNbitsSettings):
|
||||
lightning_invoice_expiry: int = Field(default=3600)
|
||||
|
||||
|
@ -286,6 +293,7 @@ class FundingSourcesSettings(
|
|||
LnPayFundingSource,
|
||||
BlinkFundingSource,
|
||||
AlbyFundingSource,
|
||||
BoltzFundingSource,
|
||||
ZBDFundingSource,
|
||||
PhoenixdFundingSource,
|
||||
OpenNodeFundingSource,
|
||||
|
@ -436,6 +444,7 @@ class SuperUserSettings(LNbitsSettings):
|
|||
lnbits_allowed_funding_sources: list[str] = Field(
|
||||
default=[
|
||||
"AlbyWallet",
|
||||
"BoltzWallet",
|
||||
"BlinkWallet",
|
||||
"BreezSdkWallet",
|
||||
"CoreLightningRestWallet",
|
||||
|
|
2
lnbits/static/bundle.min.js
vendored
2
lnbits/static/bundle.min.js
vendored
File diff suppressed because one or more lines are too long
10
lnbits/static/images/boltz.svg
Normal file
10
lnbits/static/images/boltz.svg
Normal file
|
@ -0,0 +1,10 @@
|
|||
<svg width="46.626mm" height="12.965mm" version="1.1" viewBox="0 0 46.626 12.965" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(.85851 0 0 .85851 -56.357 -42.14)">
|
||||
<g transform="matrix(.26458 0 0 .26458 69.488 50.153)" style="fill:none">
|
||||
<path d="m14.462 28.768-.0035.0072h-12.787c-.4776 0-.8756-.1467-1.194-.4401s-.4776-.6619-.4776-1.1055c0-.4723.20262-.9589.60786-1.4598l20.342-24.837c.3763-.48659.7924-.77997 1.2482-.88015.4559-.10018.8648-.057246 1.2266.1288.3618.18605.6151.49016.7598.91235.1448.42218.1086.92666-.1085 1.5134l-6.643 17.625h1.1057l.0035-.0072h12.787c.4776 0 .8756.1467 1.194.4401s.4776.6619.4776 1.1055c0 .4723-.2026.9589-.6079 1.4598l-20.342 24.837c-.3763.4865-.7924.7799-1.2482.8801-.4559.1002-.86479.0573-1.2266-.1288-.36182-.186-.61509-.4902-.75982-.9123-.14473-.4222-.10855-.9267.10854-1.5135l6.643-17.624z" clip-rule="evenodd" fill="#fff" fill-rule="evenodd" style="fill:#fff"/>
|
||||
</g>
|
||||
<g transform="matrix(.26458 0 0 .26458 81.643 50.938)" style="fill:none">
|
||||
<path d="m.92 42h19.488c7.672 0 12.488-4.144 12.488-11.312 0-5.152-2.072-7.952-5.264-9.464v-.224c1.96-1.4 3.808-3.752 3.808-8.008 0-6.44-4.76-10.192-11.76-10.192h-18.76zm8.736-24.08v-7.392h8.736c2.968 0 4.144 1.568 4.144 3.696s-1.176 3.696-4.144 3.696zm0 16.296v-8.68h9.296c3.808 0 4.984 2.352 4.984 4.312 0 2.352-1.232 4.368-4.984 4.368zm40.657 8.288c9.52 0 14.616-6.384 14.616-15.12 0-8.792-5.208-15.176-14.616-15.176s-14.616 6.384-14.616 15.176 5.096 15.12 14.616 15.12zm0-7.56c-3.528 0-5.824-2.24-5.824-7.56 0-5.264 2.24-7.616 5.824-7.616s5.824 2.296 5.824 7.616-2.24 7.56-5.824 7.56zm18.831 7.056h8.624v-41.44h-8.624zm26.552.504c2.744 0 5.0404-.504 5.9364-.84v-7.168h-.56c-.896.336-1.8484.504-2.8004.504-2.576 0-3.752-1.176-3.752-3.92v-11.032h7.0004v-7.336h-7.0004v-7.672h-.56l-7.672 1.568v6.104h-5.152v7.336h4.76v13.104c0 5.32 3.024 9.352 9.8 9.352zm10.397-.504h24.192v-7.336h-13.552v-.224l13.44-14.448v-7.28h-24.024v7.336h13.44v.224l-13.496 14.504z" fill="#fff" style="fill:#fff"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2 KiB |
10
lnbits/static/images/boltzl.svg
Normal file
10
lnbits/static/images/boltzl.svg
Normal file
|
@ -0,0 +1,10 @@
|
|||
<svg width="46.626mm" height="12.965mm" version="1.1" viewBox="0 0 46.626 12.965" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(.85851 0 0 .85851 -56.357 -42.14)">
|
||||
<g transform="matrix(.26458 0 0 .26458 69.488 50.153)">
|
||||
<path d="m14.462 28.768-.0035.0072h-12.787c-.4776 0-.8756-.1467-1.194-.4401s-.4776-.6619-.4776-1.1055c0-.4723.20262-.9589.60786-1.4598l20.342-24.837c.3763-.48659.7924-.77997 1.2482-.88015.4559-.10018.8648-.057246 1.2266.1288.3618.18605.6151.49016.7598.91235.1448.42218.1086.92666-.1085 1.5134l-6.643 17.625h1.1057l.0035-.0072h12.787c.4776 0 .8756.1467 1.194.4401s.4776.6619.4776 1.1055c0 .4723-.2026.9589-.6079 1.4598l-20.342 24.837c-.3763.4865-.7924.7799-1.2482.8801-.4559.1002-.86479.0573-1.2266-.1288-.36182-.186-.61509-.4902-.75982-.9123-.14473-.4222-.10855-.9267.10854-1.5135l6.643-17.624z" clip-rule="evenodd" fill="#fff" fill-rule="evenodd" style="fill:#000"/>
|
||||
</g>
|
||||
<g transform="matrix(.26458 0 0 .26458 81.643 50.938)">
|
||||
<path d="m.92 42h19.488c7.672 0 12.488-4.144 12.488-11.312 0-5.152-2.072-7.952-5.264-9.464v-.224c1.96-1.4 3.808-3.752 3.808-8.008 0-6.44-4.76-10.192-11.76-10.192h-18.76zm8.736-24.08v-7.392h8.736c2.968 0 4.144 1.568 4.144 3.696s-1.176 3.696-4.144 3.696zm0 16.296v-8.68h9.296c3.808 0 4.984 2.352 4.984 4.312 0 2.352-1.232 4.368-4.984 4.368zm40.657 8.288c9.52 0 14.616-6.384 14.616-15.12 0-8.792-5.208-15.176-14.616-15.176s-14.616 6.384-14.616 15.176 5.096 15.12 14.616 15.12zm0-7.56c-3.528 0-5.824-2.24-5.824-7.56 0-5.264 2.24-7.616 5.824-7.616s5.824 2.296 5.824 7.616-2.24 7.56-5.824 7.56zm18.831 7.056h8.624v-41.44h-8.624zm26.552.504c2.744 0 5.0404-.504 5.9364-.84v-7.168h-.56c-.896.336-1.8484.504-2.8004.504-2.576 0-3.752-1.176-3.752-3.92v-11.032h7.0004v-7.336h-7.0004v-7.672h-.56l-7.672 1.568v6.104h-5.152v7.336h4.76v13.104c0 5.32 3.024 9.352 9.8 9.352zm10.397-.504h24.192v-7.336h-13.552v-.224l13.44-14.448v-7.28h-24.024v7.336h13.44v.224l-13.496 14.504z" fill="#fff" style="fill:#000"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.9 KiB |
|
@ -127,6 +127,16 @@ Vue.component('lnbits-funding-sources', {
|
|||
alby_access_token: 'Key'
|
||||
}
|
||||
],
|
||||
[
|
||||
'BoltzWallet',
|
||||
'Boltz',
|
||||
{
|
||||
boltz_client_endpoint: 'Endpoint',
|
||||
boltz_client_macaroon: 'Admin Macaroon path or hex',
|
||||
boltz_client_cert: 'Certificate path or hex',
|
||||
boltz_client_wallet: 'Wallet Name'
|
||||
}
|
||||
],
|
||||
[
|
||||
'ZBDWallet',
|
||||
'ZBD',
|
||||
|
|
|
@ -9,6 +9,7 @@ from lnbits.wallets.base import Wallet
|
|||
|
||||
from .alby import AlbyWallet
|
||||
from .blink import BlinkWallet
|
||||
from .boltz import BoltzWallet
|
||||
from .breez import BreezSdkWallet
|
||||
from .cliche import ClicheWallet
|
||||
from .corelightning import CoreLightningWallet
|
||||
|
@ -55,6 +56,7 @@ funding_source: Wallet = fake_wallet
|
|||
__all__ = [
|
||||
"AlbyWallet",
|
||||
"BlinkWallet",
|
||||
"BoltzWallet",
|
||||
"BreezSdkWallet",
|
||||
"ClicheWallet",
|
||||
"CoreLightningWallet",
|
||||
|
|
214
lnbits/wallets/boltz.py
Normal file
214
lnbits/wallets/boltz.py
Normal file
|
@ -0,0 +1,214 @@
|
|||
import asyncio
|
||||
from typing import AsyncGenerator, Optional
|
||||
|
||||
from bolt11.decode import decode
|
||||
from grpc.aio import AioRpcError
|
||||
from loguru import logger
|
||||
|
||||
from lnbits.settings import settings
|
||||
from lnbits.wallets.boltz_grpc_files import boltzrpc_pb2, boltzrpc_pb2_grpc
|
||||
from lnbits.wallets.lnd_grpc_files.lightning_pb2_grpc import grpc
|
||||
from lnbits.wallets.macaroon.macaroon import load_macaroon
|
||||
|
||||
from .base import (
|
||||
InvoiceResponse,
|
||||
PaymentFailedStatus,
|
||||
PaymentPendingStatus,
|
||||
PaymentResponse,
|
||||
PaymentStatus,
|
||||
PaymentSuccessStatus,
|
||||
StatusResponse,
|
||||
Wallet,
|
||||
)
|
||||
|
||||
|
||||
class BoltzWallet(Wallet):
|
||||
"""
|
||||
Utilizing Boltz Client gRPC interface
|
||||
|
||||
gRPC Bindings can be updated by running lnbits/wallets/boltz_grpc_files/update.sh
|
||||
"""
|
||||
|
||||
async def cleanup(self):
|
||||
logger.warning("Cleaning up BoltzWallet...")
|
||||
|
||||
def __init__(self):
|
||||
if not settings.boltz_client_endpoint:
|
||||
raise ValueError(
|
||||
"cannot initialize BoltzWallet: missing boltz_client_endpoint"
|
||||
)
|
||||
if not settings.boltz_client_wallet:
|
||||
raise ValueError(
|
||||
"cannot initialize BoltzWallet: missing boltz_client_wallet"
|
||||
)
|
||||
|
||||
self.endpoint = self.normalize_endpoint(
|
||||
settings.boltz_client_endpoint, add_proto=True
|
||||
)
|
||||
|
||||
if settings.boltz_client_macaroon:
|
||||
self.metadata = [
|
||||
("macaroon", load_macaroon(settings.boltz_client_macaroon))
|
||||
]
|
||||
else:
|
||||
self.metadata = None
|
||||
|
||||
if settings.boltz_client_cert:
|
||||
cert = open(settings.boltz_client_cert, "rb").read()
|
||||
creds = grpc.ssl_channel_credentials(cert)
|
||||
channel = grpc.aio.secure_channel(settings.boltz_client_endpoint, creds)
|
||||
else:
|
||||
channel = grpc.aio.insecure_channel(settings.boltz_client_endpoint)
|
||||
|
||||
self.rpc = boltzrpc_pb2_grpc.BoltzStub(channel)
|
||||
self.wallet_id: int = 0
|
||||
|
||||
async def status(self) -> StatusResponse:
|
||||
try:
|
||||
request = boltzrpc_pb2.GetWalletRequest(name=settings.boltz_client_wallet)
|
||||
response: boltzrpc_pb2.Wallet = await self.rpc.GetWallet(
|
||||
request, metadata=self.metadata
|
||||
)
|
||||
except AioRpcError as exc:
|
||||
return StatusResponse(
|
||||
exc.details()
|
||||
+ " make sure you have macaroon and certificate configured, unless your client runs without", # noqa: E501
|
||||
0,
|
||||
)
|
||||
|
||||
self.wallet_id = response.id
|
||||
|
||||
return StatusResponse(None, response.balance.total * 1000)
|
||||
|
||||
async def create_invoice(
|
||||
self,
|
||||
amount: int,
|
||||
memo: Optional[str] = None,
|
||||
description_hash: Optional[bytes] = None,
|
||||
unhashed_description: Optional[bytes] = None,
|
||||
**_,
|
||||
) -> InvoiceResponse:
|
||||
pair = boltzrpc_pb2.Pair(to=boltzrpc_pb2.LBTC)
|
||||
request = boltzrpc_pb2.CreateReverseSwapRequest(
|
||||
amount=amount,
|
||||
pair=pair,
|
||||
wallet_id=self.wallet_id,
|
||||
accept_zero_conf=True,
|
||||
external_pay=True,
|
||||
description=memo,
|
||||
)
|
||||
response: boltzrpc_pb2.CreateReverseSwapResponse
|
||||
try:
|
||||
response = await self.rpc.CreateReverseSwap(request, metadata=self.metadata)
|
||||
except AioRpcError as exc:
|
||||
return InvoiceResponse(ok=False, error_message=exc.details())
|
||||
return InvoiceResponse(
|
||||
ok=True, checking_id=response.id, payment_request=response.invoice
|
||||
)
|
||||
|
||||
async def pay_invoice(self, bolt11: str, fee_limit_msat: int) -> PaymentResponse:
|
||||
pair = boltzrpc_pb2.Pair(**{"from": boltzrpc_pb2.LBTC})
|
||||
try:
|
||||
pair_info: boltzrpc_pb2.PairInfo
|
||||
pair_request = boltzrpc_pb2.GetPairInfoRequest(
|
||||
type=boltzrpc_pb2.SUBMARINE, pair=pair
|
||||
)
|
||||
pair_info = await self.rpc.GetPairInfo(pair_request, metadata=self.metadata)
|
||||
invoice = decode(bolt11)
|
||||
|
||||
assert invoice.amount_msat, "amountless invoice"
|
||||
service_fee: float = invoice.amount_msat * pair_info.fees.percentage / 100
|
||||
estimate = service_fee + pair_info.fees.miner_fees * 1000
|
||||
if estimate > fee_limit_msat:
|
||||
error = f"fee of {estimate} msat exceeds limit of {fee_limit_msat} msat"
|
||||
|
||||
return PaymentResponse(ok=False, error_message=error)
|
||||
|
||||
request = boltzrpc_pb2.CreateSwapRequest(
|
||||
invoice=bolt11,
|
||||
pair=pair,
|
||||
wallet_id=self.wallet_id,
|
||||
zero_conf=True,
|
||||
send_from_internal=True,
|
||||
)
|
||||
response: boltzrpc_pb2.CreateSwapResponse
|
||||
response = await self.rpc.CreateSwap(request, metadata=self.metadata)
|
||||
except AioRpcError as exc:
|
||||
return PaymentResponse(ok=False, error_message=exc.details())
|
||||
|
||||
try:
|
||||
info_request = boltzrpc_pb2.GetSwapInfoRequest(id=response.id)
|
||||
info: boltzrpc_pb2.GetSwapInfoResponse
|
||||
async for info in self.rpc.GetSwapInfoStream(
|
||||
info_request, metadata=self.metadata
|
||||
):
|
||||
if info.swap.state == boltzrpc_pb2.SUCCESSFUL:
|
||||
return PaymentResponse(
|
||||
ok=True,
|
||||
checking_id=response.id,
|
||||
fee_msat=(info.swap.onchain_fee + info.swap.service_fee) * 1000,
|
||||
preimage=info.swap.preimage,
|
||||
)
|
||||
elif info.swap.error != "":
|
||||
return PaymentResponse(ok=False, error_message=info.swap.error)
|
||||
return PaymentResponse(
|
||||
ok=False, error_message="stream stopped unexpectedly"
|
||||
)
|
||||
except AioRpcError as exc:
|
||||
return PaymentResponse(ok=False, error_message=exc.details())
|
||||
|
||||
async def get_invoice_status(self, checking_id: str) -> PaymentStatus:
|
||||
try:
|
||||
response: boltzrpc_pb2.GetSwapInfoResponse = await self.rpc.GetSwapInfo(
|
||||
boltzrpc_pb2.GetSwapInfoRequest(id=checking_id), metadata=self.metadata
|
||||
)
|
||||
swap = response.reverse_swap
|
||||
except AioRpcError:
|
||||
return PaymentPendingStatus()
|
||||
if swap.state == boltzrpc_pb2.SwapState.SUCCESSFUL:
|
||||
return PaymentSuccessStatus(
|
||||
fee_msat=(
|
||||
(swap.service_fee + swap.onchain_fee) * 1000 + swap.routing_fee_msat
|
||||
),
|
||||
preimage=swap.preimage,
|
||||
)
|
||||
elif swap.state == boltzrpc_pb2.SwapState.PENDING:
|
||||
return PaymentPendingStatus()
|
||||
|
||||
return PaymentFailedStatus()
|
||||
|
||||
async def get_payment_status(self, checking_id: str) -> PaymentStatus:
|
||||
try:
|
||||
response: boltzrpc_pb2.GetSwapInfoResponse = await self.rpc.GetSwapInfo(
|
||||
boltzrpc_pb2.GetSwapInfoRequest(id=checking_id), metadata=self.metadata
|
||||
)
|
||||
swap = response.swap
|
||||
except AioRpcError:
|
||||
return PaymentPendingStatus()
|
||||
if swap.state == boltzrpc_pb2.SwapState.SUCCESSFUL:
|
||||
return PaymentSuccessStatus(
|
||||
fee_msat=(swap.service_fee + swap.onchain_fee) * 1000,
|
||||
preimage=swap.preimage,
|
||||
)
|
||||
elif swap.state == boltzrpc_pb2.SwapState.PENDING:
|
||||
return PaymentPendingStatus()
|
||||
|
||||
return PaymentFailedStatus()
|
||||
|
||||
async def paid_invoices_stream(self) -> AsyncGenerator[str, None]:
|
||||
while True:
|
||||
try:
|
||||
request = boltzrpc_pb2.GetSwapInfoRequest()
|
||||
info: boltzrpc_pb2.GetSwapInfoResponse
|
||||
async for info in self.rpc.GetSwapInfoStream(
|
||||
request, metadata=self.metadata
|
||||
):
|
||||
reverse = info.reverse_swap
|
||||
if reverse and reverse.state == boltzrpc_pb2.SUCCESSFUL:
|
||||
yield reverse.id
|
||||
except Exception as exc:
|
||||
logger.error(
|
||||
f"lost connection to boltz client swap stream: '{exc}', retrying in"
|
||||
" 5 seconds"
|
||||
)
|
||||
await asyncio.sleep(5)
|
0
lnbits/wallets/boltz_grpc_files/__init__.py
Normal file
0
lnbits/wallets/boltz_grpc_files/__init__.py
Normal file
742
lnbits/wallets/boltz_grpc_files/boltzrpc.proto
Normal file
742
lnbits/wallets/boltz_grpc_files/boltzrpc.proto
Normal file
|
@ -0,0 +1,742 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package boltzrpc;
|
||||
option go_package = "github.com/BoltzExchange/boltz-client/boltzrpc";
|
||||
import "google/protobuf/empty.proto";
|
||||
|
||||
service Boltz {
|
||||
/*
|
||||
Gets general information about the daemon like the chain of the lightning node it is connected to
|
||||
and the IDs of pending swaps.
|
||||
*/
|
||||
rpc GetInfo (GetInfoRequest) returns (GetInfoResponse);
|
||||
|
||||
/*
|
||||
Fetches the latest limits and fees from the Boltz backend API it is connected to.
|
||||
*/
|
||||
rpc GetServiceInfo (GetServiceInfoRequest) returns (GetServiceInfoResponse) {
|
||||
option deprecated = true;
|
||||
};
|
||||
|
||||
/*
|
||||
Fetches information about a specific pair for a chain swap.
|
||||
*/
|
||||
rpc GetPairInfo (GetPairInfoRequest) returns (PairInfo);
|
||||
|
||||
/*
|
||||
Fetches all available pairs for submarine and reverse swaps.
|
||||
*/
|
||||
rpc GetPairs (google.protobuf.Empty) returns (GetPairsResponse);
|
||||
|
||||
/*
|
||||
Returns a list of all swaps, reverse swaps, and chain swaps in the database.
|
||||
*/
|
||||
rpc ListSwaps (ListSwapsRequest) returns (ListSwapsResponse);
|
||||
|
||||
/*
|
||||
Returns stats of all swaps, reverse swaps, and chain swaps in the database.
|
||||
*/
|
||||
rpc GetStats (GetStatsRequest) returns (GetStatsResponse);
|
||||
|
||||
/*
|
||||
Refund a failed swap manually.
|
||||
This is only required when no refund address has been set and the swap does not have an associated wallet.
|
||||
*/
|
||||
rpc RefundSwap (RefundSwapRequest) returns (GetSwapInfoResponse);
|
||||
|
||||
/*
|
||||
Claim swaps manually.
|
||||
This is only required when no claim address has been set and the swap does not have an associated wallet.
|
||||
*/
|
||||
rpc ClaimSwaps (ClaimSwapsRequest) returns (ClaimSwapsResponse);
|
||||
|
||||
/*
|
||||
Gets all available information about a swap from the database.
|
||||
*/
|
||||
rpc GetSwapInfo (GetSwapInfoRequest) returns (GetSwapInfoResponse);
|
||||
|
||||
/*
|
||||
Returns the entire history of the swap if is still pending and streams updates in real time.
|
||||
If the swap id is empty or "*" updates for all swaps will be streamed.
|
||||
*/
|
||||
rpc GetSwapInfoStream (GetSwapInfoRequest) returns (stream GetSwapInfoResponse);
|
||||
|
||||
/*
|
||||
This is a wrapper for channel creation swaps. The daemon only returns the ID, timeout block height and lockup address.
|
||||
The Boltz backend takes care of the rest. When an amount of onchain coins that is in the limits is sent to the address
|
||||
before the timeout block height, the daemon creates a new lightning invoice, sends it to the Boltz backend which
|
||||
will try to pay it and if that is not possible, create a new channel to make the swap succeed.
|
||||
*/
|
||||
rpc Deposit (DepositRequest) returns (DepositResponse) { option deprecated = true; }
|
||||
|
||||
/*
|
||||
Creates a new swap from onchain to lightning.
|
||||
*/
|
||||
rpc CreateSwap (CreateSwapRequest) returns (CreateSwapResponse);
|
||||
|
||||
/*
|
||||
Create a new swap from onchain to a new lightning channel. The daemon will only accept the invoice payment if the HTLCs
|
||||
is coming trough a new channel channel opened by Boltz.
|
||||
*/
|
||||
rpc CreateChannel (CreateChannelRequest) returns (CreateSwapResponse) { option deprecated = true; };
|
||||
|
||||
/*
|
||||
Creates a new reverse swap from lightning to onchain. If `accept_zero_conf` is set to true in the request, the daemon
|
||||
will not wait until the lockup transaction from Boltz is confirmed in a block, but will claim it instantly.
|
||||
*/
|
||||
rpc CreateReverseSwap (CreateReverseSwapRequest) returns (CreateReverseSwapResponse);
|
||||
|
||||
/*
|
||||
Creates a new chain swap from one chain to another. If `accept_zero_conf` is set to true in the request, the daemon
|
||||
will not wait until the lockup transaction from Boltz is confirmed in a block, but will claim it instantly.
|
||||
*/
|
||||
rpc CreateChainSwap (CreateChainSwapRequest) returns (ChainSwapInfo);
|
||||
|
||||
/*
|
||||
Creates a new liquid wallet and returns the mnemonic.
|
||||
*/
|
||||
rpc CreateWallet (CreateWalletRequest) returns (CreateWalletResponse);
|
||||
|
||||
/*
|
||||
Imports an existing wallet.
|
||||
*/
|
||||
rpc ImportWallet (ImportWalletRequest) returns (Wallet);
|
||||
|
||||
/*
|
||||
Sets the subaccount of a wallet. Not supported for readonly wallets.
|
||||
*/
|
||||
rpc SetSubaccount (SetSubaccountRequest) returns (Subaccount);
|
||||
|
||||
/*
|
||||
Returns all subaccounts for a given wallet. Not supported for readonly wallets.
|
||||
*/
|
||||
rpc GetSubaccounts (GetSubaccountsRequest) returns (GetSubaccountsResponse);
|
||||
|
||||
/*
|
||||
Returns all available wallets.
|
||||
*/
|
||||
rpc GetWallets (GetWalletsRequest) returns (Wallets);
|
||||
|
||||
/*
|
||||
Returns the current balance and subaccount of a wallet.
|
||||
*/
|
||||
rpc GetWallet (GetWalletRequest) returns (Wallet);
|
||||
|
||||
/*
|
||||
Returns the credentials of a wallet. The password will be required if the wallet is encrypted.
|
||||
*/
|
||||
rpc GetWalletCredentials (GetWalletCredentialsRequest) returns (WalletCredentials);
|
||||
|
||||
/*
|
||||
Removes a wallet.
|
||||
*/
|
||||
rpc RemoveWallet (RemoveWalletRequest) returns (RemoveWalletResponse);
|
||||
|
||||
/*
|
||||
Gracefully stops the daemon.
|
||||
*/
|
||||
rpc Stop(google.protobuf.Empty) returns (google.protobuf.Empty);
|
||||
|
||||
/*
|
||||
Unlocks the server. This will be required on startup if there are any encrypted wallets.
|
||||
*/
|
||||
rpc Unlock(UnlockRequest) returns (google.protobuf.Empty);
|
||||
|
||||
/*
|
||||
Check if the password is correct.
|
||||
*/
|
||||
rpc VerifyWalletPassword(VerifyWalletPasswordRequest) returns (VerifyWalletPasswordResponse);
|
||||
|
||||
/*
|
||||
Changes the password for wallet encryption.
|
||||
*/
|
||||
rpc ChangeWalletPassword(ChangeWalletPasswordRequest) returns (google.protobuf.Empty);
|
||||
|
||||
/*
|
||||
Creates a new tenant which can be used to bake restricted macaroons.
|
||||
*/
|
||||
rpc CreateTenant(CreateTenantRequest) returns (Tenant);
|
||||
|
||||
/*
|
||||
Returns all tenants.
|
||||
*/
|
||||
rpc ListTenants(ListTenantsRequest) returns (ListTenantsResponse);
|
||||
|
||||
/*
|
||||
Get a specifiy tenant.
|
||||
*/
|
||||
rpc GetTenant(GetTenantRequest) returns (Tenant);
|
||||
|
||||
/*
|
||||
Bakes a new macaroon with the specified permissions.
|
||||
The macaroon can also be restricted to a specific tenant. In this case,
|
||||
- any swap or wallet created with the returned macaroon will belong to this tenant and can not be accessed by other tenants.
|
||||
- the lightning node connected to the daemon can not be used to pay or create invoices for swaps.
|
||||
*/
|
||||
rpc BakeMacaroon(BakeMacaroonRequest) returns (BakeMacaroonResponse);
|
||||
}
|
||||
|
||||
message CreateTenantRequest {
|
||||
string name = 1;
|
||||
}
|
||||
|
||||
message ListTenantsRequest {}
|
||||
message ListTenantsResponse {
|
||||
repeated Tenant tenants = 1;
|
||||
}
|
||||
|
||||
message GetTenantRequest {
|
||||
string name = 1;
|
||||
}
|
||||
|
||||
message Tenant {
|
||||
uint64 id = 1;
|
||||
string name = 2;
|
||||
}
|
||||
|
||||
enum MacaroonAction {
|
||||
READ = 0;
|
||||
WRITE = 1;
|
||||
}
|
||||
|
||||
message MacaroonPermissions {
|
||||
MacaroonAction action = 2;
|
||||
}
|
||||
|
||||
message BakeMacaroonRequest {
|
||||
optional uint64 tenant_id = 1;
|
||||
repeated MacaroonPermissions permissions = 2;
|
||||
}
|
||||
message BakeMacaroonResponse {
|
||||
string macaroon = 1;
|
||||
}
|
||||
|
||||
enum SwapState {
|
||||
PENDING = 0;
|
||||
SUCCESSFUL= 1;
|
||||
|
||||
// Unknown client error. Check the error field of the message for more information
|
||||
ERROR = 2;
|
||||
|
||||
// Unknown server error. Check the status field of the message for more information
|
||||
SERVER_ERROR = 3;
|
||||
|
||||
// Client refunded locked coins after the HTLC timed out
|
||||
REFUNDED = 4;
|
||||
|
||||
// Client noticed that the HTLC timed out but didn't find any outputs to refund
|
||||
ABANDONED = 5;
|
||||
}
|
||||
|
||||
enum Currency {
|
||||
BTC = 0;
|
||||
LBTC = 1;
|
||||
}
|
||||
|
||||
message Pair {
|
||||
Currency from = 1;
|
||||
Currency to = 2;
|
||||
}
|
||||
|
||||
message SwapInfo {
|
||||
string id = 1;
|
||||
Pair pair = 22;
|
||||
|
||||
SwapState state = 2;
|
||||
string error = 3;
|
||||
|
||||
// Latest status message of the Boltz backend
|
||||
string status = 4;
|
||||
string private_key = 5;
|
||||
string preimage = 6;
|
||||
string redeem_script = 7;
|
||||
string invoice = 8;
|
||||
string lockup_address = 9;
|
||||
uint64 expected_amount = 10;
|
||||
uint32 timeout_block_height = 11;
|
||||
string lockup_transaction_id = 12;
|
||||
/*
|
||||
If the swap times out or fails for some other reason, the damon will automatically refund the coins sent to the
|
||||
`lockup_address` back to the configured wallet or the address specified in the `refund_address` field.
|
||||
*/
|
||||
string refund_transaction_id = 13;
|
||||
optional string refund_address = 19;
|
||||
|
||||
repeated ChannelId chan_ids = 14;
|
||||
optional string blinding_key = 15;
|
||||
int64 created_at = 16;
|
||||
optional uint64 service_fee = 17;
|
||||
optional uint64 onchain_fee = 18;
|
||||
// internal wallet which was used to pay the swap
|
||||
optional uint64 wallet_id = 20;
|
||||
uint64 tenant_id = 21;
|
||||
}
|
||||
|
||||
enum SwapType {
|
||||
SUBMARINE = 0;
|
||||
REVERSE = 1;
|
||||
CHAIN = 2;
|
||||
}
|
||||
|
||||
message GetPairInfoRequest {
|
||||
SwapType type = 1;
|
||||
Pair pair = 2;
|
||||
}
|
||||
|
||||
message PairInfo {
|
||||
Pair pair = 1;
|
||||
SwapFees fees = 2;
|
||||
Limits limits = 3;
|
||||
string hash = 4;
|
||||
}
|
||||
|
||||
/*
|
||||
Channel creations are an optional extension to a submarine swap in the data types of boltz-client.
|
||||
*/
|
||||
message ChannelCreationInfo {
|
||||
option deprecated = true;
|
||||
// ID of the swap to which this channel channel belongs
|
||||
string swap_id = 1;
|
||||
string status = 2;
|
||||
uint32 inbound_liquidity = 3;
|
||||
bool private = 4;
|
||||
string funding_transaction_id = 5;
|
||||
uint32 funding_transaction_vout = 6;
|
||||
}
|
||||
message CombinedChannelSwapInfo {
|
||||
option deprecated = true;
|
||||
SwapInfo swap = 1;
|
||||
ChannelCreationInfo channel_creation = 2;
|
||||
}
|
||||
|
||||
message ReverseSwapInfo {
|
||||
string id = 1;
|
||||
|
||||
SwapState state = 2;
|
||||
string error = 3;
|
||||
|
||||
// Latest status message of the Boltz backend
|
||||
string status = 4;
|
||||
string private_key = 5;
|
||||
string preimage = 6;
|
||||
string redeem_script = 7;
|
||||
string invoice = 8;
|
||||
string claim_address = 9;
|
||||
int64 onchain_amount = 10;
|
||||
uint32 timeout_block_height = 11;
|
||||
string lockup_transaction_id = 12;
|
||||
string claim_transaction_id = 13;
|
||||
Pair pair = 14;
|
||||
repeated ChannelId chan_ids = 15;
|
||||
optional string blinding_key = 16;
|
||||
int64 created_at = 17;
|
||||
optional int64 paid_at = 23; // the time when the invoice was paid
|
||||
optional uint64 service_fee = 18;
|
||||
optional uint64 onchain_fee = 19;
|
||||
optional uint64 routing_fee_msat = 20;
|
||||
bool external_pay = 21;
|
||||
uint64 tenant_id = 22;
|
||||
}
|
||||
|
||||
message BlockHeights {
|
||||
uint32 btc = 1;
|
||||
optional uint32 liquid = 2;
|
||||
}
|
||||
|
||||
message GetInfoRequest {}
|
||||
message GetInfoResponse {
|
||||
string version = 9;
|
||||
string node = 10;
|
||||
string network = 2;
|
||||
string node_pubkey = 7;
|
||||
// one of: running, disabled, error
|
||||
string auto_swap_status = 11;
|
||||
// mapping of the currency to the latest block height.
|
||||
BlockHeights block_heights = 8;
|
||||
// swaps that need a manual interaction to refund
|
||||
repeated string refundable_swaps = 12;
|
||||
// the currently authenticated tenant
|
||||
optional Tenant tenant = 13;
|
||||
// swaps that need a manual interaction to claim
|
||||
repeated string claimable_swaps = 14;
|
||||
|
||||
string symbol = 1 [deprecated = true];
|
||||
string lnd_pubkey = 3 [deprecated = true];
|
||||
uint32 block_height = 4 [deprecated = true];
|
||||
repeated string pending_swaps = 5 [deprecated = true];
|
||||
repeated string pending_reverse_swaps = 6 [deprecated = true];
|
||||
}
|
||||
|
||||
message Limits {
|
||||
uint64 minimal = 1;
|
||||
uint64 maximal = 2;
|
||||
uint64 maximal_zero_conf_amount = 3;
|
||||
}
|
||||
|
||||
message SwapFees {
|
||||
double percentage = 1;
|
||||
uint64 miner_fees = 2;
|
||||
}
|
||||
|
||||
message GetPairsResponse {
|
||||
repeated PairInfo submarine = 1;
|
||||
repeated PairInfo reverse = 2;
|
||||
repeated PairInfo chain = 3;
|
||||
}
|
||||
|
||||
message MinerFees {
|
||||
uint32 normal = 1;
|
||||
uint32 reverse = 2;
|
||||
}
|
||||
message Fees {
|
||||
float percentage = 1;
|
||||
MinerFees miner = 2;
|
||||
}
|
||||
|
||||
message GetServiceInfoRequest {}
|
||||
|
||||
message GetServiceInfoResponse {
|
||||
Fees fees = 1;
|
||||
Limits limits = 2;
|
||||
}
|
||||
|
||||
enum IncludeSwaps {
|
||||
ALL = 0;
|
||||
MANUAL = 1;
|
||||
AUTO = 2;
|
||||
}
|
||||
|
||||
message ListSwapsRequest {
|
||||
optional Currency from = 1;
|
||||
optional Currency to = 2;
|
||||
optional SwapState state = 4;
|
||||
IncludeSwaps include = 5;
|
||||
}
|
||||
message ListSwapsResponse {
|
||||
repeated SwapInfo swaps = 1;
|
||||
repeated CombinedChannelSwapInfo channel_creations = 2;
|
||||
repeated ReverseSwapInfo reverse_swaps = 3;
|
||||
repeated ChainSwapInfo chain_swaps = 4;
|
||||
}
|
||||
|
||||
message GetStatsRequest {
|
||||
IncludeSwaps include = 1;
|
||||
}
|
||||
|
||||
message GetStatsResponse {
|
||||
SwapStats stats = 1;
|
||||
}
|
||||
|
||||
message RefundSwapRequest {
|
||||
string id = 1;
|
||||
oneof destination {
|
||||
string address = 2;
|
||||
uint64 wallet_id = 3;
|
||||
}
|
||||
}
|
||||
|
||||
message ClaimSwapsRequest {
|
||||
repeated string swap_ids = 1;
|
||||
oneof destination {
|
||||
string address = 2;
|
||||
uint64 wallet_id = 3;
|
||||
}
|
||||
}
|
||||
|
||||
message ClaimSwapsResponse {
|
||||
string transaction_id = 1;
|
||||
}
|
||||
|
||||
message GetSwapInfoRequest {
|
||||
string id = 1;
|
||||
}
|
||||
message GetSwapInfoResponse {
|
||||
SwapInfo swap = 1;
|
||||
ChannelCreationInfo channel_creation = 2;
|
||||
ReverseSwapInfo reverse_swap = 3;
|
||||
ChainSwapInfo chain_swap = 4;
|
||||
}
|
||||
|
||||
message DepositRequest {
|
||||
/*
|
||||
Percentage of inbound liquidity the channel that is opened in case the invoice cannot be paid should have.
|
||||
25 by default.
|
||||
*/
|
||||
uint32 inbound_liquidity = 1;
|
||||
}
|
||||
message DepositResponse {
|
||||
string id = 1;
|
||||
string address = 2;
|
||||
uint32 timeout_block_height = 3;
|
||||
}
|
||||
|
||||
message CreateSwapRequest {
|
||||
uint64 amount = 1;
|
||||
Pair pair = 2;
|
||||
// not yet supported
|
||||
// repeated string chan_ids = 3;
|
||||
|
||||
// the daemon will pay the swap using the onchain wallet specified in the `wallet` field or any wallet otherwise.
|
||||
bool send_from_internal = 4;
|
||||
// address where the coins should go if the swap fails. Refunds will go to any of the daemons wallets otherwise.
|
||||
optional string refund_address = 5;
|
||||
// wallet to pay swap from. only used if `send_from_internal` is set to true
|
||||
optional uint64 wallet_id = 6;
|
||||
// invoice to use for the swap. if not set, the daemon will get a new invoice from the lightning node
|
||||
optional string invoice = 7;
|
||||
// Boltz does not accept 0-conf for Liquid transactions with a fee of 0.01 sat/vByte;
|
||||
// when `zero_conf` is enabled, a fee of 0.1 sat/vByte will be used for Liquid lockup transactions
|
||||
optional bool zero_conf = 8;
|
||||
}
|
||||
message CreateSwapResponse {
|
||||
string id = 1;
|
||||
string address = 2;
|
||||
uint64 expected_amount = 3;
|
||||
string bip21 = 4;
|
||||
// lockup transaction id. Only populated when `send_from_internal` was specified in the request
|
||||
string tx_id = 5;
|
||||
uint32 timeout_block_height = 6;
|
||||
float timeout_hours = 7;
|
||||
}
|
||||
|
||||
message CreateChannelRequest {
|
||||
int64 amount = 1;
|
||||
|
||||
/*
|
||||
Percentage of inbound liquidity the channel that is opened should have.
|
||||
25 by default.
|
||||
*/
|
||||
uint32 inbound_liquidity = 2;
|
||||
bool private = 3;
|
||||
};
|
||||
|
||||
message CreateReverseSwapRequest {
|
||||
// amount of satoshis to swap
|
||||
uint64 amount = 1;
|
||||
// If no value is set, the daemon will query a new address from the lightning node
|
||||
string address = 2;
|
||||
// Whether the daemon should broadcast the claim transaction immediately after the lockup transaction is in the mempool.
|
||||
// Should only be used for smaller amounts as it involves trust in boltz.
|
||||
bool accept_zero_conf = 3;
|
||||
Pair pair = 4;
|
||||
// a list of channel ids which are allowed for paying the invoice. can be in either cln or lnd style.
|
||||
repeated string chan_ids = 5;
|
||||
// wallet from which the onchain address should be generated - only considered if `address` is not set
|
||||
optional uint64 wallet_id = 6;
|
||||
// Whether the daemon should return immediately after creating the swap or wait until the swap is successful or failed.
|
||||
// It will always return immediately if `accept_zero_conf` is not set.
|
||||
optional bool return_immediately = 7;
|
||||
// If set, the daemon will not pay the invoice of the swap and return the invoice to be paid. This implicitly sets `return_immediately` to true.
|
||||
optional bool external_pay = 8;
|
||||
// Description of the invoice which will be created for the swap
|
||||
optional string description = 9;
|
||||
}
|
||||
message CreateReverseSwapResponse {
|
||||
string id = 1;
|
||||
string lockup_address = 2;
|
||||
|
||||
// Only populated when zero-conf is accepted and return_immediately is set to false
|
||||
optional uint64 routing_fee_milli_sat = 3;
|
||||
// Only populated when zero-conf is accepted and return_immediately is set to false
|
||||
optional string claim_transaction_id = 4;
|
||||
// Invoice to be paid. Only populated when `external_pay` is set to true
|
||||
optional string invoice = 5;
|
||||
}
|
||||
|
||||
message CreateChainSwapRequest {
|
||||
// Amount of satoshis to swap. It is the amount expected to be sent to the lockup address.
|
||||
uint64 amount = 1;
|
||||
Pair pair = 2;
|
||||
// Address where funds will be swept to if the swap succeeds
|
||||
optional string to_address = 3;
|
||||
// Address where the coins should be refunded to if the swap fails.
|
||||
optional string refund_address = 4;
|
||||
// Wallet from which the swap should be paid from. Ignored if `external_pay` is set to true.
|
||||
// If the swap fails, funds will be refunded to this wallet as well.
|
||||
optional uint64 from_wallet_id = 5;
|
||||
// Wallet where the the funds will go if the swap succeeds.
|
||||
optional uint64 to_wallet_id = 6;
|
||||
// Whether the daemon should broadcast the claim transaction immediately after the lockup transaction is in the mempool.
|
||||
// Should only be used for smaller amounts as it involves trust in Boltz.
|
||||
optional bool accept_zero_conf = 7;
|
||||
// If set, the daemon will not pay the swap from an internal wallet.
|
||||
optional bool external_pay = 8;
|
||||
// Boltz does not accept 0-conf for Liquid transactions with a fee of 0.01 sat/vByte;
|
||||
// when `lockup_zero_conf` is enabled, a fee of 0.1 sat/vByte will be used for Liquid lockup transactions
|
||||
optional bool lockup_zero_conf = 9;
|
||||
}
|
||||
|
||||
message ChainSwapInfo {
|
||||
string id = 1;
|
||||
Pair pair = 2;
|
||||
SwapState state = 3;
|
||||
string error = 4;
|
||||
string status = 5;
|
||||
string preimage = 6;
|
||||
bool is_auto = 8;
|
||||
optional uint64 service_fee = 9;
|
||||
double service_fee_percent = 10;
|
||||
optional uint64 onchain_fee = 11;
|
||||
int64 created_at = 12;
|
||||
uint64 tenant_id = 13;
|
||||
ChainSwapData from_data = 14;
|
||||
ChainSwapData to_data = 15;
|
||||
}
|
||||
|
||||
message ChainSwapData {
|
||||
string id = 1;
|
||||
Currency currency = 2;
|
||||
string private_key = 3;
|
||||
string their_public_key = 4;
|
||||
uint64 amount = 6;
|
||||
uint32 timeout_block_height = 7;
|
||||
optional string lockup_transaction_id = 8;
|
||||
optional string transaction_id = 9;
|
||||
optional uint64 wallet_id = 20;
|
||||
optional string address = 12;
|
||||
optional string blinding_key = 13;
|
||||
string lockup_address = 14;
|
||||
}
|
||||
|
||||
message ChannelId {
|
||||
// cln style: 832347x2473x1
|
||||
string cln = 1;
|
||||
// lnd style: 915175205006540801
|
||||
uint64 lnd = 2;
|
||||
}
|
||||
|
||||
message LightningChannel {
|
||||
ChannelId id = 1;
|
||||
uint64 capacity = 2;
|
||||
uint64 outbound_sat = 3;
|
||||
uint64 inbound_sat = 4;
|
||||
string peer_id = 5;
|
||||
}
|
||||
|
||||
message SwapStats {
|
||||
uint64 total_fees = 1;
|
||||
uint64 total_amount = 2;
|
||||
uint64 avg_fees = 3;
|
||||
uint64 avg_amount = 4;
|
||||
uint64 count = 5;
|
||||
uint64 success_count = 6;
|
||||
}
|
||||
|
||||
message Budget {
|
||||
uint64 total = 1;
|
||||
int64 remaining = 2;
|
||||
int64 start_date = 3;
|
||||
int64 end_date = 4;
|
||||
}
|
||||
|
||||
message WalletCredentials {
|
||||
// only one of these is allowed to be present
|
||||
optional string mnemonic = 1;
|
||||
optional string xpub = 2;
|
||||
optional string core_descriptor = 3;
|
||||
|
||||
// only used in combination with mnemonic
|
||||
optional uint64 subaccount = 4;
|
||||
}
|
||||
|
||||
message WalletParams {
|
||||
string name = 1;
|
||||
Currency currency = 2;
|
||||
// the password to encrypt the wallet with. If there are existing encrypted wallets, the same password has to be used.
|
||||
optional string password = 3;
|
||||
}
|
||||
|
||||
message ImportWalletRequest {
|
||||
WalletCredentials credentials = 1;
|
||||
WalletParams params = 2;
|
||||
}
|
||||
|
||||
message CreateWalletRequest {
|
||||
WalletParams params = 2;
|
||||
}
|
||||
|
||||
message CreateWalletResponse {
|
||||
string mnemonic = 1;
|
||||
Wallet wallet = 2;
|
||||
}
|
||||
|
||||
message SetSubaccountRequest {
|
||||
uint64 wallet_id = 1;
|
||||
// The subaccount to use. If not set, a new one will be created.
|
||||
optional uint64 subaccount = 2;
|
||||
}
|
||||
|
||||
message GetSubaccountsRequest {
|
||||
uint64 wallet_id = 1;
|
||||
}
|
||||
|
||||
message GetSubaccountsResponse {
|
||||
optional uint64 current = 1;
|
||||
repeated Subaccount subaccounts = 2;
|
||||
}
|
||||
|
||||
message ImportWalletResponse {}
|
||||
|
||||
message GetWalletsRequest {
|
||||
optional Currency currency = 1;
|
||||
optional bool include_readonly = 2;
|
||||
}
|
||||
|
||||
message GetWalletRequest {
|
||||
optional string name = 1;
|
||||
optional uint64 id = 2;
|
||||
}
|
||||
|
||||
message GetWalletCredentialsRequest {
|
||||
uint64 id = 1;
|
||||
optional string password = 2;
|
||||
}
|
||||
|
||||
message RemoveWalletRequest {
|
||||
uint64 id = 1;
|
||||
}
|
||||
|
||||
|
||||
message Wallet {
|
||||
uint64 id = 1;
|
||||
string name = 2;
|
||||
Currency currency = 3;
|
||||
bool readonly = 4;
|
||||
Balance balance = 5;
|
||||
uint64 tenant_id = 6;
|
||||
}
|
||||
|
||||
message Wallets {
|
||||
repeated Wallet wallets = 1;
|
||||
}
|
||||
|
||||
message Balance {
|
||||
uint64 total = 1;
|
||||
uint64 confirmed = 2;
|
||||
uint64 unconfirmed = 3;
|
||||
}
|
||||
|
||||
message Subaccount {
|
||||
Balance balance = 1;
|
||||
uint64 pointer = 2;
|
||||
string type = 3;
|
||||
}
|
||||
|
||||
message RemoveWalletResponse {}
|
||||
|
||||
message UnlockRequest {
|
||||
string password = 1;
|
||||
}
|
||||
|
||||
message VerifyWalletPasswordRequest {
|
||||
string password = 1;
|
||||
}
|
||||
|
||||
message VerifyWalletPasswordResponse {
|
||||
bool correct = 1;
|
||||
}
|
||||
|
||||
message ChangeWalletPasswordRequest {
|
||||
string old = 1;
|
||||
string new = 2;
|
||||
}
|
221
lnbits/wallets/boltz_grpc_files/boltzrpc_pb2.py
Normal file
221
lnbits/wallets/boltz_grpc_files/boltzrpc_pb2.py
Normal file
File diff suppressed because one or more lines are too long
1310
lnbits/wallets/boltz_grpc_files/boltzrpc_pb2.pyi
Normal file
1310
lnbits/wallets/boltz_grpc_files/boltzrpc_pb2.pyi
Normal file
File diff suppressed because it is too large
Load diff
1598
lnbits/wallets/boltz_grpc_files/boltzrpc_pb2_grpc.py
Normal file
1598
lnbits/wallets/boltz_grpc_files/boltzrpc_pb2_grpc.py
Normal file
File diff suppressed because it is too large
Load diff
3
lnbits/wallets/boltz_grpc_files/update.sh
Executable file
3
lnbits/wallets/boltz_grpc_files/update.sh
Executable file
|
@ -0,0 +1,3 @@
|
|||
|
||||
wget https://raw.githubusercontent.com/BoltzExchange/boltz-client/master/boltzrpc/boltzrpc.proto -O lnbits/wallets/boltz_grpc_files/boltzrpc.proto
|
||||
poetry run python -m grpc_tools.protoc -I . --python_out=. --grpc_python_out=. --pyi_out=. lnbits/wallets/boltz_grpc_files/boltzrpc.proto
|
217
poetry.lock
generated
217
poetry.lock
generated
|
@ -931,69 +931,121 @@ typing = ["typing-extensions (>=4.8)"]
|
|||
|
||||
[[package]]
|
||||
name = "grpcio"
|
||||
version = "1.62.2"
|
||||
version = "1.65.4"
|
||||
description = "HTTP/2-based RPC framework"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "grpcio-1.62.2-cp310-cp310-linux_armv7l.whl", hash = "sha256:66344ea741124c38588a664237ac2fa16dfd226964cca23ddc96bd4accccbde5"},
|
||||
{file = "grpcio-1.62.2-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:5dab7ac2c1e7cb6179c6bfad6b63174851102cbe0682294e6b1d6f0981ad7138"},
|
||||
{file = "grpcio-1.62.2-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:3ad00f3f0718894749d5a8bb0fa125a7980a2f49523731a9b1fabf2b3522aa43"},
|
||||
{file = "grpcio-1.62.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e72ddfee62430ea80133d2cbe788e0d06b12f865765cb24a40009668bd8ea05"},
|
||||
{file = "grpcio-1.62.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53d3a59a10af4c2558a8e563aed9f256259d2992ae0d3037817b2155f0341de1"},
|
||||
{file = "grpcio-1.62.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a1511a303f8074f67af4119275b4f954189e8313541da7b88b1b3a71425cdb10"},
|
||||
{file = "grpcio-1.62.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b94d41b7412ef149743fbc3178e59d95228a7064c5ab4760ae82b562bdffb199"},
|
||||
{file = "grpcio-1.62.2-cp310-cp310-win32.whl", hash = "sha256:a75af2fc7cb1fe25785be7bed1ab18cef959a376cdae7c6870184307614caa3f"},
|
||||
{file = "grpcio-1.62.2-cp310-cp310-win_amd64.whl", hash = "sha256:80407bc007754f108dc2061e37480238b0dc1952c855e86a4fc283501ee6bb5d"},
|
||||
{file = "grpcio-1.62.2-cp311-cp311-linux_armv7l.whl", hash = "sha256:c1624aa686d4b36790ed1c2e2306cc3498778dffaf7b8dd47066cf819028c3ad"},
|
||||
{file = "grpcio-1.62.2-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:1c1bb80299bdef33309dff03932264636450c8fdb142ea39f47e06a7153d3063"},
|
||||
{file = "grpcio-1.62.2-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:db068bbc9b1fa16479a82e1ecf172a93874540cb84be69f0b9cb9b7ac3c82670"},
|
||||
{file = "grpcio-1.62.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2cc8a308780edbe2c4913d6a49dbdb5befacdf72d489a368566be44cadaef1a"},
|
||||
{file = "grpcio-1.62.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0695ae31a89f1a8fc8256050329a91a9995b549a88619263a594ca31b76d756"},
|
||||
{file = "grpcio-1.62.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:88b4f9ee77191dcdd8810241e89340a12cbe050be3e0d5f2f091c15571cd3930"},
|
||||
{file = "grpcio-1.62.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2a0204532aa2f1afd467024b02b4069246320405bc18abec7babab03e2644e75"},
|
||||
{file = "grpcio-1.62.2-cp311-cp311-win32.whl", hash = "sha256:6e784f60e575a0de554ef9251cbc2ceb8790914fe324f11e28450047f264ee6f"},
|
||||
{file = "grpcio-1.62.2-cp311-cp311-win_amd64.whl", hash = "sha256:112eaa7865dd9e6d7c0556c8b04ae3c3a2dc35d62ad3373ab7f6a562d8199200"},
|
||||
{file = "grpcio-1.62.2-cp312-cp312-linux_armv7l.whl", hash = "sha256:65034473fc09628a02fb85f26e73885cf1ed39ebd9cf270247b38689ff5942c5"},
|
||||
{file = "grpcio-1.62.2-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:d2c1771d0ee3cf72d69bb5e82c6a82f27fbd504c8c782575eddb7839729fbaad"},
|
||||
{file = "grpcio-1.62.2-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:3abe6838196da518863b5d549938ce3159d809218936851b395b09cad9b5d64a"},
|
||||
{file = "grpcio-1.62.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5ffeb269f10cedb4f33142b89a061acda9f672fd1357331dbfd043422c94e9e"},
|
||||
{file = "grpcio-1.62.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:404d3b4b6b142b99ba1cff0b2177d26b623101ea2ce51c25ef6e53d9d0d87bcc"},
|
||||
{file = "grpcio-1.62.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:262cda97efdabb20853d3b5a4c546a535347c14b64c017f628ca0cc7fa780cc6"},
|
||||
{file = "grpcio-1.62.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:17708db5b11b966373e21519c4c73e5a750555f02fde82276ea2a267077c68ad"},
|
||||
{file = "grpcio-1.62.2-cp312-cp312-win32.whl", hash = "sha256:b7ec9e2f8ffc8436f6b642a10019fc513722858f295f7efc28de135d336ac189"},
|
||||
{file = "grpcio-1.62.2-cp312-cp312-win_amd64.whl", hash = "sha256:aa787b83a3cd5e482e5c79be030e2b4a122ecc6c5c6c4c42a023a2b581fdf17b"},
|
||||
{file = "grpcio-1.62.2-cp37-cp37m-linux_armv7l.whl", hash = "sha256:cfd23ad29bfa13fd4188433b0e250f84ec2c8ba66b14a9877e8bce05b524cf54"},
|
||||
{file = "grpcio-1.62.2-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:af15e9efa4d776dfcecd1d083f3ccfb04f876d613e90ef8432432efbeeac689d"},
|
||||
{file = "grpcio-1.62.2-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:f4aa94361bb5141a45ca9187464ae81a92a2a135ce2800b2203134f7a1a1d479"},
|
||||
{file = "grpcio-1.62.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82af3613a219512a28ee5c95578eb38d44dd03bca02fd918aa05603c41018051"},
|
||||
{file = "grpcio-1.62.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55ddaf53474e8caeb29eb03e3202f9d827ad3110475a21245f3c7712022882a9"},
|
||||
{file = "grpcio-1.62.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c79b518c56dddeec79e5500a53d8a4db90da995dfe1738c3ac57fe46348be049"},
|
||||
{file = "grpcio-1.62.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a5eb4844e5e60bf2c446ef38c5b40d7752c6effdee882f716eb57ae87255d20a"},
|
||||
{file = "grpcio-1.62.2-cp37-cp37m-win_amd64.whl", hash = "sha256:aaae70364a2d1fb238afd6cc9fcb10442b66e397fd559d3f0968d28cc3ac929c"},
|
||||
{file = "grpcio-1.62.2-cp38-cp38-linux_armv7l.whl", hash = "sha256:1bcfe5070e4406f489e39325b76caeadab28c32bf9252d3ae960c79935a4cc36"},
|
||||
{file = "grpcio-1.62.2-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:da6a7b6b938c15fa0f0568e482efaae9c3af31963eec2da4ff13a6d8ec2888e4"},
|
||||
{file = "grpcio-1.62.2-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:41955b641c34db7d84db8d306937b72bc4968eef1c401bea73081a8d6c3d8033"},
|
||||
{file = "grpcio-1.62.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c772f225483905f675cb36a025969eef9712f4698364ecd3a63093760deea1bc"},
|
||||
{file = "grpcio-1.62.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07ce1f775d37ca18c7a141300e5b71539690efa1f51fe17f812ca85b5e73262f"},
|
||||
{file = "grpcio-1.62.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:26f415f40f4a93579fd648f48dca1c13dfacdfd0290f4a30f9b9aeb745026811"},
|
||||
{file = "grpcio-1.62.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:db707e3685ff16fc1eccad68527d072ac8bdd2e390f6daa97bc394ea7de4acea"},
|
||||
{file = "grpcio-1.62.2-cp38-cp38-win32.whl", hash = "sha256:589ea8e75de5fd6df387de53af6c9189c5231e212b9aa306b6b0d4f07520fbb9"},
|
||||
{file = "grpcio-1.62.2-cp38-cp38-win_amd64.whl", hash = "sha256:3c3ed41f4d7a3aabf0f01ecc70d6b5d00ce1800d4af652a549de3f7cf35c4abd"},
|
||||
{file = "grpcio-1.62.2-cp39-cp39-linux_armv7l.whl", hash = "sha256:162ccf61499c893831b8437120600290a99c0bc1ce7b51f2c8d21ec87ff6af8b"},
|
||||
{file = "grpcio-1.62.2-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:f27246d7da7d7e3bd8612f63785a7b0c39a244cf14b8dd9dd2f2fab939f2d7f1"},
|
||||
{file = "grpcio-1.62.2-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:2507006c8a478f19e99b6fe36a2464696b89d40d88f34e4b709abe57e1337467"},
|
||||
{file = "grpcio-1.62.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a90ac47a8ce934e2c8d71e317d2f9e7e6aaceb2d199de940ce2c2eb611b8c0f4"},
|
||||
{file = "grpcio-1.62.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99701979bcaaa7de8d5f60476487c5df8f27483624f1f7e300ff4669ee44d1f2"},
|
||||
{file = "grpcio-1.62.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:af7dc3f7a44f10863b1b0ecab4078f0a00f561aae1edbd01fd03ad4dcf61c9e9"},
|
||||
{file = "grpcio-1.62.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fa63245271920786f4cb44dcada4983a3516be8f470924528cf658731864c14b"},
|
||||
{file = "grpcio-1.62.2-cp39-cp39-win32.whl", hash = "sha256:c6ad9c39704256ed91a1cffc1379d63f7d0278d6a0bad06b0330f5d30291e3a3"},
|
||||
{file = "grpcio-1.62.2-cp39-cp39-win_amd64.whl", hash = "sha256:16da954692fd61aa4941fbeda405a756cd96b97b5d95ca58a92547bba2c1624f"},
|
||||
{file = "grpcio-1.62.2.tar.gz", hash = "sha256:c77618071d96b7a8be2c10701a98537823b9c65ba256c0b9067e0594cdbd954d"},
|
||||
{file = "grpcio-1.65.4-cp310-cp310-linux_armv7l.whl", hash = "sha256:0e85c8766cf7f004ab01aff6a0393935a30d84388fa3c58d77849fcf27f3e98c"},
|
||||
{file = "grpcio-1.65.4-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:e4a795c02405c7dfa8affd98c14d980f4acea16ea3b539e7404c645329460e5a"},
|
||||
{file = "grpcio-1.65.4-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:d7b984a8dd975d949c2042b9b5ebcf297d6d5af57dcd47f946849ee15d3c2fb8"},
|
||||
{file = "grpcio-1.65.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:644a783ce604a7d7c91412bd51cf9418b942cf71896344b6dc8d55713c71ce82"},
|
||||
{file = "grpcio-1.65.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5764237d751d3031a36fafd57eb7d36fd2c10c658d2b4057c516ccf114849a3e"},
|
||||
{file = "grpcio-1.65.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ee40d058cf20e1dd4cacec9c39e9bce13fedd38ce32f9ba00f639464fcb757de"},
|
||||
{file = "grpcio-1.65.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4482a44ce7cf577a1f8082e807a5b909236bce35b3e3897f839f2fbd9ae6982d"},
|
||||
{file = "grpcio-1.65.4-cp310-cp310-win32.whl", hash = "sha256:66bb051881c84aa82e4f22d8ebc9d1704b2e35d7867757f0740c6ef7b902f9b1"},
|
||||
{file = "grpcio-1.65.4-cp310-cp310-win_amd64.whl", hash = "sha256:870370524eff3144304da4d1bbe901d39bdd24f858ce849b7197e530c8c8f2ec"},
|
||||
{file = "grpcio-1.65.4-cp311-cp311-linux_armv7l.whl", hash = "sha256:85e9c69378af02e483bc626fc19a218451b24a402bdf44c7531e4c9253fb49ef"},
|
||||
{file = "grpcio-1.65.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2bd672e005afab8bf0d6aad5ad659e72a06dd713020554182a66d7c0c8f47e18"},
|
||||
{file = "grpcio-1.65.4-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:abccc5d73f5988e8f512eb29341ed9ced923b586bb72e785f265131c160231d8"},
|
||||
{file = "grpcio-1.65.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:886b45b29f3793b0c2576201947258782d7e54a218fe15d4a0468d9a6e00ce17"},
|
||||
{file = "grpcio-1.65.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be952436571dacc93ccc7796db06b7daf37b3b56bb97e3420e6503dccfe2f1b4"},
|
||||
{file = "grpcio-1.65.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8dc9ddc4603ec43f6238a5c95400c9a901b6d079feb824e890623da7194ff11e"},
|
||||
{file = "grpcio-1.65.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ade1256c98cba5a333ef54636095f2c09e6882c35f76acb04412f3b1aa3c29a5"},
|
||||
{file = "grpcio-1.65.4-cp311-cp311-win32.whl", hash = "sha256:280e93356fba6058cbbfc6f91a18e958062ef1bdaf5b1caf46c615ba1ae71b5b"},
|
||||
{file = "grpcio-1.65.4-cp311-cp311-win_amd64.whl", hash = "sha256:d2b819f9ee27ed4e3e737a4f3920e337e00bc53f9e254377dd26fc7027c4d558"},
|
||||
{file = "grpcio-1.65.4-cp312-cp312-linux_armv7l.whl", hash = "sha256:926a0750a5e6fb002542e80f7fa6cab8b1a2ce5513a1c24641da33e088ca4c56"},
|
||||
{file = "grpcio-1.65.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:2a1d4c84d9e657f72bfbab8bedf31bdfc6bfc4a1efb10b8f2d28241efabfaaf2"},
|
||||
{file = "grpcio-1.65.4-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:17de4fda50967679677712eec0a5c13e8904b76ec90ac845d83386b65da0ae1e"},
|
||||
{file = "grpcio-1.65.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3dee50c1b69754a4228e933696408ea87f7e896e8d9797a3ed2aeed8dbd04b74"},
|
||||
{file = "grpcio-1.65.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74c34fc7562bdd169b77966068434a93040bfca990e235f7a67cdf26e1bd5c63"},
|
||||
{file = "grpcio-1.65.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:24a2246e80a059b9eb981e4c2a6d8111b1b5e03a44421adbf2736cc1d4988a8a"},
|
||||
{file = "grpcio-1.65.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:18c10f0d054d2dce34dd15855fcca7cc44ec3b811139437543226776730c0f28"},
|
||||
{file = "grpcio-1.65.4-cp312-cp312-win32.whl", hash = "sha256:d72962788b6c22ddbcdb70b10c11fbb37d60ae598c51eb47ec019db66ccfdff0"},
|
||||
{file = "grpcio-1.65.4-cp312-cp312-win_amd64.whl", hash = "sha256:7656376821fed8c89e68206a522522317787a3d9ed66fb5110b1dff736a5e416"},
|
||||
{file = "grpcio-1.65.4-cp38-cp38-linux_armv7l.whl", hash = "sha256:4934077b33aa6fe0b451de8b71dabde96bf2d9b4cb2b3187be86e5adebcba021"},
|
||||
{file = "grpcio-1.65.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0cef8c919a3359847c357cb4314e50ed1f0cca070f828ee8f878d362fd744d52"},
|
||||
{file = "grpcio-1.65.4-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:a925446e6aa12ca37114840d8550f308e29026cdc423a73da3043fd1603a6385"},
|
||||
{file = "grpcio-1.65.4-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf53e6247f1e2af93657e62e240e4f12e11ee0b9cef4ddcb37eab03d501ca864"},
|
||||
{file = "grpcio-1.65.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdb34278e4ceb224c89704cd23db0d902e5e3c1c9687ec9d7c5bb4c150f86816"},
|
||||
{file = "grpcio-1.65.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e6cbdd107e56bde55c565da5fd16f08e1b4e9b0674851d7749e7f32d8645f524"},
|
||||
{file = "grpcio-1.65.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:626319a156b1f19513156a3b0dbfe977f5f93db63ca673a0703238ebd40670d7"},
|
||||
{file = "grpcio-1.65.4-cp38-cp38-win32.whl", hash = "sha256:3d1bbf7e1dd1096378bd83c83f554d3b93819b91161deaf63e03b7022a85224a"},
|
||||
{file = "grpcio-1.65.4-cp38-cp38-win_amd64.whl", hash = "sha256:a99e6dffefd3027b438116f33ed1261c8d360f0dd4f943cb44541a2782eba72f"},
|
||||
{file = "grpcio-1.65.4-cp39-cp39-linux_armv7l.whl", hash = "sha256:874acd010e60a2ec1e30d5e505b0651ab12eb968157cd244f852b27c6dbed733"},
|
||||
{file = "grpcio-1.65.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b07f36faf01fca5427d4aa23645e2d492157d56c91fab7e06fe5697d7e171ad4"},
|
||||
{file = "grpcio-1.65.4-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:b81711bf4ec08a3710b534e8054c7dcf90f2edc22bebe11c1775a23f145595fe"},
|
||||
{file = "grpcio-1.65.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88fcabc332a4aef8bcefadc34a02e9ab9407ab975d2c7d981a8e12c1aed92aa1"},
|
||||
{file = "grpcio-1.65.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ba3e63108a8749994f02c7c0e156afb39ba5bdf755337de8e75eb685be244b"},
|
||||
{file = "grpcio-1.65.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8eb485801957a486bf5de15f2c792d9f9c897a86f2f18db8f3f6795a094b4bb2"},
|
||||
{file = "grpcio-1.65.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:075f3903bc1749ace93f2b0664f72964ee5f2da5c15d4b47e0ab68e4f442c257"},
|
||||
{file = "grpcio-1.65.4-cp39-cp39-win32.whl", hash = "sha256:0a0720299bdb2cc7306737295d56e41ce8827d5669d4a3cd870af832e3b17c4d"},
|
||||
{file = "grpcio-1.65.4-cp39-cp39-win_amd64.whl", hash = "sha256:a146bc40fa78769f22e1e9ff4f110ef36ad271b79707577bf2a31e3e931141b9"},
|
||||
{file = "grpcio-1.65.4.tar.gz", hash = "sha256:2a4f476209acffec056360d3e647ae0e14ae13dcf3dfb130c227ae1c594cbe39"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
protobuf = ["grpcio-tools (>=1.62.2)"]
|
||||
protobuf = ["grpcio-tools (>=1.65.4)"]
|
||||
|
||||
[[package]]
|
||||
name = "grpcio-tools"
|
||||
version = "1.65.4"
|
||||
description = "Protobuf code generator for gRPC"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "grpcio_tools-1.65.4-cp310-cp310-linux_armv7l.whl", hash = "sha256:bd9bfc03776def6267d08885f639ca593eee60c6aa98252b08ac50ece75989bd"},
|
||||
{file = "grpcio_tools-1.65.4-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:15d8263027ed6f326661a26a1ac4548f01dd6ca1624f491a4aef908c0e7afe22"},
|
||||
{file = "grpcio_tools-1.65.4-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:9075bb8e15726e2dbd9ce7cc982a77b011a529b013013487861d82454508eb7b"},
|
||||
{file = "grpcio_tools-1.65.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db10c68bca4a14be13f06143e853231c7265a38571d5b12877394a48397b9b96"},
|
||||
{file = "grpcio_tools-1.65.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21569dda4aa7ab1301766ddc2d5d30c58f987d02a9ca5d984886bdb419a76746"},
|
||||
{file = "grpcio_tools-1.65.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5fb1bc6263af137662ab1d11eed36a50f9f75aa1948837030dd54d8688a9e8f1"},
|
||||
{file = "grpcio_tools-1.65.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d3fafd48563cc28e8537f4a7d2de28b4436df9337e639a42acfd53548ecaa62e"},
|
||||
{file = "grpcio_tools-1.65.4-cp310-cp310-win32.whl", hash = "sha256:9dd133763c0b322466a83557e04c9455c2966f51621cc03adee096dcfdbc6b51"},
|
||||
{file = "grpcio_tools-1.65.4-cp310-cp310-win_amd64.whl", hash = "sha256:4b108396d95a07705b2d5f53e8621a8499025148167ee801e05d90a267c111d5"},
|
||||
{file = "grpcio_tools-1.65.4-cp311-cp311-linux_armv7l.whl", hash = "sha256:64162a0df2fb170674a580ed5d14b954ea9f48460f5ec8f0f54231c3e52ed56c"},
|
||||
{file = "grpcio_tools-1.65.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:323a168b7cdd25b4273781b277559a4048d890f64931c102295a042f5434693f"},
|
||||
{file = "grpcio_tools-1.65.4-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:12db3fd619b55679df484c3998fce49db04924fb4000e5eb794cb6c92f65830f"},
|
||||
{file = "grpcio_tools-1.65.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d82c974592e7af9a9bc20103b3a2a07f3832fdc48b4a24c71c9726560b5889f"},
|
||||
{file = "grpcio_tools-1.65.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe2278a86c360d1772e42a635ed5028bdecf9b4c88e61cdba1f72c048c8358d5"},
|
||||
{file = "grpcio_tools-1.65.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9ec926ac0f11e195ae69ea46ce4f5b4cb67784e1149cb0a244dcf3163a7579fa"},
|
||||
{file = "grpcio_tools-1.65.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8e7a836784d43add8cdbf8434546334aa17c67fafb7c8cf79053a6fe5a4d9b4f"},
|
||||
{file = "grpcio_tools-1.65.4-cp311-cp311-win32.whl", hash = "sha256:5589828575bd4f097f129a8458b1315dbe0681fc6f79df4490e513fbd5d5612f"},
|
||||
{file = "grpcio_tools-1.65.4-cp311-cp311-win_amd64.whl", hash = "sha256:8efdda509c8f203ea228cddd4fa8ece56e585daabb891ed1963604f173969dee"},
|
||||
{file = "grpcio_tools-1.65.4-cp312-cp312-linux_armv7l.whl", hash = "sha256:a077784cf8808f8bc632978f609abb1eb409b84ce72fd61dc6755def782bfbe7"},
|
||||
{file = "grpcio_tools-1.65.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:cb5e360704ceeb71658602b1de717a8613044194f90a7a087e90c6d36539e695"},
|
||||
{file = "grpcio_tools-1.65.4-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:9c9155210d15891eb7344eb4b6b91153472cbe67dfcfb41de71fc79763155c17"},
|
||||
{file = "grpcio_tools-1.65.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:245254307701a3dfb32bfbea4f2f618c30eb7ea638824f2e7ccd2e3bfeec3a47"},
|
||||
{file = "grpcio_tools-1.65.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6da3adf692b55fb52019b79294a6b4b6833186b2fa68186e7cc993a53b232982"},
|
||||
{file = "grpcio_tools-1.65.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49ef47db7c6487f37ab302f5f5b5003c96a015649a1c0d7bcbbd0daa18beeb43"},
|
||||
{file = "grpcio_tools-1.65.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:6d1004ea42639bec7b7a9b7883cd4bd8a6ef4845f9b39870aaee8efac2a24e46"},
|
||||
{file = "grpcio_tools-1.65.4-cp312-cp312-win32.whl", hash = "sha256:c1471720682639f19d1baaa976df1021e98a51c609d1405e0b277b9cbcae96bd"},
|
||||
{file = "grpcio_tools-1.65.4-cp312-cp312-win_amd64.whl", hash = "sha256:75cf8276550d213524cf660e73aaee858f94d19f99a0ec8e29665d6deab0f89e"},
|
||||
{file = "grpcio_tools-1.65.4-cp38-cp38-linux_armv7l.whl", hash = "sha256:442fc5d8d4535e475a17f85a4e45b4af5741bf895f187e20f881e83cbc34e791"},
|
||||
{file = "grpcio_tools-1.65.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a10d079ea52264fbf82cf14c4f103873ad54cba237d708f03603a8cb367584e1"},
|
||||
{file = "grpcio_tools-1.65.4-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:460226bc931b98e60b96b6b4063331de70f19508c8c14072d3661924cdd9a82c"},
|
||||
{file = "grpcio_tools-1.65.4-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa9d9322e07909031b81ae10124f6a01e74a8f7d42b6eeaccfd790aad2518060"},
|
||||
{file = "grpcio_tools-1.65.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c87b7e304376a6c5aaf7d6276f4f58a36b861709063370902eb9c6d5317a31b"},
|
||||
{file = "grpcio_tools-1.65.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d68abc5c9c012f2521f93b2941b6a44b24d03462ed1f0dcddb03a62df1a81091"},
|
||||
{file = "grpcio_tools-1.65.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3ac76c7331fe397307d58098f24657efa793b21db7d87e22112f1fe3dad62789"},
|
||||
{file = "grpcio_tools-1.65.4-cp38-cp38-win32.whl", hash = "sha256:1f628780bd18025e30675b97ece2faadedd33360c4b87fe91e788522c4425a79"},
|
||||
{file = "grpcio_tools-1.65.4-cp38-cp38-win_amd64.whl", hash = "sha256:b0d6f235be4d4faca855156094d8684ee7ebe3087ee9dd0689cfa527009cdeaf"},
|
||||
{file = "grpcio_tools-1.65.4-cp39-cp39-linux_armv7l.whl", hash = "sha256:d84ed2f64ca63f775f96c66426c8cd5dd904d38f1f1246e23c9a686839673b2d"},
|
||||
{file = "grpcio_tools-1.65.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:79056f95ae64d0f936edd1c2d421897c0923687a09f479b6a4bd5a64e8b4a2ec"},
|
||||
{file = "grpcio_tools-1.65.4-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:bfca471c8ab6af43e2ccdd395cda6e40d4100ffc39961d53707becb4db51dc8b"},
|
||||
{file = "grpcio_tools-1.65.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24048d0a969813851ba5f2b3fabc92fa7cb49e6b10f1d00114303eaa84f770fb"},
|
||||
{file = "grpcio_tools-1.65.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d37bf8276058b4600b3c65b9d62242d45fde06a2b69ff86d4e0f061287c33aa5"},
|
||||
{file = "grpcio_tools-1.65.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2f04d4879077795b998dc5d1c7510f8cd42f5082d4447c35fe39f57b95d7010e"},
|
||||
{file = "grpcio_tools-1.65.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cef9ae044b846e4ab9ce3c7cb872ebeedbb7ae545db8c585187744848dd93559"},
|
||||
{file = "grpcio_tools-1.65.4-cp39-cp39-win32.whl", hash = "sha256:5051e85953b942521528b19eb39bd6dad3b3e0e5a552a66bbeadbbd4a4a6f0e5"},
|
||||
{file = "grpcio_tools-1.65.4-cp39-cp39-win_amd64.whl", hash = "sha256:a39a9c033391c3ce591a06ee058ed16e07b06ac2866083c53daa4e5d5235efc6"},
|
||||
{file = "grpcio_tools-1.65.4.tar.gz", hash = "sha256:638486d9ebf68a847f59dad0480292142a3c5143a2943bce7721c3ce9f665148"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
grpcio = ">=1.65.4"
|
||||
protobuf = ">=5.26.1,<6.0dev"
|
||||
setuptools = "*"
|
||||
|
||||
[[package]]
|
||||
name = "h11"
|
||||
|
@ -1346,16 +1398,6 @@ files = [
|
|||
{file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"},
|
||||
{file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"},
|
||||
{file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"},
|
||||
{file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"},
|
||||
{file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"},
|
||||
{file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"},
|
||||
{file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"},
|
||||
{file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"},
|
||||
{file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"},
|
||||
{file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"},
|
||||
{file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"},
|
||||
{file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"},
|
||||
{file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"},
|
||||
{file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"},
|
||||
{file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"},
|
||||
{file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"},
|
||||
|
@ -1682,24 +1724,22 @@ virtualenv = ">=20.10.0"
|
|||
|
||||
[[package]]
|
||||
name = "protobuf"
|
||||
version = "4.24.3"
|
||||
version = "5.26.1"
|
||||
description = ""
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "protobuf-4.24.3-cp310-abi3-win32.whl", hash = "sha256:20651f11b6adc70c0f29efbe8f4a94a74caf61b6200472a9aea6e19898f9fcf4"},
|
||||
{file = "protobuf-4.24.3-cp310-abi3-win_amd64.whl", hash = "sha256:3d42e9e4796a811478c783ef63dc85b5a104b44aaaca85d4864d5b886e4b05e3"},
|
||||
{file = "protobuf-4.24.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:6e514e8af0045be2b56e56ae1bb14f43ce7ffa0f68b1c793670ccbe2c4fc7d2b"},
|
||||
{file = "protobuf-4.24.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:ba53c2f04798a326774f0e53b9c759eaef4f6a568ea7072ec6629851c8435959"},
|
||||
{file = "protobuf-4.24.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:f6ccbcf027761a2978c1406070c3788f6de4a4b2cc20800cc03d52df716ad675"},
|
||||
{file = "protobuf-4.24.3-cp37-cp37m-win32.whl", hash = "sha256:1b182c7181a2891e8f7f3a1b5242e4ec54d1f42582485a896e4de81aa17540c2"},
|
||||
{file = "protobuf-4.24.3-cp37-cp37m-win_amd64.whl", hash = "sha256:b0271a701e6782880d65a308ba42bc43874dabd1a0a0f41f72d2dac3b57f8e76"},
|
||||
{file = "protobuf-4.24.3-cp38-cp38-win32.whl", hash = "sha256:e29d79c913f17a60cf17c626f1041e5288e9885c8579832580209de8b75f2a52"},
|
||||
{file = "protobuf-4.24.3-cp38-cp38-win_amd64.whl", hash = "sha256:067f750169bc644da2e1ef18c785e85071b7c296f14ac53e0900e605da588719"},
|
||||
{file = "protobuf-4.24.3-cp39-cp39-win32.whl", hash = "sha256:2da777d34b4f4f7613cdf85c70eb9a90b1fbef9d36ae4a0ccfe014b0b07906f1"},
|
||||
{file = "protobuf-4.24.3-cp39-cp39-win_amd64.whl", hash = "sha256:f631bb982c5478e0c1c70eab383af74a84be66945ebf5dd6b06fc90079668d0b"},
|
||||
{file = "protobuf-4.24.3-py3-none-any.whl", hash = "sha256:f6f8dc65625dadaad0c8545319c2e2f0424fede988368893ca3844261342c11a"},
|
||||
{file = "protobuf-4.24.3.tar.gz", hash = "sha256:12e9ad2ec079b833176d2921be2cb24281fa591f0b119b208b788adc48c2561d"},
|
||||
{file = "protobuf-5.26.1-cp310-abi3-win32.whl", hash = "sha256:3c388ea6ddfe735f8cf69e3f7dc7611e73107b60bdfcf5d0f024c3ccd3794e23"},
|
||||
{file = "protobuf-5.26.1-cp310-abi3-win_amd64.whl", hash = "sha256:e6039957449cb918f331d32ffafa8eb9255769c96aa0560d9a5bf0b4e00a2a33"},
|
||||
{file = "protobuf-5.26.1-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:38aa5f535721d5bb99861166c445c4105c4e285c765fbb2ac10f116e32dcd46d"},
|
||||
{file = "protobuf-5.26.1-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:fbfe61e7ee8c1860855696e3ac6cfd1b01af5498facc6834fcc345c9684fb2ca"},
|
||||
{file = "protobuf-5.26.1-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:f7417703f841167e5a27d48be13389d52ad705ec09eade63dfc3180a959215d7"},
|
||||
{file = "protobuf-5.26.1-cp38-cp38-win32.whl", hash = "sha256:d693d2504ca96750d92d9de8a103102dd648fda04540495535f0fec7577ed8fc"},
|
||||
{file = "protobuf-5.26.1-cp38-cp38-win_amd64.whl", hash = "sha256:9b557c317ebe6836835ec4ef74ec3e994ad0894ea424314ad3552bc6e8835b4e"},
|
||||
{file = "protobuf-5.26.1-cp39-cp39-win32.whl", hash = "sha256:b9ba3ca83c2e31219ffbeb9d76b63aad35a3eb1544170c55336993d7a18ae72c"},
|
||||
{file = "protobuf-5.26.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ee014c2c87582e101d6b54260af03b6596728505c79f17c8586e7523aaa8f8c"},
|
||||
{file = "protobuf-5.26.1-py3-none-any.whl", hash = "sha256:da612f2720c0183417194eeaa2523215c4fcc1a1949772dc65f05047e08d5932"},
|
||||
{file = "protobuf-5.26.1.tar.gz", hash = "sha256:8ca2a1d97c290ec7b16e4e5dff2e5ae150cc1582f55b5ab300d45cb0dfa90e51"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2161,7 +2201,6 @@ files = [
|
|||
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"},
|
||||
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"},
|
||||
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"},
|
||||
{file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"},
|
||||
{file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"},
|
||||
{file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"},
|
||||
{file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"},
|
||||
|
@ -2169,16 +2208,8 @@ files = [
|
|||
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"},
|
||||
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"},
|
||||
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"},
|
||||
{file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"},
|
||||
{file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"},
|
||||
{file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"},
|
||||
{file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"},
|
||||
{file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"},
|
||||
{file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"},
|
||||
{file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"},
|
||||
{file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"},
|
||||
{file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"},
|
||||
{file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"},
|
||||
{file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"},
|
||||
{file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"},
|
||||
{file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"},
|
||||
|
@ -2195,7 +2226,6 @@ files = [
|
|||
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"},
|
||||
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"},
|
||||
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"},
|
||||
{file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"},
|
||||
{file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"},
|
||||
{file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"},
|
||||
{file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"},
|
||||
|
@ -2203,7 +2233,6 @@ files = [
|
|||
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"},
|
||||
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"},
|
||||
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"},
|
||||
{file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"},
|
||||
{file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"},
|
||||
{file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"},
|
||||
{file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"},
|
||||
|
@ -3056,4 +3085,4 @@ liquid = ["wallycore"]
|
|||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.10 | ^3.9"
|
||||
content-hash = "f1259ca9c93826eb86ac911b99ac0d3fa8bfea9c699e472c213f4746b7b2e252"
|
||||
content-hash = "00e4e5d79e4f84ff9ef4e4f8f9b86df2744ddecc533acdd6e471845d25aab735"
|
||||
|
|
|
@ -32,8 +32,8 @@ uvicorn = "0.23.2"
|
|||
uvloop = "0.19.0"
|
||||
websockets = "11.0.3"
|
||||
loguru = "0.7.2"
|
||||
grpcio = "1.62.2"
|
||||
protobuf = "4.24.3"
|
||||
grpcio = "1.65.4"
|
||||
protobuf = "5.26.1"
|
||||
pyln-client = "24.5"
|
||||
pywebpush = "1.14.0"
|
||||
slowapi = "0.1.9"
|
||||
|
@ -86,6 +86,7 @@ pytest-httpserver = "^1.0.10"
|
|||
pytest-mock = "^3.14.0"
|
||||
types-mock = "^5.1.0.20240311"
|
||||
mock = "^5.1.0"
|
||||
grpcio-tools = "^1.65.4"
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core>=1.0.0"]
|
||||
|
@ -102,6 +103,7 @@ include = [
|
|||
"tools",
|
||||
]
|
||||
exclude = [
|
||||
"lnbits/wallets/boltz_grpc_files",
|
||||
"lnbits/wallets/lnd_grpc_files",
|
||||
"lnbits/extensions",
|
||||
"lnbits/upgrades",
|
||||
|
@ -114,6 +116,7 @@ files = [
|
|||
"tools",
|
||||
]
|
||||
exclude = [
|
||||
"^lnbits/wallets/boltz_grpc_files",
|
||||
"^lnbits/wallets/lnd_grpc_files",
|
||||
"^lnbits/extensions",
|
||||
"^lnbits/upgrades",
|
||||
|
@ -161,6 +164,7 @@ extend-exclude = """(
|
|||
| lnbits/extensions
|
||||
| lnbits/upgrades
|
||||
| lnbits/wallets/lnd_grpc_files
|
||||
| lnbits/wallets/boltz_grpc_files
|
||||
)"""
|
||||
|
||||
[tool.ruff]
|
||||
|
@ -169,7 +173,8 @@ line-length = 88
|
|||
|
||||
# Exclude generated files.
|
||||
extend-exclude = [
|
||||
"lnbits/wallets/lnd_grpc_files"
|
||||
"lnbits/wallets/lnd_grpc_files",
|
||||
"lnbits/wallets/boltz_grpc_files"
|
||||
]
|
||||
|
||||
[tool.ruff.lint]
|
||||
|
|
Loading…
Add table
Reference in a new issue