import { z } from 'zod'; import { CancelSubscriptionParamsSchema, CreateBillingCheckoutSchema, CreateBillingPortalSessionSchema, RetrieveCheckoutSessionSchema, } from '../schema'; import { ReportBillingUsageSchema } from '../schema/report-billing-usage.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; }>; }