switchboard_solana/oracle_program/instructions/
oracle_heartbeat.rs

1use crate::prelude::*;
2
3pub struct OracleHeartbeat {
4    pub oracle: Pubkey,
5    pub oracle_authority: Pubkey,
6    pub token_account: Pubkey,
7    pub gc_oracle: Pubkey,
8    pub oracle_queue: Pubkey,
9    pub permission: Pubkey,
10    pub data_buffer: Pubkey,
11}
12#[derive(Clone, AnchorSerialize, AnchorDeserialize)]
13pub struct OracleHeartbeatParams {
14    pub permission_bump: u8,
15}
16impl Discriminator for OracleHeartbeat {
17    const DISCRIMINATOR: [u8; 8] = [10, 175, 217, 130, 111, 35, 117, 54];
18}
19
20impl<'info> OracleHeartbeat {
21    #[allow(unused_variables)]
22    fn to_account_metas(&self, is_signer: Option<bool>) -> Vec<AccountMeta> {
23        vec![
24            AccountMeta {
25                pubkey: self.oracle.key(),
26                is_signer: false,
27                is_writable: true,
28            },
29            AccountMeta {
30                pubkey: self.oracle_authority.key(),
31                is_signer: true,
32                is_writable: false,
33            },
34            AccountMeta {
35                pubkey: self.token_account.key(),
36                is_signer: false,
37                is_writable: false,
38            },
39            AccountMeta {
40                pubkey: self.gc_oracle.key(),
41                is_signer: false,
42                is_writable: true,
43            },
44            AccountMeta {
45                pubkey: self.oracle_queue.key(),
46                is_signer: false,
47                is_writable: true,
48            },
49            AccountMeta {
50                pubkey: self.permission.key(),
51                is_signer: false,
52                is_writable: false,
53            },
54            AccountMeta {
55                pubkey: self.data_buffer.key(),
56                is_signer: false,
57                is_writable: true,
58            },
59        ]
60    }
61}