import type Stripe from "stripe";
export interface BillingService {
    checkoutSessionIsPaid(paymentId: string): Promise<boolean>;
    handleSubscriptionCancel(subscriptionId: string): Promise<void>;
    handleSubscriptionCreation(subscriptionId: string): Promise<void>;
    handleSubscriptionUpdate(args: {
        subscriptionId: string;
        subscriptionItemId: string;
        membershipCount: number;
    }): Promise<void>;
    handleEndTrial(subscriptionId: string): Promise<void>;
    createCustomer(args: {
        email: string;
        metadata?: Record<string, string>;
    }): Promise<{
        stripeCustomerId: string;
    }>;
    createPaymentIntent(args: {
        customerId: string;
        amount: number;
        metadata?: Record<string, string | number>;
    }): Promise<{
        id: string;
        client_secret: string | null;
    }>;
    createSubscriptionCheckout(args: {
        customerId: string;
        successUrl: string;
        cancelUrl: string;
        priceId: string;
        quantity: number;
        metadata?: Record<string, string | number>;
        mode?: "subscription" | "setup" | "payment";
        allowPromotionCodes?: boolean;
        customerUpdate?: {
            address?: "auto" | "never";
        };
        automaticTax?: {
            enabled: boolean;
        };
        discounts?: Array<{
            coupon: string;
        }>;
        subscriptionData?: {
            metadata?: Record<string, string | number>;
            trial_period_days?: number;
        };
    }): Promise<{
        checkoutUrl: string | null;
        sessionId: string;
    }>;
    createPrice(args: {
        amount: number;
        currency: string;
        interval: "month" | "year";
        nickname?: string;
        productId: string;
        metadata?: Record<string, string | number>;
    }): Promise<{
        priceId: string;
    }>;
    getPrice(priceId: string): Promise<Stripe.Price | null>;
    getSubscriptionStatus(subscriptionId: string): Promise<Stripe.Subscription.Status | null>;
    getCheckoutSession(checkoutSessionId: string): Promise<Stripe.Checkout.Session | null>;
    getCustomer(customerId: string): Promise<Stripe.Customer | Stripe.DeletedCustomer | null>;
    getSubscriptions(customerId: string): Promise<Stripe.Subscription[] | null>;
    updateCustomer(args: {
        customerId: string;
        email: string;
        userId?: number;
    }): Promise<void>;
}
//# sourceMappingURL=billing-service.d.ts.map