1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
pub mod errors;
pub mod instructions;
pub mod state;

use solana_security_txt::security_txt;
use {anchor_lang::prelude::*, instructions::*};

declare_id!("mccsLbWK9m7pbFotPmPGBhN37WnsfHG6SRsmeRTJSiP");

#[cfg(not(feature = "no-entrypoint"))]
security_txt! {
    name: "Creator Standard Marketplace",
    project_url: "cardinal.so",
    contacts: "email:team@cardinal.so,twitter:@cardinal_labs",
    policy: "https://github.com/cardinal-labs/cardinal-marketplace/blob/main/LICENSE",
    preferred_languages: "en",
    source_code: "https://github.com/cardinal-labs/cardinal-marketplace"
}

#[program]
pub mod cardinal_marketplace {

    use super::*;

    // listing
    pub fn create_listing(ctx: Context<CreateListingCtx>, ix: CreateListingIx) -> Result<()> {
        listing::create_listing::handler(ctx, ix)
    }

    pub fn update_listing(ctx: Context<UpdateListingCtx>, ix: UpdateListingIx) -> Result<()> {
        listing::update_listing::handler(ctx, ix)
    }

    pub fn accept_listing<'key, 'accounts, 'remaining, 'info>(ctx: Context<'key, 'accounts, 'remaining, 'info, AcceptListingCtx<'info>>, ix: AcceptListingIx) -> Result<()> {
        listing::accept_listing::handler(ctx, ix)
    }

    pub fn remove_listing(ctx: Context<RemoveListingCtx>) -> Result<()> {
        listing::remove_listing::handler(ctx)
    }

    // marketplace
    pub fn init_marketplace(ctx: Context<InitMarketplaceCtx>, ix: InitMarketplaceIx) -> Result<()> {
        marketplace::init_marketplace::handler(ctx, ix)
    }

    pub fn update_marketplace(ctx: Context<UpdateMarketplaceCtx>, ix: UpdateMarketplaceIx) -> Result<()> {
        marketplace::update_marketplace::handler(ctx, ix)
    }
}