use ic_cdk::export::candid::{CandidType, Deserialize};
use ic_cdk::export::Principal;
use serde::Serialize;
#[derive(Clone, Debug, CandidType, Deserialize, Serialize)]
pub struct EgoError {
pub code: u16,
pub msg: String,
}
#[derive(CandidType, Deserialize, Serialize)]
pub enum QueryParam {
ByCategory { category: Category },
}
#[derive(CandidType, Deserialize, Serialize)]
pub struct AppMainListRequest {
pub query_param: QueryParam,
}
#[derive(CandidType, Deserialize, Serialize)]
pub struct AppMainListResponse {
pub apps: Vec<App>,
}
#[derive(CandidType, Deserialize, Serialize)]
pub struct WalletAppListResponse {
pub apps: Vec<UserApp>,
}
#[derive(CandidType, Deserialize, Serialize)]
pub struct WalletAppInstallRequest {
pub app_id: AppId,
}
#[derive(CandidType, Deserialize, Serialize)]
pub struct WalletAppRemoveRequest {
pub app_id: AppId,
}
#[derive(CandidType, Deserialize, Serialize)]
pub struct WalletOrderNewRequest {
pub amount: f32,
}
#[derive(CandidType, Deserialize, Serialize)]
pub struct WalletOrderNewResponse {
pub memo: Memo,
}
#[derive(CandidType, Serialize, Deserialize, Clone, Copy, Debug)]
pub struct Memo(pub u64);
pub type AppId = String;
pub type WasmId = String;
pub type FileId = String;
#[derive(CandidType, Serialize, Deserialize, Clone, Copy, Debug, Default, Ord, PartialOrd, Eq, PartialEq)]
pub struct Version {
pub major: u32,
pub minor: u32,
pub patch: u32,
}
#[derive(Clone, Debug, CandidType, Deserialize, Serialize, PartialEq)]
pub enum Category {
System,
Vault,
}
#[derive(CandidType, Serialize, Deserialize, Clone, Debug)]
pub struct App {
pub app_id: AppId,
pub name: String,
pub category: Category,
pub logo: String,
pub description: String,
pub current_version: Version,
pub price: f32,
}
#[derive(CandidType, Serialize, Deserialize, Clone, Debug, Eq, PartialEq)]
pub enum CanisterType {
BACKEND,
ASSET,
}
#[derive(CandidType, Serialize, Deserialize, Clone, Debug)]
pub struct WalletApp {
pub app_id: AppId,
pub current_version: Version,
pub frontend: Option<Canister>,
pub backend: Option<Canister>,
}
#[derive(CandidType, Serialize, Deserialize, Clone, Debug)]
pub struct Canister {
pub canister_id: Principal,
pub canister_type: CanisterType,
}
#[derive(CandidType, Serialize, Deserialize, Clone, Debug)]
pub struct UserApp {
pub app_id: AppId,
pub name: String,
pub category: Category,
pub logo: String,
pub description: String,
pub current_version: Version,
pub frontend: Option<Canister>,
pub backend: Option<Canister>,
pub latest_version: Version,
}