0x0::mint_cap

Module defining the multiple MintCap used across the OriginByte ecosystem.

Ownership of MintCap is necessary to mint NFTs and can also be used to delegate the permission to mint NFTs (but not modify collections) using RegulatedMintCap and UnregulatedMintCap.

Multiple RegulatedMintCap and UnregulatedMintCap can be created therefore the objects must be securely protected against malicious access.

An additional restriction placed upon RegulatedMintCap and UnregulatedMintCap is that they may not be used to further delegate more mint capabilities.

Structs

mint_cap::MintCap<C> has store, key

Fields:

Name Type Description
id object::UID

MintCap ID

collection_id object::ID

ID of the Collection that MintCap controls.

Intended for discovery.

MintCap<C> delegates the capability to it's owner to mint Nft<C>. There is only one MintCap per Collection<C>.

This pattern is useful as MintCap can be made shared allowing users to mint NFTs themselves, such as in a name service application.

mint_cap::UnregulatedMintCap<C> has store, key

Fields:

Name Type Description
id object::UID

RegulatedMintCap ID

collection_id object::ID

ID of the Collection that RegulatedMintCap controls

Intended for discovery.

UnregulatedMintCap delegates the capability to it's owner to mint Nft from collections with unregulated supply.

mint_cap::RegulatedMintCap<C> has store, key

Fields:

Name Type Description
id object::UID

RegulatedMintCap ID

collection_id object::ID

ID of the Collection that RegulatedMintCap controls

Intended for discovery.

supply supply::Supply

Supply that RegulatedMintCap is entitled to mint

RegulatedMintCap delegates the capability to it's owner to mint Nft from collections with regulated supply.

Methods

public(friend) fun new<C>(
    collection_id: object::ID,
    ctx: &mut tx_context::TxContext,
): mint_cap::MintCap<C>

Create a new MintCap

Only one MintCap must exist per collection

public fun collection_id<C>(
    mint: &mint_cap::MintCap<C>,
): object::ID

Returns ID of Collection associated with MintCap

public(friend) fun new_unregulated<C>(
    _mint_cap: &mint_cap::MintCap<C>,
    collection_id: object::ID,
    ctx: &mut tx_context::TxContext,
): mint_cap::UnregulatedMintCap<C>

Create a new UnregulatedMintCap

UnregulatedMintCap may only be created by supply_domain::delegate_unregulated.

public fun delete_unregulated<C>(
    mint: mint_cap::UnregulatedMintCap<C>,
)

Delete UnregulatedMintCap

public fun unregulated_collection_id<C>(
    mint: &mint_cap::UnregulatedMintCap<C>,
): object::ID

Returns ID of Collection associated with RegulatedMintCap

public(friend) fun new_regulated<C>(
    _mint_cap: &mint_cap::MintCap<C>,
    collection_id: object::ID,
    supply: supply::Supply,
    ctx: &mut tx_context::TxContext,
): mint_cap::RegulatedMintCap<C>

Create a new RegulatedMintCap

RegulatedMintCap may only be created by supply_domain::delegate_regulated.

public fun from_unregulated<C>(
    mint_cap: mint_cap::UnregulatedMintCap<C>,
    supply: u64,
    ctx: &mut tx_context::TxContext,
): mint_cap::RegulatedMintCap<C>

Create a new RegulatedMintCap from UnregulatedMintCap

Presence of UnregulatedMintCap implies that Collection supply is unregulated, therefore it is safe to create arbitrary RegulatedMintCap.

public fun delegate<C>(
    delegated: &mut mint_cap::RegulatedMintCap<C>,
    value: u64,
    ctx: &mut tx_context::TxContext,
): mint_cap::RegulatedMintCap<C>

Creates a new RegulatedMintCap by delegating some supply from an existing RegulatedMintCap.

Panics

Panics if supply exceeds maximum.

public fun delegate_all<C>(
    delegated: &mut mint_cap::RegulatedMintCap<C>,
    ctx: &mut tx_context::TxContext,
): mint_cap::RegulatedMintCap<C>

Creates a new RegulatedMintCap by delegating all remaining supply from existing RegulatedMintCap.

public fun delete_regulated<C>(
    mint: mint_cap::RegulatedMintCap<C>,
): supply::Supply

Delete RegulatedMintCap<C>

public fun regulated_collection_id<C>(
    mint: &mint_cap::RegulatedMintCap<C>,
): object::ID

Returns ID of Collection associated with RegulatedMintCap

public fun borrow_supply<C>(
    delegated: &mint_cap::RegulatedMintCap<C>,
): &supply::Supply

Borrow RegulatedMintCap Supply

public entry fun increment_supply<C>(
    delegated: &mut mint_cap::RegulatedMintCap<C>,
    value: u64,
)

Increments the delegated supply of Inventory

This endpoint must be called before a new Nft object is created to ensure that global supply tracking remains consistent.

Panics

Panics if delegated supply is exceeded.