psibase 0.23.0

Library and command-line tool for interacting with psibase networks
Documentation
use async_graphql::{InputObject, SimpleObject};
use fracpack::{Pack, ToSchema, Unpack};
use serde::{Deserialize, Serialize};

use crate::AccountNumber;

pub type NID = u32;

#[derive(
    Debug, Copy, Clone, Pack, Unpack, Serialize, Deserialize, SimpleObject, InputObject, ToSchema,
)]
#[fracpack(fracpack_mod = "fracpack")]
#[graphql(input_name = "NftRecordInput")]
pub struct Nft {
    pub id: NID,
    pub issuer: AccountNumber,
    pub owner: AccountNumber,
}

#[derive(
    Debug, Copy, Clone, Pack, Unpack, Serialize, Deserialize, SimpleObject, InputObject, ToSchema,
)]
#[fracpack(fracpack_mod = "fracpack")]
#[graphql(input_name = "NftHolderRecordInput")]
pub struct NftHolderRecord {
    account: AccountNumber,
    config: u8,
}

#[derive(
    Debug, Copy, Clone, Pack, Unpack, Serialize, Deserialize, SimpleObject, InputObject, ToSchema,
)]
#[fracpack(fracpack_mod = "fracpack")]
#[graphql(input_name = "CreditRecordInput")]
pub struct CreditRecord {
    nftId: NID,
    creditor: AccountNumber,
    debitor: AccountNumber,
}

crate::define_flags!(NftHolderFlags, u8, {
    manual_debit,
});

#[crate::service(name = "nft", dispatch = false, psibase_mod = "crate")]
#[allow(non_snake_case, unused_variables)]
mod service {
    use super::NID;
    use crate::{AccountNumber, Memo};

    #[action]
    fn init() {
        unimplemented!()
    }

    #[action]
    fn mint() -> crate::services::nft::NID {
        unimplemented!()
    }

    #[action]
    fn burn(nftId: crate::services::nft::NID) {
        unimplemented!()
    }

    #[action]
    fn credit(nftId: crate::services::nft::NID, debitor: AccountNumber, memo: Memo) {
        unimplemented!()
    }

    #[action]
    fn uncredit(nftId: crate::services::nft::NID, memo: Memo) {
        unimplemented!()
    }

    #[action]
    fn debit(nftId: crate::services::nft::NID, memo: Memo) {
        unimplemented!()
    }

    #[action]
    fn setUserConf(index: u8, enable: bool) {
        unimplemented!()
    }

    #[action]
    fn getNft(nftId: crate::services::nft::NID) -> super::Nft {
        unimplemented!()
    }

    #[action]
    fn getNftHolder(account: AccountNumber) -> super::NftHolderRecord {
        unimplemented!()
    }

    #[action]
    fn getCredRecord(nftId: crate::services::nft::NID) -> super::CreditRecord {
        unimplemented!()
    }

    #[action]
    fn exists(nftId: crate::services::nft::NID) -> bool {
        unimplemented!()
    }

    #[action]
    fn getUserConf(account: AccountNumber, index: u8) -> bool {
        unimplemented!()
    }

    #[event(history)]
    fn minted(nftId: NID, issuer: AccountNumber) {
        unimplemented!()
    }
    #[event(history)]
    fn burned(nftId: NID, owner: AccountNumber) {
        unimplemented!()
    }

    #[event(history)]
    fn credited(nftId: NID, creditor: AccountNumber, debitor: AccountNumber, memo: String) {
        unimplemented!()
    }
    #[event(history)]
    fn uncredited(nftId: NID, creditor: AccountNumber, debitor: AccountNumber, memo: String) {
        unimplemented!()
    }

    #[event(merkle)]
    fn transferred(nftId: NID, creditor: AccountNumber, debitor: AccountNumber, memo: String) {
        unimplemented!()
    }

    #[event(history)]
    fn userConfSet(account: AccountNumber, index: u8, enable: bool) {
        unimplemented!()
    }
}

#[test]
fn verify_schema() {
    crate::assert_schema_matches_package::<Wrapper>();
}