clockwork_pool_program/instructions/
initialize.rs1use {
2 crate::objects::*,
3 anchor_lang::{prelude::*, solana_program::system_program},
4 std::mem::size_of,
5};
6
7#[derive(Accounts)]
8#[instruction(pool_authority: Pubkey)]
9pub struct Initialize<'info> {
10 #[account(mut)]
11 pub admin: Signer<'info>,
12
13 #[account(
14 init,
15 seeds = [SEED_CONFIG],
16 bump,
17 payer = admin,
18 space = 8 + size_of::<Config>(),
19 )]
20 pub config: Account<'info, Config>,
21
22 #[account(address = system_program::ID)]
23 pub system_program: Program<'info, System>,
24}
25
26pub fn handler(ctx: Context<Initialize>, pool_authority: Pubkey) -> Result<()> {
27 let admin = &ctx.accounts.admin;
28 let config = &mut ctx.accounts.config;
29
30 config.init(admin.key(), pool_authority)?;
31
32 Ok(())
33}