antegen_thread_program/instructions/
config_init.rs1use crate::{constants::*, state::*};
2use anchor_lang::prelude::*;
3
4#[derive(Accounts)]
6pub struct ConfigInit<'info> {
7 #[account(mut)]
9 pub admin: Signer<'info>,
10
11 #[account(
13 init,
14 payer = admin,
15 space = ThreadConfig::space(),
16 seeds = [SEED_CONFIG],
17 bump
18 )]
19 pub config: Account<'info, ThreadConfig>,
20
21 pub system_program: Program<'info, System>,
23}
24
25pub fn config_init(ctx: Context<ConfigInit>) -> Result<()> {
26 let config = &mut ctx.accounts.config;
27 let admin = &ctx.accounts.admin;
28
29 config.version = 1;
31 config.bump = ctx.bumps.config;
32 config.admin = admin.key();
33 config.paused = false;
34 config.commission_fee = 1000; config.executor_fee_bps = 9000; config.core_team_bps = 1000; config.grace_period_seconds = 5; config.fee_decay_seconds = 295; msg!("Thread config initialized with admin: {}", admin.key());
41
42 Ok(())
43}