entropy_api/
sdk.rs

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}