hydra/
lib.rs

1pub mod error;
2pub mod processors;
3pub mod state;
4pub mod utils;
5
6use anchor_lang::prelude::*;
7use processors::*;
8use state::MembershipModel;
9
10declare_id!("hyDQ4Nz1eYyegS6JfenyKwKzYxRsCWCriYSAjtzP4Vg");
11#[program]
12pub mod hydra {
13    use super::*;
14
15    pub fn process_init(
16        ctx: Context<InitializeFanout>,
17        args: InitializeFanoutArgs,
18        model: MembershipModel,
19    ) -> Result<()> {
20        init(ctx, args, model)
21    }
22
23    pub fn process_init_for_mint(
24        ctx: Context<InitializeFanoutForMint>,
25        bump_seed: u8,
26    ) -> Result<()> {
27        init_for_mint(ctx, bump_seed)
28    }
29
30    pub fn process_add_member_wallet(
31        ctx: Context<AddMemberWallet>,
32        args: AddMemberArgs,
33    ) -> Result<()> {
34        add_member_wallet(ctx, args)
35    }
36
37    pub fn process_add_member_nft(
38        ctx: Context<AddMemberWithNFT>,
39        args: AddMemberArgs,
40    ) -> Result<()> {
41        add_member_nft(ctx, args)
42    }
43
44    pub fn process_set_token_member_stake(
45        ctx: Context<SetTokenMemberStake>,
46        shares: u64,
47    ) -> Result<()> {
48        set_token_member_stake(ctx, shares)
49    }
50
51    pub fn process_set_for_token_member_stake(
52        ctx: Context<SetForTokenMemberStake>,
53        shares: u64,
54    ) -> Result<()> {
55        set_for_token_member_stake(ctx, shares)
56    }
57
58    pub fn process_distribute_nft(
59        ctx: Context<DistributeNftMember>,
60        distribute_for_mint: bool,
61    ) -> Result<()> {
62        distribute_for_nft(ctx, distribute_for_mint)
63    }
64
65    pub fn process_distribute_wallet(
66        ctx: Context<DistributeWalletMember>,
67        distribute_for_mint: bool,
68    ) -> Result<()> {
69        distribute_for_wallet(ctx, distribute_for_mint)
70    }
71
72    pub fn process_distribute_token(
73        ctx: Context<DistributeTokenMember>,
74        distribute_for_mint: bool,
75    ) -> Result<()> {
76        distribute_for_token(ctx, distribute_for_mint)
77    }
78
79    pub fn process_sign_metadata(ctx: Context<SignMetadata>) -> Result<()> {
80        sign_metadata(ctx)
81    }
82
83    pub fn process_transfer_shares(ctx: Context<TransferShares>, shares: u64) -> Result<()> {
84        transfer_shares(ctx, shares)
85    }
86
87    pub fn process_unstake(ctx: Context<UnStakeTokenMember>) -> Result<()> {
88        unstake(ctx)
89    }
90}