# SPDX-License-Identifier: Apache-2.0
# Copyright 2026 Anil Jangra
"""
Run:  RISKROUTER_API_KEY=rr_sandbox_... python3 demo.py [output-dir]
      (take a key at https://riskrouter.eu/integrate#get-a-key)
"""
import json
import os
import sys

b = json.dumps  # print booleans as the API writes them: true / false

from riskrouter import RiskRouter
from signer import Signer

out = sys.argv[1] if len(sys.argv) > 1 else "."
rr = RiskRouter()

priced = rr.price("mobility", {"commuter_roadside": True})
print("PRICED     EUR %s/month, recorded: %s" % (priced["quote"]["totals"]["total_monthly_premium"], b(priced["persistence"]["persisted"])))

first = rr.record_quote("mobility", {"commuter_roadside": True, "battery_hardware_theft": True})
again = rr.record_quote("mobility", {"commuter_roadside": True, "battery_hardware_theft": True}, first["idempotency_key"])
print("RECORDED   entry %s, recorded: %s" % (first["persistence"]["seal"]["chain_index"], b(first["recorded"])))
print("RETRIED    same entry %s, replayed: %s" % (again["persistence"]["seal"]["chain_index"], b(again["persistence"]["replayed"])))

# Your own signing key: generated once, kept private, its public half registered and (ideally) published by you.
signer = Signer.load_or_create(os.path.join(out, "signing-key.json"))
registered = rr.register_signing_key(signer.public_jwk)
print("SIGNER     key %s %s" % (signer.key_id, "registered" if registered["registered"] else "already registered"))

note = b"Demands and needs, 23 Sept 2026: commutes daily by e-bike, wants theft and roadside cover. Customer: Jan Peeters."
evidence = rr.record_evidence(note, "idd.demands-needs", signer=signer)
entry = evidence["entry"]
print("EVIDENCE   leaf %s (v%s, carries your signature), only the digest left this machine" % (entry["leaf_index"], entry["leaf_version"]))

proof = rr.evidence_proof(entry["leaf_index"])
export = rr.export()
for name, value in (("export.json", export), ("evidence-proof.json", proof),
                    ("evidence-record.json", {"record": note.decode(), "salt_hex": evidence["salt_hex"], "entry": entry})):
    with open(os.path.join(out, name), "w") as fh:
        json.dump(value, fh, indent=2)
print("SAVED      export.json, evidence-proof.json, evidence-record.json in %s" % out)
