gmsol_chainlink_datastreams/
utils.rs

1use anchor_lang::prelude::Pubkey;
2use gmsol_mock_chainlink_verifier::DEFAULT_VERIFIER_ACCOUNT_SEEDS;
3use snap::raw::{Decoder, Encoder};
4
5/// Find verifier account PDA.
6pub fn find_verifier_account_pda(program_id: &Pubkey) -> Pubkey {
7    Pubkey::find_program_address(&[DEFAULT_VERIFIER_ACCOUNT_SEEDS], program_id).0
8}
9
10/// Find config account PDA.
11pub fn find_config_account_pda(report: &[u8], program_id: &Pubkey) -> Pubkey {
12    Pubkey::find_program_address(&[&report[..32]], program_id).0
13}
14
15/// Compressor.
16pub struct Compressor;
17
18impl Compressor {
19    /// Compress signed report.
20    pub fn compress(data: &[u8]) -> snap::Result<Vec<u8>> {
21        let mut encoder = Encoder::new();
22        encoder.compress_vec(data)
23    }
24
25    /// Decompress signed report.
26    pub fn decompress(compressed: &[u8]) -> snap::Result<Vec<u8>> {
27        let mut decoder = Decoder::new();
28        decoder.decompress_vec(compressed)
29    }
30}