use fvm_ipld_encoding::tuple::{Deserialize_tuple, Serialize_tuple};
use fvm_shared::{address::Address, ActorID, METHOD_CONSTRUCTOR};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::fmt::Display;
define_singleton!(ADM {
id: 17,
code_id: 17
});
pub const ADM_ACTOR_NAME: &str = "adm";
#[repr(u64)]
pub enum Method {
Constructor = METHOD_CONSTRUCTOR,
CreateExternal = 1214262202,
UpdateDeployers = 1768606754,
ListMetadata = 2283215593,
}
#[derive(Debug, Serialize, Deserialize)]
pub enum Kind {
Bucket,
Timehub,
}
impl Display for Kind {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let str = match self {
Self::Bucket => "bucket",
Self::Timehub => "timehub",
};
write!(f, "{}", str)
}
}
#[derive(Debug, Serialize_tuple, Deserialize_tuple)]
pub struct Metadata {
pub kind: Kind,
pub address: Address,
pub metadata: HashMap<String, String>,
}
#[derive(Debug, Serialize_tuple, Deserialize_tuple)]
pub struct CreateExternalParams {
pub owner: Address,
pub kind: Kind,
pub metadata: HashMap<String, String>,
}
#[derive(Debug, Clone, Serialize_tuple, Deserialize_tuple)]
pub struct CreateExternalReturn {
pub actor_id: ActorID,
pub robust_address: Option<Address>,
}
#[derive(Debug, Serialize_tuple, Deserialize_tuple)]
pub struct ListMetadataParams {
pub owner: Address,
}