templar_common/
snapshot.rs

1use near_sdk::{env, json_types::U64, near};
2
3use crate::{
4    asset::{BorrowAssetAmount, CollateralAssetAmount},
5    number::Decimal,
6    time_chunk::TimeChunk,
7};
8
9#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
10#[near(serializers = [borsh, json])]
11pub struct Snapshot {
12    pub time_chunk: TimeChunk,
13    pub end_timestamp_ms: U64,
14    pub borrow_asset_deposited_active: BorrowAssetAmount,
15    pub borrow_asset_borrowed: BorrowAssetAmount,
16    pub collateral_asset_deposited: CollateralAssetAmount,
17    pub yield_distribution: BorrowAssetAmount,
18    pub interest_rate: Decimal,
19}
20
21impl Snapshot {
22    pub fn new(time_chunk: TimeChunk) -> Self {
23        Self {
24            time_chunk,
25            end_timestamp_ms: env::block_timestamp_ms().into(),
26            borrow_asset_deposited_active: 0.into(),
27            borrow_asset_borrowed: 0.into(),
28            collateral_asset_deposited: 0.into(),
29            yield_distribution: BorrowAssetAmount::zero(),
30            interest_rate: Decimal::ZERO,
31        }
32    }
33}