"""Caller-side example; requires actual provider identity and descriptor from deployment."""

import argparse
from pathlib import Path

from easyremote import Client, FreshRoot, ResolvedTargetSubject, remote


def main() -> None:
    parser = argparse.ArgumentParser()
    parser.add_argument("--owner-ura", required=True)
    parser.add_argument("--descriptor-ref", required=True)
    parser.add_argument("--input", type=Path, required=True)
    parser.add_argument("--output", type=Path, required=True)
    args = parser.parse_args()
    if args.output.exists():
        parser.error("Output already exists; choose a new file")
    with args.input.open("rb") as source:
        payload = source.read(32769)
    if len(payload) > 32768:
        parser.error("CSV exceeds 32 KiB")
    with Client(namespace="office_report", invocation_policy=FreshRoot(ResolvedTargetSubject())) as client:

        @remote(client=client, owner_ura=args.owner_ura, descriptor_ref=args.descriptor_ref, timeout=30)
        def build_sales_report(csv_text: str) -> str: ...

        result = build_sales_report(payload.decode("utf-8"))
    if not isinstance(result, str) or len(result.encode("utf-8")) > 65536:
        raise ValueError("Provider returned an unexpected report")
    with args.output.open("x", encoding="utf-8") as output:
        output.write(result)
    print(f"Saved report to {args.output}")


if __name__ == "__main__":
    main()
