1use steel::*;
2
3use crate::prelude::*;
4
5pub fn close(signer: Pubkey, var: Pubkey) -> Instruction {
6 Instruction {
7 program_id: crate::ID,
8 accounts: vec![AccountMeta::new(signer, true), AccountMeta::new(var, false)],
9 data: Close {}.to_bytes(),
10 }
11}
12
13pub fn open(
14 signer: Pubkey,
15 payer: Pubkey,
16 id: u64,
17 provider: Pubkey,
18 commit: [u8; 32],
19 is_auto: bool,
20 samples: u64,
21 end_at: u64,
22) -> Instruction {
23 Instruction {
24 program_id: crate::ID,
25 accounts: vec![
26 AccountMeta::new(signer, true),
27 AccountMeta::new(payer, true),
28 AccountMeta::new(provider, false),
29 AccountMeta::new(var_pda(signer, id).0, false),
30 AccountMeta::new_readonly(system_program::ID, false),
31 ],
32 data: Open {
33 id: id.to_le_bytes(),
34 is_auto: (is_auto as u64).to_le_bytes(),
35 commit,
36 samples: samples.to_le_bytes(),
37 end_at: end_at.to_le_bytes(),
38 }
39 .to_bytes(),
40 }
41}
42
43pub fn next(signer: Pubkey, var: Pubkey, end_at: u64) -> Instruction {
44 Instruction {
45 program_id: crate::ID,
46 accounts: vec![AccountMeta::new(signer, true), AccountMeta::new(var, false)],
47 data: Next {
48 end_at: end_at.to_le_bytes(),
49 }
50 .to_bytes(),
51 }
52}
53
54pub fn reveal(signer: Pubkey, var: Pubkey, seed: [u8; 32]) -> Instruction {
55 Instruction {
56 program_id: crate::ID,
57 accounts: vec![AccountMeta::new(signer, true), AccountMeta::new(var, false)],
58 data: Reveal { seed }.to_bytes(),
59 }
60}
61
62pub fn sample(signer: Pubkey, var: Pubkey) -> Instruction {
63 Instruction {
64 program_id: crate::ID,
65 accounts: vec![
66 AccountMeta::new(signer, true),
67 AccountMeta::new(var, false),
68 AccountMeta::new_readonly(sysvar::slot_hashes::ID, false),
69 ],
70 data: Sample {}.to_bytes(),
71 }
72}