#![deny(rustdoc::all)]
#![allow(rustdoc::missing_doc_code_examples)]
#![deny(clippy::unwrap_used)]
use anchor_lang::prelude::*;
use vipers::Validate;
mod instructions;
mod macros;
mod state;
pub use state::*;
use instructions::*;
declare_id!("YiiTopEnX2vyoWdXuG45ovDFYZars4XZ4w6td6RVTFm");
pub const MILLIBPS_PER_WHOLE: u32 = 10_000 * 1_000;
#[program]
pub mod yi {
use super::*;
#[access_control(ctx.accounts.validate())]
pub fn create_yi_token(ctx: Context<CreateYiToken>) -> Result<()> {
create_yi_token::handler(ctx, 0, 0)
}
#[access_control(ctx.accounts.validate())]
pub fn create_yi_token_with_fees(
ctx: Context<CreateYiToken>,
stake_fee_millibps: u32,
unstake_fee_millibps: u32,
) -> Result<()> {
create_yi_token::handler(ctx, stake_fee_millibps, unstake_fee_millibps)
}
#[access_control(ctx.accounts.validate())]
pub fn stake(ctx: Context<Stake>, amount: u64) -> Result<()> {
stake::handler(ctx, amount)
}
#[access_control(ctx.accounts.validate())]
pub fn unstake(ctx: Context<Unstake>, amount: u64) -> Result<()> {
unstake::handler(ctx, amount)
}
}
#[error_code]
pub enum ErrorCode {
#[msg("Decimal mismatch.")]
DecimalMismatch,
#[msg("Stake fee cannot exceed 100%.")]
InvalidStakeFee,
#[msg("Unstake fee cannot exceed 100%.")]
InvalidUnstakeFee,
}