lib.rs 871 B

123456789101112131415161718192021222324252627282930313233
  1. use anchor_lang::prelude::*;
  2. declare_id!("Bi5N7SUQhpGknVcqPTzdFFVueQoxoUu8YTLz75J6fT8A");
  3. // automatically generate module using program idl found in ./idls
  4. declare_program!(lever);
  5. use lever::accounts::PowerStatus;
  6. use lever::cpi::accounts::SwitchPower;
  7. use lever::cpi::switch_power;
  8. use lever::program::Lever;
  9. #[program]
  10. pub mod hand {
  11. use super::*;
  12. pub fn pull_lever(ctx: Context<PullLever>, name: String) -> Result<()> {
  13. let cpi_ctx = CpiContext::new(
  14. ctx.accounts.lever_program.to_account_info(),
  15. SwitchPower {
  16. power: ctx.accounts.power.to_account_info(),
  17. },
  18. );
  19. switch_power(cpi_ctx, name)?;
  20. Ok(())
  21. }
  22. }
  23. #[derive(Accounts)]
  24. pub struct PullLever<'info> {
  25. #[account(mut)]
  26. pub power: Account<'info, PowerStatus>,
  27. pub lever_program: Program<'info, Lever>,
  28. }