import { z } from 'zod'; import { CancelSubscriptionParamsSchema, CreateBillingCheckoutSchema, CreateBillingPortalSessionSchema, ReportBillingUsageSchema, RetrieveCheckoutSessionSchema, UpdateSubscriptionParamsSchema, } from '../schema'; export abstract class BillingStrategyProviderService { abstract createBillingPortalSession( params: z.infer, ): Promise<{ url: string; }>; abstract retrieveCheckoutSession( params: z.infer, ): Promise<{ checkoutToken: string | null; status: 'complete' | 'expired' | 'open'; isSessionOpen: boolean; customer: { email: string | null; }; }>; abstract createCheckoutSession( params: z.infer, ): Promise<{ checkoutToken: string; }>; abstract cancelSubscription( params: z.infer, ): Promise<{ success: boolean; }>; abstract reportUsage( params: z.infer, ): Promise<{ success: boolean; }>; abstract updateSubscription( params: z.infer, ): Promise<{ success: boolean; }>; abstract getPlanById(planId: string): Promise<{ id: string; name: string; interval: string; amount: number; }>; }