"""National Insurance motor policy parser."""

from app.parsers.helpers import make_parser

NATIONAL_PATTERNS: list[tuple[str, str, float]] = [
    (
        "policy_number",
        r"Policy\s+No:([\d]{10,25})",
        0.94,
    ),
    (
        "policy_number",
        r"Policy\s+Number\s+([\d]{10,25})",
        0.92,
    ),
    (
        "customer_name",
        r"Name:\s*Mr\s+([A-Za-z]+)",
        0.92,
    ),
    (
        "customer_name",
        r"Insured\s+Details\s+Name:Mr\s+([A-Za-z]+)",
        0.9,
    ),
    (
        "mobile_number",
        r"(?:Telephone|Mobile):(\d{10})",
        0.92,
    ),
    (
        "email_address",
        r"Email:\s*([a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,})",
        0.9,
    ),
    (
        "policy_end_date",
        r"(?:Midnightof|Midnight\s+of)\s*(\d{1,2}/\d{1,2}/\d{4})",
        0.93,
    ),
    (
        "policy_end_date",
        r"to\s+Midnightof(\d{1,2}/\d{1,2}/\d{4})",
        0.91,
    ),
    (
        "policy_start_date",
        r"from\s*(\d{1,2}:\d{2})?Hrsof(\d{1,2}/\d{1,2}/\d{4})",
        0.85,
    ),
    (
        "vehicle_registration_number",
        r"Reg\.No\.\s*([A-Z0-9\-]+)",
        0.93,
    ),
    (
        "engine_number",
        r"Engine\s+No\.\s*([A-Z0-9]{4,20})",
        0.9,
    ),
    (
        "chassis_number",
        r"Chassis\s+No\.\s*([A-Z0-9]{4,20})",
        0.91,
    ),
    (
        "vehicle_make",
        r"Make&Model[^\n]*?([A-Z][A-Za-z0-9\s]+?)(?:\s+Reg\.|\s+HR-|\s+DL-)",
        0.82,
    ),
    (
        "premium_amount",
        r"asumof\s+(\d{3,6})\(",
        0.88,
    ),
]

parse_national = make_parser("national", "National Insurance", NATIONAL_PATTERNS)
