import type StripeServer from "stripe";
import type { NarrowCalculatedCheckout, NarrowCompletedCheckout } from "./types.js";
import type { Token } from "@stripe/stripe-js/types/api/tokens.js";
import type { StripeCardElement, StripeCardNumberElement } from "@stripe/stripe-js";
export declare type PaymentStripeProviderData = {
    /**
     * SetupIntent generated on server
     */
    clientSecret?: StripeServer.SetupIntent["client_secret"];
    /**
     * Payment method token generated from stripe client
     */
    paymentMethodToken?: Token;
    /**
     * This field holds holdercard's name and address
     */
    billingData?: StripeServer.PaymentMethodCreateParams.BillingDetails;
    /**
     * Provide the status of the payment intent to your client,
     * so based on that, if it's require_action, we can trigger 3DS verification
     * before charging the user
     *
     * Otherwise even failed 3ds attempts, will be charged, and they may
     * cause future payments to be blocked
     */
    intentStatus?: StripeServer.SetupIntent["status"] | StripeServer.PaymentIntent["status"];
    subscription?: StripeServer.Subscription;
};
export declare type NarrowedStripeCalculatedCheckout = NarrowCalculatedCheckout<{
    provider: "stripe";
    externalData: PaymentStripeProviderData;
    clientData: {
        cardElement?: StripeCardElement | StripeCardNumberElement;
    };
}>;
export declare type NarrowedStripeCompletedCheckout = NarrowCompletedCheckout<{
    provider: "stripe";
    externalData: PaymentStripeProviderData;
    clientData: {
        cardElement?: StripeCardElement | StripeCardNumberElement;
    };
}>;
