use candid::Principal;
use canic_core::ids::{CanisterRole, CanonicalNetworkId};
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
pub struct FrontendUploadedInput {
pub directory: PathBuf,
pub manifest_sha256: String,
pub environment: String,
pub network: CanonicalNetworkId,
pub canister_id: Principal,
pub prefix: String,
}
pub struct FrontendAssetCapacityInput {
pub environment: String,
pub canister_id: Principal,
pub payload_directory: PathBuf,
pub minimum_native_cycles: u128,
pub maximum_payload_bytes: u64,
pub maximum_files: u32,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct FrontendRoleInput {
pub role: CanisterRole,
pub canister_id: Principal,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct FrontendIdentityInput {
pub canister_id: Principal,
pub provider_origin: String,
pub derivation_origin: String,
pub alternative_origins: Vec<String>,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct FrontendAssetInput {
pub canister_id: Principal,
pub origin: String,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct FrontendEnvironmentInput {
pub schema_version: u16,
pub environment: String,
pub canonical_network_id: CanonicalNetworkId,
pub api_origin: String,
pub identity: FrontendIdentityInput,
pub asset: Option<FrontendAssetInput>,
pub roles: Vec<FrontendRoleInput>,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct FrontendFileRecord {
pub path: String,
pub sha256: String,
pub bytes: u64,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct FrontendRoleRecord {
pub role: CanisterRole,
pub canister_id: Principal,
pub release_identity: String,
pub module_sha256: String,
pub candid: FrontendFileRecord,
pub javascript: FrontendFileRecord,
pub typescript: FrontendFileRecord,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct FrontendManifestRecord {
pub schema_version: u16,
pub manifest_sha256: String,
pub generator: String,
pub app: String,
pub fleet: String,
pub fleet_id: String,
pub source_plan_sha256: String,
pub environment: String,
pub canonical_network_id: CanonicalNetworkId,
pub api_origin: String,
#[serde(deserialize_with = "Option::deserialize")]
pub local_root_key_der_hex: Option<String>,
pub identity: FrontendIdentityInput,
pub alternative_origins: FrontendFileRecord,
#[serde(deserialize_with = "Option::deserialize")]
pub asset: Option<FrontendAssetInput>,
pub roles: Vec<FrontendRoleRecord>,
}