Files
ore/api/src/sdk.rs
2025-05-23 17:52:47 -07:00

36 lines
1.1 KiB
Rust

use steel::*;
use crate::{instruction::*, state::*};
pub fn bet(
signer: Pubkey,
mint: Pubkey,
amount: u64,
id: u64,
round: u64,
seed: Option<[u8; 32]>,
) -> Instruction {
let sender = spl_associated_token_account::get_associated_token_address(&signer, &mint);
let block = block_pda().0;
let block_bets = spl_associated_token_account::get_associated_token_address(&signer, &mint);
let wager = wager_pda(round, id).0;
Instruction {
program_id: crate::ID,
accounts: vec![
AccountMeta::new(signer, true),
AccountMeta::new(block, false),
AccountMeta::new(block_bets, false),
AccountMeta::new(sender, false),
AccountMeta::new(wager, false),
AccountMeta::new_readonly(spl_token::ID, false),
AccountMeta::new_readonly(spl_associated_token_account::ID, false),
AccountMeta::new_readonly(sysvar::slot_hashes::ID, false),
],
data: Bet {
amount: amount.to_le_bytes(),
seed: seed.unwrap_or([0; 32]),
}
.to_bytes(),
}
}