templar_common/oracle/redstone/
mod.rs1use std::collections::HashMap;
2
3use near_sdk::{
4 ext_contract,
5 json_types::{Base64VecU8, U64},
6 near,
7};
8use templar_primitives::{strnum::SU256, time::Nanoseconds};
9
10pub const DECIMALS: i32 = 8;
12
13mod adapter;
14pub use adapter::*;
15pub mod config;
16pub use config::Config;
17mod event;
18pub use event::*;
19mod feed_data;
20pub use feed_data::*;
21mod feed_id;
22pub use feed_id::*;
23
24#[derive(Debug, Clone, PartialEq, Eq)]
25#[near(serializers = [json])]
26pub struct GetPrices {
27 pub timestamp: Nanoseconds,
28 pub prices: HashMap<FeedId, SU256>,
29}
30
31#[ext_contract(ext_redstone)]
32pub trait RedStoneContractInterface {
33 fn unique_signer_threshold(&self) -> U64;
34 fn get_prices(&self, feed_ids: Vec<FeedId>, payload: Base64VecU8) -> GetPrices;
35 fn read_prices(&self, feed_ids: Vec<FeedId>) -> HashMap<FeedId, SU256>;
36 fn read_timestamp(&self, feed_id: FeedId) -> Option<Nanoseconds>;
37 fn read_price_data_for_feed(&self, feed_id: FeedId) -> Option<FeedData>;
38 fn read_price_data(&self, feed_ids: Vec<FeedId>) -> HashMap<FeedId, FeedData>;
39 fn write_prices(&mut self, feed_ids: Vec<FeedId>, payload: Base64VecU8);
40}