phase-protocol-sdk 0.3.0

Integration SDK for phase-protocol and fundraising programs
Documentation
use crate::id;
use anchor_lang::prelude::*;

/**
 * Mint contract used in the roadmap
 * enforces only one record can be init
 */
#[account]
pub struct MintContractRecord {
    pub roadmap: Pubkey,
    //Mint program so we can confirm ownership of pda
    pub mint_program: Pubkey,
    pub mint_contract_account: Pubkey,
    pub collection_record: Pubkey,
    pub bump: u8,
}

impl MintContractRecord {
    pub fn space() -> usize {
        8 +
        4 + std::mem::size_of::<Pubkey>() + // roadmap
        4 + std::mem::size_of::<Pubkey>() + // mint_account
        4 + std::mem::size_of::<Pubkey>() +  // mint_program
        4 + std::mem::size_of::<Pubkey>() + // collection_record
        1 // bump
    }
}

pub fn get_mint_contract_record_address(
    mint_pda_account: &Pubkey,
    mint_program: &Pubkey,
) -> Pubkey {
    Pubkey::find_program_address(
        &[
            b"mint_contract",
            mint_program.as_ref(),
            mint_pda_account.as_ref(),
        ],
        &id(),
    )
    .0
}