from lwk import *
class MyLogger(Logging):
def log(self, level: LogLevel, message: str):
if level in (LogLevel.INFO, LogLevel.WARN, LogLevel.ERROR):
level_str = {
LogLevel.INFO: "INFO",
LogLevel.WARN: "WARN",
LogLevel.ERROR: "ERROR",
}.get(level, "UNKNOWN")
print(f"[{level_str}] {message}")
mnemonic = Mnemonic("abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about")
network = Network.mainnet()
client = AnyClient.from_electrum(network.default_electrum_client())
signer = Signer(mnemonic, network)
desc = signer.wpkh_slip77_descriptor()
wollet = Wollet(network, desc, datadir=None)
claim_address = wollet.address(2).address()
print(claim_address)
logger = MyLogger()
mnemonic_lightning = signer.derive_bip85_mnemonic(0, 12) builder = BoltzSessionBuilder(
network=network,
client=client,
mnemonic=mnemonic_lightning,
logging=logger,
)
boltz_session = BoltzSession.from_builder(builder)
invoice_response = boltz_session.invoice(amount=1000, description="ciao", claim_address=claim_address, webhook=None)
bolt11_invoice_obj = invoice_response.bolt11_invoice()
bolt11_invoice = str(bolt11_invoice_obj)
print(bolt11_invoice)
assert bolt11_invoice.startswith("lnbc1")
try:
refund_address = wollet.address(3).address()
lightning_payment = LightningPayment.from_bolt11_invoice(bolt11_invoice_obj)
prepare_pay_response = boltz_session.prepare_pay(lightning_payment, refund_address, None) except LwkError.MagicRoutingHint as e:
print(f"Magic routing hint detected!")
print(f"You can pay directly {e.uri}")
except Exception as e:
print(f"Unexpected error: {e}")
assert False