defios 0.1.0

Main github on-chain integrations by DefiOS
Documentation
use crate::state::{ObjectiveDeliverable, RoadmapOutlook};
use anchor_lang::prelude::*;
#[event]
pub struct PullRequestSent {
    pub sent_by: Pubkey,
    pub metadata_uri: String,
    pub issue: Pubkey,
    pub pull_request: Pubkey,
}

#[event]
pub struct AddCommitToPR {
    pub commit: Vec<Pubkey>,
    pub by: Pubkey,
}

#[event]
pub struct AddObjectiveDataEvent {
    pub objective_title: String,
    pub objective_metadata_uri: String,
    pub objective_start_unix: i64,
    pub objective_creation_unix: i64,
    pub objective_deliverable: ObjectiveDeliverable,
    pub objective_public_key: Pubkey,
    pub objective_addr: Pubkey,
    pub parent_objective: Pubkey,
}

#[event]
pub struct AddRoadmapDataEvent {
    pub roadmap_title: String,
    pub roadmap_description_link: String,
    pub roadmap_creation_unix: u64,
    pub roadmap_creator: Pubkey,
    pub root_objective_ids: Option<Pubkey>,
    pub roadmap_outlook: RoadmapOutlook,
    pub roadmap_image_url: String,
    pub roadmap: Pubkey,
    pub roadmap_repository: Pubkey,
}

#[event]
pub struct NameRouterCreated {
    pub router_creator: Pubkey,
    pub name_router_account: Pubkey,
}

#[event]
pub struct VerifiedUserAdded {
    pub router_creator: Pubkey,
    pub name_router_account: Pubkey,
    pub verified_user_account: Pubkey,
    pub user_name: String,
    pub user_pubkey: Pubkey,
}

#[event]
pub struct CommitAdded {
    pub commit_creator: Pubkey,
    pub commit_account: Pubkey,
    pub issue_account: Pubkey,
    pub metadata_uri: String,
}

#[event]
pub struct IssueCreated {
    pub issue_creator: Pubkey,
    pub issue_account: Pubkey,
    pub repository_account: Pubkey,
    pub uri: String,
}

#[event]
pub struct RepositoryCreated {
    pub repository_creator: Pubkey,
    pub repository_account: Pubkey,
    pub rewards_mint: Option<Pubkey>,
    pub uri: String,
    pub id: String,
    pub description: String,
    pub token_name: Option<String>,
    pub token_symbol: Option<String>,
    pub token_metadata_uri: Option<String>,
    pub vesting_account: Option<Pubkey>,
    pub token_imported: bool,
}

#[event]
pub struct IssueStaked {
    pub issue_staker: Pubkey,
    pub issue_staker_token_account: Pubkey,
    pub issue_account: Pubkey,
    pub staked_amount: u64,
    pub rewards_mint: Pubkey,
    pub issue_contribution_link: String,
    pub staked_at: i64,
    pub pr_voting_power: u64,
}

#[event]
pub struct IssueUnstaked {
    pub issue_staker: Pubkey,
    pub issue_staker_token_account: Pubkey,
    pub issue_account: Pubkey,
    pub unstaked_amount: u64,
    pub rewards_mint: Pubkey,
    pub issue_contribution_link: String,
}

#[event]
pub struct PullRequestAccepted {
    pub pull_request_addr: Pubkey,
    pub repository: Pubkey,
    pub repository_name: String,
    pub issue: Pubkey,
    pub repository_creator: Pubkey,
}

#[event]
pub struct PRVoted {
    pub pull_request: Pubkey,
    pub vote_amount: u64,
    pub voter: Pubkey,
}

#[event]
pub struct RewardClaimed {
    pub reward_claimmee: Pubkey,
    pub reward_amount: u64,
    pub pull_request: Pubkey,
}

#[event]
pub struct RepoTokenChanged {
    pub repository: Pubkey,
    pub new_token: Pubkey,
}

#[event]
pub struct GrantProvided {
    pub grantee: Pubkey,
    pub grant_amount: u64,
    pub objective: Pubkey,
    pub grant_metadata_uri: String,
}

#[event]
pub struct GrantDispersed {
    pub objective: Pubkey,
    pub issue: Pubkey,
    pub grant_amount: u64,
}

#[event]
pub struct IssueMergedByVote {
    pub issue: Pubkey,
    pub pull_request_metadata_account: Pubkey,
}

#[event]
pub struct ObjectiveProposalCreated {
    pub objective: Pubkey,
    pub proposee: Pubkey,
    pub proposed_time: i64,
    pub objective_proposal_url: String,
}

#[event]
pub struct ObjectiveProposalVoted {
    pub voter: Pubkey,
    pub objective: Pubkey,
    pub objective_proposal: Pubkey,
    pub vote_amount: u64,
}

#[event]
pub struct ObjectiveAccepted {
    pub objective: Pubkey,
    pub objective_proposal: Pubkey,
}