use crate::types::{plugin::Plugin, wallet::Controller};
use cosmwasm_schema::cw_serde;
use cosmwasm_std::{Addr, Binary, CanonicalAddr};
use cw_storage_plus::{Item, Map};
use super::{factory::ChainConnection, plugin_registry::Subscriber};
pub const ITEMS: Map<String, String> = Map::new("items");
#[cw_serde]
pub enum VectisActors {
Factory,
PluginRegistry,
}
impl std::fmt::Display for VectisActors {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "{self:?}")
}
}
pub type ControllerState<'a> = Item<'a, Controller>;
pub const CONTROLLER: ControllerState = Item::new("controller");
pub type Deployer<'a> = Item<'a, CanonicalAddr>;
pub const DEPLOYER: Deployer = Item::new("deployer");
pub type Authenticators<'a> = Map<'a, String, Addr>;
pub const AUTHENTICATORS: Authenticators = Map::new("authenticators");
pub type Plugins<'a> = Map<'a, u64, Plugin>;
pub const PLUGINS: Plugins = Map::new("registry_plugins");
pub type Subscribers<'a> = Map<'a, &'a str, Subscriber>;
pub const SUBSCRIBERS: Subscribers = Map::new("subscribers");
pub type SupportedChains<'a> = Map<'a, &'a str, ChainConnection>;
pub const SUPPORTEDCHAINS: SupportedChains = Map::new("supported_chains");
pub type ProxyData<'a> = Map<'a, &'a [u8], Binary>;
pub const PROXY_DATA: ProxyData = Map::new("proxy_data");
pub type SupportedProxies<'a> = Map<'a, u64, String>;
pub const SUPPORTEDPROXIES: SupportedProxies = Map::new("supported_proxies");