"""Extrae direcciones MAC de un texto, con offsets."""

import re

_MAC_REGEX = re.compile(
    r"(?<![A-Fa-f0-9:-])"
    r"(?:[A-Fa-f0-9]{2}[:-]){5}[A-Fa-f0-9]{2}"
    r"(?![A-Fa-f0-9:-])"
)


def extract_mac_addresses(text: str) -> list[dict]:
    """Extrae MAC addresses en formato `xx:xx:xx:xx:xx:xx` o con guiones.

    Ambos separadores deben ser uniformes (no mezcla `:` y `-` en una
    misma direccion — se aceptan independientemente). Insensible a
    mayusculas.
    """
    results = []
    for m in _MAC_REGEX.finditer(text):
        candidate = m.group(0)
        # Asegurar separador uniforme.
        if ":" in candidate and "-" in candidate:
            continue
        results.append({
            "value": candidate,
            "start": m.start(),
            "end": m.end(),
            "type": "mac_address",
        })
    return results
