use crate::payments::error::Error;
use async_trait::async_trait;
use pbbson::Model;
#[async_trait]
pub trait PaymentProcessor<B: ToString>: Sync + Send {
#[allow(clippy::too_many_arguments)]
async fn create_checkout_session(
&self,
account: Model,
plan: Model,
plan_metadata_field: &str,
client_reference_id: Option<String>,
subscription_description: Option<String>,
success_url: Option<String>,
cancel_url: Option<String>,
) -> Result<Model, Error>;
async fn sync_account(&self, account: Model, accounts_bucket: B) -> Result<Model, Error>;
async fn sync_plan(
&self,
plan: Model,
plan_metadata_field: &str,
services_bucket: B,
plans_bucket: B,
) -> Result<Model, Error>;
}