"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""

from builtins import (
    bool,
    int,
)
from collections.abc import (
    Iterable,
)
from fr24.proto._common_pb2 import (
    AircraftInfo,
    DelayStatus,
    ExtendedFlightInfo,
    FlightPlan,
    FlightProgress,
    FlightStage,
    PositionBuffer,
    RestrictionVisibility,
    ScheduleInfo,
    TrailPoint,
)
from google.protobuf.descriptor import (
    Descriptor,
    FileDescriptor,
)
from google.protobuf.internal.containers import (
    RepeatedCompositeFieldContainer,
)
from google.protobuf.message import (
    Message,
)
from typing import (
    Literal,
    final,
)

DESCRIPTOR: FileDescriptor

@final
class FlightProgress(Message):
    DESCRIPTOR: Descriptor

    TRAVERSED_DISTANCE_FIELD_NUMBER: int
    REMAINING_DISTANCE_FIELD_NUMBER: int
    ELAPSED_TIME_FIELD_NUMBER: int
    REMAINING_TIME_FIELD_NUMBER: int
    ETA_FIELD_NUMBER: int
    GREAT_CIRCLE_DISTANCE_FIELD_NUMBER: int
    MEAN_FLIGHT_TIME_FIELD_NUMBER: int
    FLIGHT_STAGE_FIELD_NUMBER: int
    DELAY_STATUS_FIELD_NUMBER: int
    PROGRESS_PCT_FIELD_NUMBER: int
    traversed_distance: int
    """Distance traversed, meters"""
    remaining_distance: int
    """Distance remaining, meters"""
    elapsed_time: int
    """Elapsed time since departure, seconds"""
    remaining_time: int
    """Remaining time until arrival, seconds"""
    eta: int
    """Estimated time of arrival, Unix timestamp in seconds"""
    great_circle_distance: int
    """Great circle distance, meters"""
    mean_flight_time: int
    """Mean flight time, seconds"""
    flight_stage: FlightStage.ValueType
    delay_status: DelayStatus.ValueType
    progress_pct: int
    """Progress percentage of the flight (0-100)"""
    def __init__(
        self,
        *,
        traversed_distance: int = ...,
        remaining_distance: int = ...,
        elapsed_time: int = ...,
        remaining_time: int = ...,
        eta: int = ...,
        great_circle_distance: int = ...,
        mean_flight_time: int = ...,
        flight_stage: FlightStage.ValueType = ...,
        delay_status: DelayStatus.ValueType = ...,
        progress_pct: int = ...,
    ) -> None: ...
    def ClearField(self, field_name: Literal["delay_status", b"delay_status", "elapsed_time", b"elapsed_time", "eta", b"eta", "flight_stage", b"flight_stage", "great_circle_distance", b"great_circle_distance", "mean_flight_time", b"mean_flight_time", "progress_pct", b"progress_pct", "remaining_distance", b"remaining_distance", "remaining_time", b"remaining_time", "traversed_distance", b"traversed_distance"]) -> None: ...

@final
class FlightDetailsRequest(Message):
    DESCRIPTOR: Descriptor

    FLIGHT_ID_FIELD_NUMBER: int
    RESTRICTION_MODE_FIELD_NUMBER: int
    VERBOSE_FIELD_NUMBER: int
    flight_id: int
    """FR24 Flight ID (e.g. `962788562` = `0x3962fcd2`)"""
    restriction_mode: RestrictionVisibility.ValueType
    verbose: bool
    """Whether to include `flight_plan` and `flight_trail_list` in the response"""
    def __init__(
        self,
        *,
        flight_id: int = ...,
        restriction_mode: RestrictionVisibility.ValueType = ...,
        verbose: bool = ...,
    ) -> None: ...
    def ClearField(self, field_name: Literal["flight_id", b"flight_id", "restriction_mode", b"restriction_mode", "verbose", b"verbose"]) -> None: ...

@final
class FlightDetailsResponse(Message):
    DESCRIPTOR: Descriptor

    AIRCRAFT_INFO_FIELD_NUMBER: int
    SCHEDULE_INFO_FIELD_NUMBER: int
    FLIGHT_PROGRESS_FIELD_NUMBER: int
    FLIGHT_INFO_FIELD_NUMBER: int
    FLIGHT_PLAN_FIELD_NUMBER: int
    FLIGHT_TRAIL_LIST_FIELD_NUMBER: int
    POSITION_BUFFER_FIELD_NUMBER: int
    @property
    def aircraft_info(self) -> AircraftInfo: ...
    @property
    def schedule_info(self) -> ScheduleInfo: ...
    @property
    def flight_progress(self) -> FlightProgress: ...
    @property
    def flight_info(self) -> ExtendedFlightInfo: ...
    @property
    def flight_plan(self) -> FlightPlan: ...
    @property
    def flight_trail_list(self) -> RepeatedCompositeFieldContainer[TrailPoint]: ...
    @property
    def position_buffer(self) -> PositionBuffer: ...
    def __init__(
        self,
        *,
        aircraft_info: AircraftInfo | None = ...,
        schedule_info: ScheduleInfo | None = ...,
        flight_progress: FlightProgress | None = ...,
        flight_info: ExtendedFlightInfo | None = ...,
        flight_plan: FlightPlan | None = ...,
        flight_trail_list: Iterable[TrailPoint] | None = ...,
        position_buffer: PositionBuffer | None = ...,
    ) -> None: ...
    def HasField(self, field_name: Literal["aircraft_info", b"aircraft_info", "flight_info", b"flight_info", "flight_plan", b"flight_plan", "flight_progress", b"flight_progress", "position_buffer", b"position_buffer", "schedule_info", b"schedule_info"]) -> bool: ...
    def ClearField(self, field_name: Literal["aircraft_info", b"aircraft_info", "flight_info", b"flight_info", "flight_plan", b"flight_plan", "flight_progress", b"flight_progress", "flight_trail_list", b"flight_trail_list", "position_buffer", b"position_buffer", "schedule_info", b"schedule_info"]) -> None: ...
