use anchor_lang::{prelude::Pubkey, solana_program::account_info::AccountInfo};
use arcium_client::idl::arcium::{
cpi::accounts::QueueComputation,
types::{CallbackAccount, CallbackInstruction, Output, Parameter},
};
pub trait QueueCompAccs<'info> {
fn comp_def_offset(&self) -> u32;
fn queue_comp_accs(&self) -> QueueComputation<'info>;
fn arcium_program(&self) -> AccountInfo<'info>;
fn mxe_program(&self) -> Pubkey;
fn signer_pda_bump(&self) -> u8;
}
pub trait CallbackCompAccs {
fn callback_ix(extra_accs: &[CallbackAccount]) -> CallbackInstruction;
}
pub trait InitCompDefAccs<'info> {
fn arcium_program(&self) -> AccountInfo<'info>;
fn mxe_program(&self) -> Pubkey;
fn signer(&self) -> AccountInfo<'info>;
fn mxe_acc(&self) -> AccountInfo<'info>;
fn comp_def_acc(&self) -> AccountInfo<'info>;
fn system_program(&self) -> AccountInfo<'info>;
fn params(&self) -> Vec<Parameter>;
fn outputs(&self) -> Vec<Output>;
fn comp_def_offset(&self) -> u32;
fn compiled_circuit_len(&self) -> u32;
}