Module of Inventory type, a type-erased wrapper around Warehouse and
Factory.
Additionally, Inventory is responsible for providing a safe interface to
change the logical owner of NFTs redeemed from it.
Structs
        inventory::Inventory<C> has store, key
    
    inventory::Inventory<C> has store, key
Fields:
| Name | Type | Description | 
|---|---|---|
| id | object::UID | 
 | 
| allowlist | transfer_allowlist::Allowlist | Internal  | 
A type-erased wrapper around Warehouse and Factory
Methods
        public fun from_warehouse<C>(
    witness: witness::Witness<C>,
    warehouse: warehouse::Warehouse<C>,
    ctx: &mut tx_context::TxContext,
): inventory::Inventory<C>
    
    public fun from_warehouse<C>(
    witness: witness::Witness<C>,
    warehouse: warehouse::Warehouse<C>,
    ctx: &mut tx_context::TxContext,
): inventory::Inventory<C>Create a new Inventory from a Warehouse
        public fun from_factory<C>(
    witness: witness::Witness<C>,
    factory: factory::Factory<C>,
    ctx: &mut tx_context::TxContext,
): inventory::Inventory<C>
    
    public fun from_factory<C>(
    witness: witness::Witness<C>,
    factory: factory::Factory<C>,
    ctx: &mut tx_context::TxContext,
): inventory::Inventory<C>Create a new Inventory from a Factory
        public entry fun deposit_nft<C>(
    inventory: &mut inventory::Inventory<C>,
    nft: nft::Nft<C>,
)
    
    public entry fun deposit_nft<C>(
    inventory: &mut inventory::Inventory<C>,
    nft: nft::Nft<C>,
)Deposits NFT to Inventory
Endpoint is unprotected and relies on safely obtaining a mutable
reference to Inventory.
Panics
Panics if Inventory is not a Warehouse.
        public fun redeem_nft<C>(
    inventory: &mut inventory::Inventory<C>,
    owner: address,
    ctx: &mut tx_context::TxContext,
): nft::Nft<C>
    
    public fun redeem_nft<C>(
    inventory: &mut inventory::Inventory<C>,
    owner: address,
    ctx: &mut tx_context::TxContext,
): nft::Nft<C>Redeems NFT from Inventory
Endpoint is unprotected and relies on safely obtaining a mutable
reference to Inventory.
Panics
Panics if no supply is available.
        public entry fun redeem_nft_and_transfer<C>(
    inventory: &mut inventory::Inventory<C>,
    owner: address,
    ctx: &mut tx_context::TxContext,
)
    
    public entry fun redeem_nft_and_transfer<C>(
    inventory: &mut inventory::Inventory<C>,
    owner: address,
    ctx: &mut tx_context::TxContext,
)Redeems NFT from Inventory and transfers to owner
See redeem_nft for more details
Panics
Panics if no supply is available.
        public fun redeem_pseudorandom_nft<C>(
    inventory: &mut inventory::Inventory<C>,
    owner: address,
    ctx: &mut tx_context::TxContext,
): nft::Nft<C>
    
    public fun redeem_pseudorandom_nft<C>(
    inventory: &mut inventory::Inventory<C>,
    owner: address,
    ctx: &mut tx_context::TxContext,
): nft::Nft<C>Pseudo-randomly redeems NFT from Inventory
Endpoint is susceptible to validator prediction of the resulting index,
use random_redeem_nft instead.
Endpoint is unprotected and relies on safely obtaining a mutable
reference to Inventory.
If the underlying Inventory is a Factory then logic will fallback to
using sequential withdraw.
Panics
Panics if there is no supply left.
        public entry fun redeem_pseudorandom_nft_and_transfer<C>(
    inventory: &mut inventory::Inventory<C>,
    owner: address,
    ctx: &mut tx_context::TxContext,
)
    
    public entry fun redeem_pseudorandom_nft_and_transfer<C>(
    inventory: &mut inventory::Inventory<C>,
    owner: address,
    ctx: &mut tx_context::TxContext,
)Pseudo-randomly redeems NFT from Inventory and transfers to owner
See redeem_pseudorandom_nft for more details.
Panics
Panics if there is no supply left.
        public fun redeem_random_nft<C>(
    inventory: &mut inventory::Inventory<C>,
    commitment: warehouse::RedeemCommitment,
    user_commitment: vector<u8>,
    owner: address,
    ctx: &mut tx_context::TxContext,
): nft::Nft<C>
    
    public fun redeem_random_nft<C>(
    inventory: &mut inventory::Inventory<C>,
    commitment: warehouse::RedeemCommitment,
    user_commitment: vector<u8>,
    owner: address,
    ctx: &mut tx_context::TxContext,
): nft::Nft<C>Randomly redeems NFT from Inventory
Requires a RedeemCommitment created by the user in a separate
transaction to ensure that validators may not bias results favorably.
You can obtain a RedeemCommitment by calling
warehouse::init_redeem_commitment.
Endpoint is unprotected and relies on safely obtaining a mutable
reference to Inventory.
If the underlying Inventory is a Factory then logic will fallback to
using sequential withdraw.
Panics
Panics if there is no supply left or user_commitment does not match
the hashed commitment in RedeemCommitment.
        public entry fun redeem_random_nft_and_transfer<C>(
    inventory: &mut inventory::Inventory<C>,
    commitment: warehouse::RedeemCommitment,
    user_commitment: vector<u8>,
    owner: address,
    ctx: &mut tx_context::TxContext,
)
    
    public entry fun redeem_random_nft_and_transfer<C>(
    inventory: &mut inventory::Inventory<C>,
    commitment: warehouse::RedeemCommitment,
    user_commitment: vector<u8>,
    owner: address,
    ctx: &mut tx_context::TxContext,
)Randomly redeems NFT from Inventory and transfers to owner
See redeem_random_nft for more details.
Panics
Panics if there is no supply left or user_commitment does not match
the hashed commitment in RedeemCommitment.
        public fun is_empty<C>(
    inventory: &inventory::Inventory<C>,
): bool
    
    public fun is_empty<C>(
    inventory: &inventory::Inventory<C>,
): boolReturns whether Inventory has any remaining supply
        public fun supply<C>(
    inventory: &inventory::Inventory<C>,
): option::Option<u64>
    
    public fun supply<C>(
    inventory: &inventory::Inventory<C>,
): option::Option<u64>Returns the available supply in Inventory
If the Inventory is a Factory with unregulated supply then none
will be returned.
Panics
Panics if supply was exceeded.
        public fun is_warehouse<C>(
    inventory: &inventory::Inventory<C>,
): bool
    
    public fun is_warehouse<C>(
    inventory: &inventory::Inventory<C>,
): boolReturns whether Inventory is a Warehouse
        public fun is_factory<C>(
    inventory: &inventory::Inventory<C>,
): bool
    
    public fun is_factory<C>(
    inventory: &inventory::Inventory<C>,
): boolReturns whether Inventory is a Factory
        public fun borrow_warehouse<C>(
    inventory: &inventory::Inventory<C>,
): &warehouse::Warehouse<C>
    
    public fun borrow_warehouse<C>(
    inventory: &inventory::Inventory<C>,
): &warehouse::Warehouse<C>Borrows Inventory as Warehouse
Panics
Panics if Inventory is a Factory
        public fun borrow_factory<C>(
    inventory: &inventory::Inventory<C>,
): &factory::Factory<C>
    
    public fun borrow_factory<C>(
    inventory: &inventory::Inventory<C>,
): &factory::Factory<C>Borrows Inventory as Factory
Panics
Panics if Inventory is a Warehouse
        public fun borrow_factory_mut<C>(
    inventory: &mut inventory::Inventory<C>,
): &mut factory::Factory<C>
    
    public fun borrow_factory_mut<C>(
    inventory: &mut inventory::Inventory<C>,
): &mut factory::Factory<C>Mutably borrows Inventory as Factory
Panics
Panics if Inventory is a Warehouse
        public fun assert_warehouse<C>(
    inventory: &inventory::Inventory<C>,
)
    
    public fun assert_warehouse<C>(
    inventory: &inventory::Inventory<C>,
)Asserts that Inventory is a Warehouse
Panics
Panics if Inventory is not a Warehouse
        public fun assert_factory<C>(
    inventory: &inventory::Inventory<C>,
)
    
    public fun assert_factory<C>(
    inventory: &inventory::Inventory<C>,
)Asserts that Inventory is a Factory
Panics
Panics if Inventory is not a Factory