import { Database } from '@kit/supabase/database'; type SubscriptionObject = Database['public']['Tables']['subscriptions']; type SubscriptionUpdateParams = SubscriptionObject['Update']; /** * Represents an abstract class for handling billing webhook events. */ export abstract class BillingWebhookHandlerService { abstract verifyWebhookSignature(request: Request): Promise; abstract handleWebhookEvent( event: unknown, params: { onCheckoutSessionCompleted: ( subscription: SubscriptionObject['Row'], customerId: string, ) => Promise; onSubscriptionUpdated: ( subscription: SubscriptionUpdateParams, ) => Promise; onSubscriptionDeleted: (subscriptionId: string) => Promise; }, ): Promise; }