templar_common/
snapshot.rs1use 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}