use std::marker::PhantomData;
use cosmwasm_std::Empty;
use crate::{
state::Cw721Config,
traits::{Cw721CustomMsg, Cw721State},
DefaultOptionalCollectionExtension, DefaultOptionalCollectionExtensionMsg,
DefaultOptionalNftExtension, DefaultOptionalNftExtensionMsg, EmptyOptionalCollectionExtension,
EmptyOptionalCollectionExtensionMsg, EmptyOptionalNftExtension, EmptyOptionalNftExtensionMsg,
};
pub struct Cw721OnchainExtensions<'a> {
pub config: Cw721Config<'a, DefaultOptionalNftExtension>,
pub(crate) _collection_extension: PhantomData<DefaultOptionalCollectionExtension>,
pub(crate) _nft_extension_msg: PhantomData<DefaultOptionalNftExtensionMsg>,
pub(crate) _collection_extension_msg: PhantomData<DefaultOptionalCollectionExtensionMsg>,
pub(crate) _extension_msg: PhantomData<Empty>,
pub(crate) _extension_query_msg: PhantomData<Empty>,
pub(crate) _custom_response_msg: PhantomData<Empty>,
}
impl Default for Cw721OnchainExtensions<'static> {
fn default() -> Self {
Self {
config: Cw721Config::<DefaultOptionalNftExtension>::default(),
_collection_extension: PhantomData,
_nft_extension_msg: PhantomData,
_collection_extension_msg: PhantomData,
_extension_msg: PhantomData,
_extension_query_msg: PhantomData,
_custom_response_msg: PhantomData,
}
}
}
pub struct Cw721BaseExtensions<'a> {
pub config: Cw721Config<'a, EmptyOptionalNftExtension>,
pub(crate) _collection_extension: PhantomData<DefaultOptionalCollectionExtension>,
pub(crate) _nft_extension_msg: PhantomData<EmptyOptionalNftExtensionMsg>,
pub(crate) _collection_extension_msg: PhantomData<DefaultOptionalCollectionExtensionMsg>,
pub(crate) _extension_msg: PhantomData<Empty>,
pub(crate) _extension_query_msg: PhantomData<Empty>,
pub(crate) _custom_response_msg: PhantomData<Empty>,
}
impl Default for Cw721BaseExtensions<'static> {
fn default() -> Self {
Self {
config: Cw721Config::<EmptyOptionalNftExtension>::default(),
_collection_extension: PhantomData,
_nft_extension_msg: PhantomData,
_collection_extension_msg: PhantomData,
_extension_msg: PhantomData,
_extension_query_msg: PhantomData,
_custom_response_msg: PhantomData,
}
}
}
pub struct Cw721EmptyExtensions<'a> {
pub config: Cw721Config<'a, EmptyOptionalNftExtension>,
pub(crate) _collection_extension: PhantomData<EmptyOptionalCollectionExtension>,
pub(crate) _nft_extension_msg: PhantomData<EmptyOptionalNftExtensionMsg>,
pub(crate) _collection_extension_msg: PhantomData<EmptyOptionalCollectionExtensionMsg>,
pub(crate) _extension_msg: PhantomData<Empty>,
pub(crate) _extension_query_msg: PhantomData<Empty>,
pub(crate) _custom_response_msg: PhantomData<Empty>,
}
impl Default for Cw721EmptyExtensions<'static> {
fn default() -> Self {
Self {
config: Cw721Config::<EmptyOptionalNftExtension>::default(),
_collection_extension: PhantomData,
_nft_extension_msg: PhantomData,
_collection_extension_msg: PhantomData,
_extension_msg: PhantomData,
_extension_query_msg: PhantomData,
_custom_response_msg: PhantomData,
}
}
}
pub struct Cw721Extensions<
'a,
TNftExtension,
TNftExtensionMsg,
TCollectionExtension,
TCollectionExtensionMsg,
TExtensionMsg,
TExtensionQueryMsg,
TCustomResponseMsg,
> where
TNftExtension: Cw721State,
TNftExtensionMsg: Cw721CustomMsg,
TCollectionExtension: Cw721State,
TCollectionExtensionMsg: Cw721CustomMsg,
{
pub config: Cw721Config<'a, TNftExtension>,
pub(crate) _collection_extension: PhantomData<TCollectionExtension>,
pub(crate) _nft_extension_msg: PhantomData<TNftExtensionMsg>,
pub(crate) _collection_extension_msg: PhantomData<TCollectionExtensionMsg>,
pub(crate) _extension_msg: PhantomData<TExtensionMsg>,
pub(crate) _extension_query_msg: PhantomData<TExtensionQueryMsg>,
pub(crate) _custom_response_msg: PhantomData<TCustomResponseMsg>,
}
impl<
TNftExtension,
TNftExtensionMsg,
TCollectionExtension,
TCollectionExtensionMsg,
TExtensionMsg,
TExtensionQueryMsg,
TCustomResponseMsg,
> Default
for Cw721Extensions<
'static,
TNftExtension,
TNftExtensionMsg,
TCollectionExtension,
TCollectionExtensionMsg,
TExtensionMsg,
TExtensionQueryMsg,
TCustomResponseMsg,
>
where
TNftExtension: Cw721State,
TNftExtensionMsg: Cw721CustomMsg,
TCollectionExtension: Cw721State,
TCollectionExtensionMsg: Cw721CustomMsg,
{
fn default() -> Self {
Self {
config: Cw721Config::default(),
_collection_extension: PhantomData,
_nft_extension_msg: PhantomData,
_collection_extension_msg: PhantomData,
_extension_msg: PhantomData,
_extension_query_msg: PhantomData,
_custom_response_msg: PhantomData,
}
}
}