mini_chat_sdk/
plugin_api.rs1use async_trait::async_trait;
2use uuid::Uuid;
3
4use crate::error::{MiniChatModelPolicyPluginError, PublishError};
5use crate::models::{PolicySnapshot, PolicyVersionInfo, UsageEvent, UserLimits};
6
7#[async_trait]
13pub trait MiniChatModelPolicyPluginClientV1: Send + Sync {
14 async fn get_current_policy_version(
16 &self,
17 user_id: Uuid,
18 ) -> Result<PolicyVersionInfo, MiniChatModelPolicyPluginError>;
19
20 async fn get_policy_snapshot(
22 &self,
23 user_id: Uuid,
24 policy_version: u64,
25 ) -> Result<PolicySnapshot, MiniChatModelPolicyPluginError>;
26
27 async fn get_user_limits(
29 &self,
30 user_id: Uuid,
31 policy_version: u64,
32 ) -> Result<UserLimits, MiniChatModelPolicyPluginError>;
33
34 async fn publish_usage(&self, payload: UsageEvent) -> Result<(), PublishError>;
39}