use crate::exposing::Exposing;
use crate::ident::ModuleName;
use crate::node::Spanned;
/// An import declaration.
///
/// Examples:
/// - `import Html`
/// - `import Html exposing (div, text)`
/// - `import Json.Decode as Decode exposing (Decoder)`
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Import {
/// The module being imported: `Html.Attributes`
pub module_name: Spanned<ModuleName>,
/// Optional alias: `as HA`
pub alias: Option<Spanned<ModuleName>>,
/// Optional exposing list: `exposing (style, class)`
pub exposing: Option<Spanned<Exposing>>,
}