Import Modules

Example Implementation

https://github.com/artfilabs/rewardsv1.git

Add Dependencies

Add the Artinals package to your Move.toml:

[package]
name = "your_package_name"
edition = "2024.beta"

[dependencies.Sui]
git = "https://github.com/MystenLabs/sui.git"
subdir = "crates/sui-framework/packages/sui-framework"
rev = "framework/testnet"

[dependencies.artinals]
git = "https://github.com/artfilabs/artinalsprotocolv1.git"
rev = "main"
subdir = "."


[addresses]
rewards = "0x0"


[dev-dependencies]
# none

[dev-addresses]
# none

2. Import Modules

In your Move contract, import the required modules:

use artinals::ART20;  // For core NFT functionality
use artinals::SALE;   // For NFT sales features
use artinals::TRADE;  // For trading pool operations


Example Usage:
use artinals::ART20::{Self, NFT, CollectionCap, UserBalance};

Core Features Integration

1. NFT Management (ART20)

module your_package::nft_manager {
    use artinals::ART20::{Self, NFT, CollectionCap};
    
    // Create new NFT collection
    public entry fun create_collection(
        name: vector<u8>,
        description: vector<u8>,
        initial_supply: u64,
        max_supply: u64,
        uri: vector<u8>,
        logo_uri: vector<u8>,
        is_mutable: bool,
        has_deny_list_authority: bool,
        counter: &mut TokenIdCounter,
        ctx: &mut TxContext
    ) {
        ART20::mint_art20(
            name, description, initial_supply, max_supply,
            uri, logo_uri, is_mutable, has_deny_list_authority,
            counter, ctx
        );
    }
}

2. Sales Integration (SALE)

module your_package::marketplace {
    use artinals::SALE;
    use artinals::ART20::{NFT, CollectionCap, UserBalance};
    
    // Create NFT sale
    public entry fun create_sale<CURRENCY: store>(
        nfts: vector<NFT>,
        nft_amount: u64,
        price_per_nft: u64,
        collection_cap: &mut CollectionCap,
        sender_balances: vector<UserBalance>,
        ctx: &mut TxContext
    ) {
        SALE::create_nft_sale<CURRENCY>(
            nfts,
            nft_amount,
            price_per_nft,
            // Additional metadata parameters...
            collection_cap,
            sender_balances,
            ctx
        );
    }
}

3. Trading Pool Integration (TRADE)

module your_package::trading {
    use artinals::TRADE;
    use artinals::ART20::{NFT, CollectionCap, UserBalance};
    
    // Create trading pool
    public entry fun create_pool<CURRENCY: store>(
        collection_pool: &mut TRADE::CollectionPool<CURRENCY>,
        collection_cap: &CollectionCap,
        initial_nfts: vector<NFT>,
        initial_tokens: Coin<CURRENCY>,
        user_balance: &mut UserBalance,
        fee_percent: u64,
        min_price: u64,
        max_price: u64,
        ctx: &mut TxContext
    ) {
        TRADE::create_pool<CURRENCY>(
            collection_pool,
            collection_cap,
            initial_nfts,
            initial_tokens,
            user_balance,
            fee_percent,
            min_price,
            max_price,
            ctx
        );
    }
}

Last updated