use steel::*;
#[repr(u8)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, TryFromPrimitive)]
pub enum BucksInstruction {
Create = 0,
Claim = 1,
UpdateAuthority = 2,
Wrap = 100,
Unwrap = 101,
Init = 200,
InitProtocol = 201,
Rebalance = 202,
Checkpoint = 203,
SetPrimaryProtocol = 205,
SetPaused = 206,
CollectPlatformFee = 207,
SetTreasury = 208,
DeleteVault = 209,
Log = 250,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Pod, Zeroable)]
pub struct Create {
pub id: [u8; 32],
pub name: [u8; 32],
pub symbol: [u8; 32],
pub noise: [u8; 32],
pub bump: u8,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Pod, Zeroable)]
pub struct Claim {
pub amount: [u8; 8],
pub min_usdc_out: [u8; 8],
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Pod, Zeroable)]
pub struct UpdateAuthority {
pub new_authority: [u8; 32],
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Pod, Zeroable)]
pub struct Wrap {
pub amount: [u8; 8],
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Pod, Zeroable)]
pub struct Unwrap {
pub amount: [u8; 8],
pub min_usdc_out: [u8; 8],
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Pod, Zeroable)]
pub struct Init {
pub platform_fee_bps: [u8; 2],
pub _padding: [u8; 6],
pub treasury: [u8; 32],
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Pod, Zeroable)]
pub struct InitProtocol {
pub protocol_id: u8,
pub name: [u8; 32],
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Pod, Zeroable)]
pub struct Rebalance {
pub from_protocol: u8,
pub to_protocol: u8,
pub _padding: [u8; 6],
pub amount: [u8; 8],
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Pod, Zeroable)]
pub struct Checkpoint {
pub protocol_id: u8,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Pod, Zeroable)]
pub struct SetPrimaryProtocol {
pub protocol_id: u8,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Pod, Zeroable)]
pub struct SetPaused {
pub paused: u8,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Pod, Zeroable)]
pub struct CollectPlatformFee {
pub protocol_id: u8,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Pod, Zeroable)]
pub struct SetTreasury {
pub treasury: [u8; 32],
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Pod, Zeroable)]
pub struct DeleteVault {}
#[repr(C)]
#[derive(Clone, Copy, Debug, Pod, Zeroable)]
pub struct Log {}
instruction!(BucksInstruction, Create);
instruction!(BucksInstruction, Claim);
instruction!(BucksInstruction, UpdateAuthority);
instruction!(BucksInstruction, Wrap);
instruction!(BucksInstruction, Unwrap);
instruction!(BucksInstruction, Init);
instruction!(BucksInstruction, InitProtocol);
instruction!(BucksInstruction, Rebalance);
instruction!(BucksInstruction, Checkpoint);
instruction!(BucksInstruction, SetPrimaryProtocol);
instruction!(BucksInstruction, SetPaused);
instruction!(BucksInstruction, CollectPlatformFee);
instruction!(BucksInstruction, SetTreasury);
instruction!(BucksInstruction, DeleteVault);
instruction!(BucksInstruction, Log);