//! JAM types used within the PVM instances (service code and authorizer code).

#![cfg_attr(not(feature = "std"), no_std)]

extern crate alloc;

#[cfg(not(feature = "std"))]
pub use core::{
	clone::Clone,
	cmp::{Eq, PartialEq},
	fmt,
	fmt::Debug,
	option::Option,
	prelude::rust_2021::derive,
	result::Result,
};

pub use scale::{Decode, Encode, MaxEncodedLen};

#[cfg(not(feature = "std"))]
pub use alloc::vec::Vec;
pub use bounded_collections::BoundedVec;
#[cfg(feature = "std")]
pub use std::vec::Vec;

pub mod hex;
pub mod newtype;

pub mod fixed_vec;
pub use fixed_vec::FixedVec;
pub mod vec_set;
pub use vec_set::{is_disjoint, is_strict_ordered, SetLike, VecSet};
pub mod vec_map;
pub use vec_map::VecMap;
pub mod utils;
pub use utils::TakeWhen;
pub mod simple;
pub use simple::*;
pub mod simple_result_code;
pub use simple_result_code::{SimpleResult, SimpleResultCode, LOWEST_ERROR};
pub mod types;
pub use types::*;
pub mod program_blob;
pub use program_blob::*;
mod inner_result_code;
pub use self::inner_result_code::*;
