"""Proto ↔ domain conversion functions for gRPC service.

This package provides converters organized by domain:
- _id_parsing: ID parsing helpers
- _timestamps: Timestamp conversion utilities
- _domain: Core domain entity converters (meeting, segment, summary, annotation)
- _external: External service converters (webhooks, sync, entity, metrics)
- _oidc: OIDC provider converters
"""

from __future__ import annotations

# Core domain converters
from ._domain import (
    annotation_to_proto,
    annotation_type_to_proto,
    create_ack_update,
    create_congestion_info,
    create_segment_from_asr,
    create_vad_update,
    export_format_to_proto,
    meeting_to_proto,
    proto_to_annotation_type,
    proto_to_export_format,
    segment_to_final_segment_proto,
    segment_to_proto_update,
    summary_to_proto,
    word_to_proto,
)

# External service converters
from ._external import (
    entity_to_proto,
    metrics_to_proto,
    sync_run_to_proto,
    webhook_config_to_proto,
    webhook_delivery_to_proto,
)

# ID parsing helpers
from ._id_parsing import (
    parse_annotation_id,
    parse_meeting_id,
    parse_meeting_id_or_abort,
    parse_meeting_id_or_none,
)

# OIDC converters
from ._oidc import (
    claim_mapping_to_proto,
    discovery_to_proto,
    oidc_provider_to_proto,
    proto_to_claim_mapping,
)

# Timestamp utilities
from ._timestamps import (
    datetime_to_epoch_seconds,
    datetime_to_iso_string,
    datetime_to_proto_timestamp,
    epoch_seconds_to_datetime,
    iso_string_to_datetime,
    proto_timestamp_to_datetime,
)

__all__ = [
    "annotation_to_proto",
    "annotation_type_to_proto",
    "claim_mapping_to_proto",
    "create_ack_update",
    "create_congestion_info",
    "create_segment_from_asr",
    "create_vad_update",
    "datetime_to_epoch_seconds",
    "datetime_to_iso_string",
    "datetime_to_proto_timestamp",
    "discovery_to_proto",
    "entity_to_proto",
    "epoch_seconds_to_datetime",
    "export_format_to_proto",
    "iso_string_to_datetime",
    "meeting_to_proto",
    "metrics_to_proto",
    "oidc_provider_to_proto",
    "parse_annotation_id",
    "parse_meeting_id",
    "parse_meeting_id_or_abort",
    "parse_meeting_id_or_none",
    "proto_timestamp_to_datetime",
    "proto_to_annotation_type",
    "proto_to_claim_mapping",
    "proto_to_export_format",
    "segment_to_final_segment_proto",
    "segment_to_proto_update",
    "summary_to_proto",
    "sync_run_to_proto",
    "webhook_config_to_proto",
    "webhook_delivery_to_proto",
    "word_to_proto",
]
