//! The ownship-status capability.
//!
//! Stub: the trait and its payload exist so a telemetry source can be added
//! later as a sibling capability, but no adapter implements it yet.

use async_trait::async_trait;

use crate::provider::{ContextProvider, ProviderError};

/// Live ownship state (position, altitude, track, …).
///
/// Placeholder pending a real telemetry source. `#[non_exhaustive]`, so
/// fields can be added later without breaking implementors.
#[derive(Debug, Clone, Default, PartialEq)]
#[non_exhaustive]
pub struct OwnshipStatus {}

/// A provider of ownship status — a sibling capability to
/// [`crate::WeatherBriefingProvider`] under the same [`ContextProvider`]
/// identity.
#[async_trait]
pub trait OwnshipStatusProvider: ContextProvider {
    /// Fetch the latest ownship status.
    async fn ownship_status(&self) -> Result<OwnshipStatus, ProviderError>;
}
