1#![allow(unexpected_cfgs)]
2
3use anchor_lang::prelude::*;
4use context::*;
5
6mod context;
7mod errors;
8mod state;
9
10pub use state::sale::Sale;
11
12declare_id!("Be1tUaMkbDZEX65BgXHNwh7wrNRWUwNH92ggsB8UuLJd");
13
14#[program]
15pub mod greedy_solana {
16 use super::*;
17
18 pub fn initialize_contract_state(
19 ctx: Context<InitializeContractState>,
20 authority: Pubkey,
21 multiplier: u64,
22 fee: u64,
23 ) -> Result<()> {
24 ctx.accounts
25 .initialize_contract_state(authority, multiplier, fee)
26 }
27
28 pub fn set_contract_authority(
29 ctx: Context<UpdateContractState>,
30 authority: Pubkey,
31 ) -> Result<()> {
32 ctx.accounts.set_authority(authority)
33 }
34
35 pub fn set_contract_multiplier(
36 ctx: Context<UpdateContractState>,
37 multiplier: u64,
38 ) -> Result<()> {
39 ctx.accounts.set_multiplier(multiplier)
40 }
41
42 pub fn set_contract_fee(ctx: Context<UpdateContractState>, fee: u64) -> Result<()> {
43 ctx.accounts.set_fee(fee)
44 }
45
46 pub fn update_sale(
47 ctx: Context<UpdateSale>,
48 sale_id: u128,
49 target_deposit: u64,
50 description: [u8; 256],
51 name: [u8; 32],
52 end_date: i64,
53 unlock_range: [u16; 2],
54 ) -> Result<()> {
55 ctx.accounts.update_sale(
56 sale_id,
57 target_deposit,
58 description,
59 name,
60 end_date,
61 unlock_range,
62 )
63 }
64
65 pub fn create_sale(
66 ctx: Context<CreateSale>,
67 sale_id: u128,
68 args: CreateSaleArgs,
69 ) -> Result<()> {
70 ctx.accounts.create_sale(sale_id, args, ctx.bumps.mint)
71 }
72
73 pub fn update_sale_name(ctx: Context<UpdateSale>, sale_id: u128, name: [u8; 32]) -> Result<()> {
74 ctx.accounts.update_sale_name(sale_id, name)
75 }
76
77 pub fn update_sale_description(
78 ctx: Context<UpdateSale>,
79 sale_id: u128,
80 description: [u8; 256],
81 ) -> Result<()> {
82 ctx.accounts.update_sale_description(sale_id, description)
83 }
84
85 pub fn update_sale_end_date(
86 ctx: Context<UpdateSale>,
87 sale_id: u128,
88 end_date: i64,
89 ) -> Result<()> {
90 ctx.accounts.update_sale_end_date(sale_id, end_date)
91 }
92
93 pub fn update_mint_metadata_date(
94 ctx: Context<UpdateMintMetadata>,
95 sale_id: u128,
96 args: MetadataArgs,
97 ) -> Result<()> {
98 ctx.accounts.update_metadata(sale_id, args, ctx.bumps.mint)
99 }
100
101 pub fn update_sale_unlock_range(
102 ctx: Context<UpdateSale>,
103 sale_id: u128,
104 unlock_range: [u16; 2],
105 ) -> Result<()> {
106 ctx.accounts.update_sale_unlock_range(sale_id, unlock_range)
107 }
108
109 pub fn update_sale_target_deposit(
110 ctx: Context<UpdateSale>,
111 sale_id: u128,
112 target_deposit: u64,
113 ) -> Result<()> {
114 ctx.accounts
115 .update_sale_target_deposit(sale_id, target_deposit)
116 }
117
118 pub fn complete_sale(ctx: Context<CompleteSale>, sale_id: u128) -> Result<()> {
119 ctx.accounts.complete_sale(sale_id, ctx.bumps.sale)
120 }
121
122 pub fn create_amm(ctx: Context<CreateAmm>, sale_id: u128) -> Result<()> {
123 ctx.accounts.create_amm(sale_id)
124 }
125
126 pub fn participate_in_sale(
127 ctx: Context<ParticipateInSale>,
128 sale_id: u128,
129 amount: u64,
130 claim_hour: u16,
131 ) -> Result<()> {
132 ctx.accounts
133 .participate_in_sale(sale_id, amount, claim_hour)
134 }
135
136 pub fn claim_sale_reward(ctx: Context<ClaimSaleReward>, sale_id: u128) -> Result<()> {
137 ctx.accounts.claim_sale_reward(sale_id, ctx.bumps.sale)
138 }
139
140 pub fn recharge(ctx: Context<Recharge>, sale_id: u128) -> Result<()> {
141 ctx.accounts.racharge(sale_id)
142 }
143}