use crate::{constants::*, state::*};
use anchor_lang::prelude::*;
#[derive(Accounts)]
pub struct ConfigInit<'info> {
#[account(mut)]
pub admin: Signer<'info>,
#[account(
init,
payer = admin,
space = ThreadConfig::space(),
seeds = [SEED_CONFIG],
bump
)]
pub config: Account<'info, ThreadConfig>,
pub system_program: Program<'info, System>,
}
pub fn config_init(ctx: Context<ConfigInit>) -> Result<()> {
let config = &mut ctx.accounts.config;
let admin = &ctx.accounts.admin;
config.version = 1;
config.bump = ctx.bumps.config;
config.admin = admin.key();
config.paused = false;
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());
Ok(())
}