use crate::{Platform, ResourceHeartbeat, StackState};
use alien_error::AlienError;
use bon::Builder;
use serde::{Deserialize, Serialize};
use super::{DeploymentStatus, EnvironmentInfo, ReleaseInfo};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
#[serde(rename_all = "camelCase")]
pub struct RuntimeMetadata {
#[serde(skip_serializing_if = "Option::is_none")]
pub last_synced_env_vars_hash: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub prepared_stack: Option<crate::Stack>,
#[serde(default, skip_serializing_if = "is_false")]
pub registry_access_granted: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize, Builder)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
#[serde(rename_all = "camelCase")]
pub struct DeploymentState {
pub status: DeploymentStatus,
pub platform: Platform,
#[serde(skip_serializing_if = "Option::is_none")]
pub current_release: Option<ReleaseInfo>,
#[serde(skip_serializing_if = "Option::is_none")]
pub target_release: Option<ReleaseInfo>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stack_state: Option<StackState>,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<AlienError>,
#[serde(skip_serializing_if = "Option::is_none")]
pub environment_info: Option<EnvironmentInfo>,
#[serde(skip_serializing_if = "Option::is_none")]
pub runtime_metadata: Option<RuntimeMetadata>,
#[serde(default, skip_serializing_if = "is_false")]
pub retry_requested: bool,
pub protocol_version: u32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
#[serde(rename_all = "camelCase")]
pub struct DeploymentStepResult {
pub state: DeploymentState,
#[serde(skip_serializing_if = "Option::is_none")]
pub suggested_delay_ms: Option<u64>,
#[serde(default, skip_serializing_if = "is_false")]
pub update_heartbeat: bool,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub heartbeats: Vec<ResourceHeartbeat>,
}
pub(crate) fn is_false(b: &bool) -> bool {
!*b
}
pub const MIN_SUPPORTED_DEPLOYMENT_PROTOCOL_VERSION: u32 = 1;
pub const CURRENT_DEPLOYMENT_PROTOCOL_VERSION: u32 = 1;
pub const DEPLOYMENT_PROTOCOL_VERSION: u32 = CURRENT_DEPLOYMENT_PROTOCOL_VERSION;