Skip to main content

hypercall_db/traits/
pm_settlement.rs

1use anyhow::Result;
2
3#[async_trait::async_trait]
4pub trait PmSettlementProjectionReader: Send + Sync {
5    async fn list_pm_settlement_pools(&self) -> Result<Vec<crate::PmSettlementPoolProjection>>;
6
7    async fn pm_settlement_pool_gate_counts(&self) -> Result<crate::PmSettlementPoolGateCounts>;
8
9    async fn list_pm_settlement_accounts(
10        &self,
11    ) -> Result<Vec<crate::PmSettlementAccountProjection>>;
12
13    async fn pm_settlement_account_gate_counts(
14        &self,
15        now_ms: i64,
16    ) -> Result<crate::PmSettlementAccountGateCounts>;
17
18    async fn list_pm_settlement_events(&self) -> Result<Vec<crate::PmSettlementEventProjection>>;
19
20    async fn list_pm_settlement_interest_events(
21        &self,
22    ) -> Result<Vec<crate::PmSettlementInterestEventProjection>>;
23
24    async fn list_pm_settlement_repayment_events(
25        &self,
26    ) -> Result<Vec<crate::PmSettlementRepaymentEventProjection>>;
27
28    async fn list_pm_recovery_plans(&self) -> Result<Vec<crate::PmRecoveryPlanProjection>>;
29
30    async fn list_pm_recovery_actions(&self) -> Result<Vec<crate::PmRecoveryActionProjection>>;
31
32    async fn pm_recovery_action_gate_counts(&self) -> Result<crate::PmRecoveryActionGateCounts>;
33}
34
35pub trait PmSettlementProjectionSyncReader: Send + Sync {
36    fn list_pm_settlement_pools_sync(&self) -> Result<Vec<crate::PmSettlementPoolProjection>>;
37
38    fn list_pm_settlement_accounts_sync(&self)
39        -> Result<Vec<crate::PmSettlementAccountProjection>>;
40
41    fn list_pm_settlement_events_sync(&self) -> Result<Vec<crate::PmSettlementEventProjection>>;
42
43    fn list_pm_settlement_interest_events_sync(
44        &self,
45    ) -> Result<Vec<crate::PmSettlementInterestEventProjection>>;
46
47    fn list_pm_settlement_repayment_events_sync(
48        &self,
49    ) -> Result<Vec<crate::PmSettlementRepaymentEventProjection>>;
50
51    fn list_pm_recovery_plans_sync(&self) -> Result<Vec<crate::PmRecoveryPlanProjection>>;
52
53    fn list_pm_recovery_actions_sync(&self) -> Result<Vec<crate::PmRecoveryActionProjection>>;
54}
55
56pub trait PmSettlementProjectionSyncWriter: Send + Sync {
57    fn apply_pm_settlement_projection_writes_sync(
58        &self,
59        writes: &[crate::PmSettlementProjectionWrite],
60    ) -> Result<()>;
61}