import type Stripe from "stripe";
import { SubscriptionStatus } from "../../repository/billing/IBillingRepository";
import type { IBillingProviderService } from "./IBillingProviderService";
export declare class StripeBillingService implements IBillingProviderService {
    private stripe;
    constructor(stripe: Stripe);
    createCustomer(args: Parameters<IBillingProviderService["createCustomer"]>[0]): Promise<{
        stripeCustomerId: string;
    }>;
    createPaymentIntent(args: Parameters<IBillingProviderService["createPaymentIntent"]>[0]): Promise<{
        id: string;
        client_secret: string | null;
    }>;
    createOneTimeCheckout(args: {
        priceId: string;
        quantity: number;
        successUrl: string;
        cancelUrl: string;
        metadata?: Record<string, string>;
    }): Promise<{
        checkoutUrl: string | null;
        sessionId: string;
    }>;
    createSubscriptionCheckout(args: Parameters<IBillingProviderService["createSubscriptionCheckout"]>[0]): Promise<{
        checkoutUrl: string | null;
        sessionId: string;
    }>;
    createPrice(args: Parameters<IBillingProviderService["createPrice"]>[0]): Promise<{
        priceId: string;
    }>;
    handleSubscriptionCreation(subscriptionId: string): Promise<void>;
    handleSubscriptionCancel(subscriptionId: string): Promise<void>;
    handleSubscriptionUpdate(args: Parameters<IBillingProviderService["handleSubscriptionUpdate"]>[0]): Promise<void>;
    handleEndTrial(subscriptionId: string): Promise<void>;
    checkoutSessionIsPaid(paymentId: string): Promise<boolean>;
    getSubscriptionStatus(subscriptionId: string): Promise<SubscriptionStatus | null>;
    getCheckoutSession(checkoutSessionId: string): Promise<Stripe.Response<Stripe.Checkout.Session>>;
    getCustomer(customerId: string): Promise<Stripe.Response<Stripe.Customer | Stripe.DeletedCustomer>>;
    getSubscriptions(customerId: string): Promise<Stripe.Subscription[]>;
    updateCustomer(args: Parameters<IBillingProviderService["updateCustomer"]>[0]): Promise<void>;
    getPrice(priceId: string): Promise<Stripe.Response<Stripe.Price>>;
    extractSubscriptionDates(subscription: {
        start_date: number;
        trial_end?: number | null;
        cancel_at?: number | null;
    }): {
        subscriptionStart: Date;
        subscriptionTrialEnd: Date | null;
        subscriptionEnd: Date | null;
    };
    mapStripeStatusToCalStatus({ stripeStatus, subscriptionId, }: {
        stripeStatus: string;
        subscriptionId: string;
    }): SubscriptionStatus;
}
//# sourceMappingURL=StripeBillingService.d.ts.map