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
51
52
53
54
55
use anchor_lang::prelude::*;

pub mod constants;
pub mod error;
pub mod instructions;
pub mod state;

use instructions::*;

declare_id!("BJgusPC7xJRCGsFcwEwMGExkqdbYRGy3pugoKwkFDzZx");

#[program]
pub mod elfo_protocol {
    use super::*;

    pub fn initialize(ctx: Context<InitializeProtocol>) -> Result<()> {
        instructions::initialize_protocol::handler(ctx)
    }

    pub fn subscribe(ctx: Context<Subscribe>, how_many_cycles: i64) -> Result<()> {
        instructions::subscribe::handler(ctx, how_many_cycles)
    }

    pub fn unsubscribe(ctx: Context<Unsubscribe>) -> Result<()> {
        instructions::unsubscribe::handler(ctx)
    }

    pub fn create_subscription_plan(
        ctx: Context<CreateSubscriptionPlan>,
        plan_name: String,
        subscription_amount: i64,
        frequency: i64,
        fee_percentage: i8,
    ) -> Result<()> {
        instructions::create_subscription_plan::handler(
            ctx,
            plan_name,
            subscription_amount,
            frequency,
            fee_percentage,
        )
    }

    pub fn close_subscription_plan(ctx: Context<CloseSubscriptionPlan>) -> Result<()> {
        instructions::close_subscription_plan::handler(ctx)
    }

    pub fn trigger_payment(ctx: Context<TriggerPayment>) -> Result<()> {
        instructions::trigger_payment::handler(ctx)
    }

    pub fn register_node(ctx: Context<RegisterNode>) -> Result<()> {
        instructions::register_node::handler(ctx)
    }
}