use std::collections::btree_set;
use std::iter;
use amplify::confinement::{NonEmptyOrdSet, U16};
use rgb::SecretSeal;
use strict_encoding::DefaultBasedStrictDumb;
use crate::LIB_NAME_RGB_OPS;
#[derive(Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Debug, Display, Default)]
#[derive(StrictType, StrictEncode, StrictDecode)]
#[strict_type(lib = LIB_NAME_RGB_OPS, tags = repr, into_u8, try_from_u8)]
#[cfg_attr(
feature = "serde",
derive(Serialize, Deserialize),
serde(crate = "serde_crate", rename_all = "camelCase")
)]
#[non_exhaustive]
#[repr(u8)]
pub enum ContainerVer {
#[default]
#[display("v0", alt = "0")]
V0 = 0,
}
impl DefaultBasedStrictDumb for ContainerVer {}
#[derive(Wrapper, WrapperMut, Clone, PartialEq, Eq, Hash, Debug, From)]
#[wrapper(Deref)]
#[wrapper_mut(DerefMut)]
#[derive(StrictType, StrictDumb, StrictEncode, StrictDecode)]
#[strict_type(lib = LIB_NAME_RGB_OPS, dumb = Self(NonEmptyOrdSet::with(SecretSeal::strict_dumb())))]
#[cfg_attr(
feature = "serde",
derive(Serialize, Deserialize),
serde(crate = "serde_crate", rename_all = "camelCase")
)]
pub struct SecretSeals(NonEmptyOrdSet<SecretSeal, U16>);
impl<'a> IntoIterator for &'a SecretSeals {
type Item = SecretSeal;
type IntoIter = iter::Copied<btree_set::Iter<'a, SecretSeal>>;
fn into_iter(self) -> Self::IntoIter { self.0.iter().copied() }
}