import * as react_jsx_runtime from 'react/jsx-runtime';
import { j as StripeSubscriptionInterface, P as PaymentMethodInterface, S as StripeCustomerInterface, a as StripeInvoiceInterface, M as MeterInterface, o as MeterSummaryInterface, d as StripePriceInterface, I as InvoiceStatus, g as StripeProductInterface, b as ProrationPreviewInterface, i as SubscriptionStatus, n as StripeUsageInterface, q as PromotionCodeValidationResult } from '../stripe-promotion-code.interface-BcJty0rv.js';
import { ReactNode } from 'react';
import '../ApiDataInterface-DPP8s46n.js';
import '../feature.interface-CIWxo8NP.js';

type SubscriptionSummaryCardProps = {
    subscriptions: StripeSubscriptionInterface[];
    loading?: boolean;
    error?: string;
    onManageClick: () => void;
};
declare function SubscriptionSummaryCard({ subscriptions, loading, error, onManageClick, }: SubscriptionSummaryCardProps): react_jsx_runtime.JSX.Element;

type PaymentMethodSummaryCardProps = {
    paymentMethods: PaymentMethodInterface[];
    defaultPaymentMethodId?: string;
    loading?: boolean;
    error?: string;
    onManageClick: () => void;
};
declare function PaymentMethodSummaryCard({ paymentMethods, defaultPaymentMethodId, loading, error, onManageClick, }: PaymentMethodSummaryCardProps): react_jsx_runtime.JSX.Element;

type CustomerInfoCardProps = {
    customer: StripeCustomerInterface | null;
    loading?: boolean;
    error?: string;
};
declare function CustomerInfoCard({ customer, loading, error }: CustomerInfoCardProps): react_jsx_runtime.JSX.Element;

type InvoicesSummaryCardProps = {
    invoices: StripeInvoiceInterface[];
    loading?: boolean;
    error?: string;
    onViewAllClick: () => void;
};
declare function InvoicesSummaryCard({ invoices, loading, error, onViewAllClick }: InvoicesSummaryCardProps): react_jsx_runtime.JSX.Element;

type BillingUsageSummaryCardProps = {
    meters: MeterInterface[];
    summaries: Record<string, MeterSummaryInterface | null>;
    loading?: boolean;
    error?: string;
    onViewDetailsClick: () => void;
};
declare function BillingUsageSummaryCard({ meters, summaries, loading, error, onViewDetailsClick, }: BillingUsageSummaryCardProps): react_jsx_runtime.JSX.Element;

declare function BillingDashboardContainer(): react_jsx_runtime.JSX.Element;

type BillingDetailModalProps = {
    open: boolean;
    onOpenChange: (open: boolean) => void;
    title: string;
    children: ReactNode;
    className?: string;
};
declare function BillingDetailModal({ open, onOpenChange, title, children, className }: BillingDetailModalProps): react_jsx_runtime.JSX.Element;

declare function StripeProvider({ children }: {
    children: ReactNode;
}): react_jsx_runtime.JSX.Element;
declare function isStripeConfigured(): boolean;

/**
 * Format price recurring interval for display
 * @param price - Stripe price object
 * @returns Formatted interval string (e.g., "/month", "/year", "/2 weeks", "one-time")
 */
declare function formatInterval(price: StripePriceInterface): string;
/**
 * Format currency amount from cents to localized currency string
 * @param amount - Amount in cents
 * @param currency - Currency code (e.g., "USD", "EUR", "GBP")
 * @returns Formatted currency string (e.g., "$9.99", "€9,99")
 */
declare function formatCurrency(amount: number | undefined, currency: string): string;

/**
 * Format a date to a localized date string
 * @param date - Date object or ISO string
 * @returns Formatted date string (e.g., "Jan 15, 2025")
 */
declare function formatDate(date: Date | string | undefined): string;

type BillingAlertBannerProps = {
    subscription: StripeSubscriptionInterface;
    onUpdatePayment?: () => void;
    onAddPayment?: () => void;
};
declare function BillingAlertBanner({ subscription, onUpdatePayment, onAddPayment }: BillingAlertBannerProps): react_jsx_runtime.JSX.Element | null;

declare function PaymentMethodsContainer(): react_jsx_runtime.JSX.Element;

type PaymentMethodCardProps = {
    paymentMethod: PaymentMethodInterface;
    onUpdate: () => void;
};
declare function PaymentMethodCard({ paymentMethod, onUpdate }: PaymentMethodCardProps): react_jsx_runtime.JSX.Element;

type PaymentMethodEditorProps = {
    open: boolean;
    onOpenChange: (open: boolean) => void;
    onSuccess: () => void;
};
declare function PaymentMethodEditor({ open, onOpenChange, onSuccess }: PaymentMethodEditorProps): react_jsx_runtime.JSX.Element;

type PaymentMethodFormProps = {
    onSuccess: () => void;
    onCancel: () => void;
    isLoading?: boolean;
};
declare function PaymentMethodForm({ onSuccess, onCancel, isLoading }: PaymentMethodFormProps): react_jsx_runtime.JSX.Element;

type PaymentMethodsListProps = {
    paymentMethods: PaymentMethodInterface[];
    onUpdate: () => void;
};
declare function PaymentMethodsList({ paymentMethods, onUpdate }: PaymentMethodsListProps): react_jsx_runtime.JSX.Element;

declare function InvoicesContainer(): react_jsx_runtime.JSX.Element;

type InvoiceDetailsProps = {
    invoice: StripeInvoiceInterface;
    open: boolean;
    onOpenChange: (open: boolean) => void;
    onInvoiceChange: () => void;
};
declare function InvoiceDetails({ invoice, open, onOpenChange, onInvoiceChange: _onInvoiceChange, }: InvoiceDetailsProps): react_jsx_runtime.JSX.Element;

type InvoicesListProps = {
    invoices: StripeInvoiceInterface[];
    onInvoicesChange: () => void;
};
declare function InvoicesList({ invoices, onInvoicesChange }: InvoicesListProps): react_jsx_runtime.JSX.Element;

type InvoiceStatusBadgeProps = {
    status: InvoiceStatus;
};
declare function InvoiceStatusBadge({ status }: InvoiceStatusBadgeProps): react_jsx_runtime.JSX.Element;

type PriceEditorProps = {
    productId: string;
    price?: StripePriceInterface;
    open: boolean;
    onOpenChange: (open: boolean) => void;
    onSuccess: () => void;
};
declare function PriceEditor({ productId, price, open, onOpenChange, onSuccess }: PriceEditorProps): react_jsx_runtime.JSX.Element;

type PricesListProps = {
    productId: string;
    onPricesChange: () => void;
};
declare function PricesList({ productId, onPricesChange }: PricesListProps): react_jsx_runtime.JSX.Element;

declare function ProductsAdminContainer(): react_jsx_runtime.JSX.Element;

type ProductEditorProps = {
    product?: StripeProductInterface;
    open: boolean;
    onOpenChange: (open: boolean) => void;
    onSuccess: () => void;
};
declare function ProductEditor({ product, open, onOpenChange, onSuccess }: ProductEditorProps): react_jsx_runtime.JSX.Element;

type ProductsListProps = {
    products: StripeProductInterface[];
    onProductsChange: () => void;
};
declare function ProductsList({ products, onProductsChange }: ProductsListProps): react_jsx_runtime.JSX.Element;

type SubscriptionsContainerProps = {
    onOpenWizard?: (subscription?: StripeSubscriptionInterface) => void;
    hasActiveRecurringSubscription?: boolean;
};
declare function SubscriptionsContainer({ onOpenWizard, hasActiveRecurringSubscription }: SubscriptionsContainerProps): react_jsx_runtime.JSX.Element;

type SubscriptionDetailsProps = {
    subscription: StripeSubscriptionInterface;
    open: boolean;
    onOpenChange: (open: boolean) => void;
    onSubscriptionChange: () => void;
    onChangePlan?: (subscription: StripeSubscriptionInterface) => void;
};
declare function SubscriptionDetails({ subscription, open, onOpenChange, onSubscriptionChange, onChangePlan, }: SubscriptionDetailsProps): react_jsx_runtime.JSX.Element;

type CancelSubscriptionDialogProps = {
    subscription: StripeSubscriptionInterface;
    open: boolean;
    onOpenChange: (open: boolean) => void;
    onSuccess: () => void;
};
declare function CancelSubscriptionDialog({ subscription, open, onOpenChange, onSuccess, }: CancelSubscriptionDialogProps): react_jsx_runtime.JSX.Element;

type SubscriptionsListProps = {
    subscriptions: StripeSubscriptionInterface[];
    onSubscriptionsChange: () => void;
    onChangePlan?: (subscription: StripeSubscriptionInterface) => void;
};
declare function SubscriptionsList({ subscriptions, onSubscriptionsChange, onChangePlan }: SubscriptionsListProps): react_jsx_runtime.JSX.Element;

type BillingInterval = "month" | "year";
type IntervalToggleProps = {
    value: BillingInterval;
    onChange: (interval: BillingInterval) => void;
    hasMonthly: boolean;
    hasYearly: boolean;
};
declare function IntervalToggle({ value, onChange, hasMonthly, hasYearly }: IntervalToggleProps): react_jsx_runtime.JSX.Element | null;

type PricingCardProps = {
    price: StripePriceInterface;
    isCurrentPlan?: boolean;
    isSelected?: boolean;
    isDisabled?: boolean;
    isLoading?: boolean;
    onSelect: (price: StripePriceInterface) => void;
};
declare function PricingCard({ price, isCurrentPlan, isSelected, isDisabled, isLoading, onSelect, }: PricingCardProps): react_jsx_runtime.JSX.Element;

type ProductPricingListProps = {
    products: StripeProductInterface[];
    selectedInterval: BillingInterval;
    currentPriceId?: string;
    selectedPriceId?: string;
    loadingPriceId?: string;
    loading?: boolean;
    onSelectPrice: (price: StripePriceInterface) => void;
    hideRecurringPrices?: boolean;
    hideOneTimePrices?: boolean;
};
declare function ProductPricingList({ products, selectedInterval, currentPriceId, selectedPriceId, loadingPriceId, loading, onSelectPrice, hideRecurringPrices, hideOneTimePrices, }: ProductPricingListProps): react_jsx_runtime.JSX.Element;

type ProductPricingRowProps = {
    product: StripeProductInterface;
    prices: StripePriceInterface[];
    currentPriceId?: string;
    selectedPriceId?: string;
    loadingPriceId?: string;
    onSelectPrice: (price: StripePriceInterface) => void;
};
declare function ProductPricingRow({ product, prices, currentPriceId, selectedPriceId, loadingPriceId, onSelectPrice, }: ProductPricingRowProps): react_jsx_runtime.JSX.Element | null;

type ProrationPreviewProps = {
    preview: ProrationPreviewInterface;
};
declare function ProrationPreview({ preview }: ProrationPreviewProps): react_jsx_runtime.JSX.Element;

type SubscriptionStatusBadgeProps = {
    status: SubscriptionStatus;
    cancelAtPeriodEnd?: boolean;
};
declare function SubscriptionStatusBadge({ status, cancelAtPeriodEnd }: SubscriptionStatusBadgeProps): react_jsx_runtime.JSX.Element;

type SubscriptionConfirmationProps = {
    price: StripePriceInterface;
    isLoading: boolean;
    onConfirm: () => void;
    onCancel: () => void;
};
declare function SubscriptionConfirmation({ price, isLoading, onConfirm, onCancel }: SubscriptionConfirmationProps): react_jsx_runtime.JSX.Element;

declare function UsageContainer(): react_jsx_runtime.JSX.Element | null;

type UsageSummaryCardProps = {
    meter: MeterInterface;
    summary: MeterSummaryInterface | null;
};
declare function UsageSummaryCard({ meter, summary }: UsageSummaryCardProps): react_jsx_runtime.JSX.Element;

type UsageHistoryTableProps = {
    usageRecords: StripeUsageInterface[];
};
declare function UsageHistoryTable({ usageRecords }: UsageHistoryTableProps): react_jsx_runtime.JSX.Element;

type UsageSummaryCardsProps = {
    meters: MeterInterface[];
    summaries: Record<string, MeterSummaryInterface | null>;
};
declare function UsageSummaryCards({ meters, summaries }: UsageSummaryCardsProps): react_jsx_runtime.JSX.Element;

type PromoCodeInputProps = {
    appliedCode: PromotionCodeValidationResult | null;
    isValidating: boolean;
    error: string | null;
    onApply: (code: string) => void;
    onRemove: () => void;
    disabled?: boolean;
};
declare function PromoCodeInput({ appliedCode, isValidating, error, onApply, onRemove, disabled, }: PromoCodeInputProps): react_jsx_runtime.JSX.Element;

export { BillingAlertBanner, BillingDashboardContainer, BillingDetailModal, type BillingInterval, BillingUsageSummaryCard, CancelSubscriptionDialog, CustomerInfoCard, IntervalToggle, type IntervalToggleProps, InvoiceDetails, InvoiceStatusBadge, InvoicesContainer, InvoicesList, InvoicesSummaryCard, PaymentMethodCard, PaymentMethodEditor, PaymentMethodForm, PaymentMethodSummaryCard, PaymentMethodsContainer, PaymentMethodsList, PriceEditor, PricesList, PricingCard, type PricingCardProps, ProductEditor, ProductPricingList, type ProductPricingListProps, ProductPricingRow, type ProductPricingRowProps, ProductsAdminContainer, ProductsList, PromoCodeInput, ProrationPreview, StripeProvider, SubscriptionConfirmation, SubscriptionDetails, SubscriptionStatusBadge, SubscriptionSummaryCard, SubscriptionsContainer, SubscriptionsList, UsageContainer, UsageHistoryTable, UsageSummaryCard, UsageSummaryCards, formatCurrency, formatDate, formatInterval, isStripeConfigured };
