import { default as default_2 } from 'react';
import { JSX as JSX_2 } from 'react/jsx-runtime';

export declare const BigPAYGCard: ({ button, ...plan }: BigPAYGCardProps) => JSX_2.Element;

declare interface BigPAYGCardProps extends Plan {
    button: SubscriptionCardButton;
}

export declare const CTAWithButton: ({}: CTAWithButtonProps) => JSX_2.Element;

declare interface CTAWithButtonProps {
}

export declare const CTAWithLink: ({ text, link }: CTAWithLinkProps) => JSX_2.Element;

declare interface CTAWithLinkProps {
    text: string;
    link: {
        href: string;
        text: string;
        subText: string;
        external: boolean;
    };
}

declare type CurrencyCode = "USD" | "EUR" | "GBP";

export declare const CurrencySwitcher: ({ activeCurrency, setActiveCurrency, inModal }: CurrencySwitcherProps) => JSX_2.Element;

declare interface CurrencySwitcherProps {
    activeCurrency: CurrencyCode;
    setActiveCurrency: (currency: CurrencyCode) => void;
    inModal?: boolean;
}

declare interface CurrentSubscription {
    status: string;
    current_term_end: number;
    included_credits: number;
    included_credits_used: number;
    one_off_credits: number;
    plan: Plan;
}

declare type Feature = {
    id: string;
    name: string;
    value: string;
};

export declare const MethodAndCurrencySwitcher: ({ paymentMethod, setPaymentMethod, activeCurrency, setActiveCurrency, }: MethodAndCurrencySwitcherProps) => JSX_2.Element;

declare interface MethodAndCurrencySwitcherProps {
    paymentMethod: PaymentMethodType;
    setPaymentMethod: (value: PaymentMethodType) => void;
    activeCurrency: CurrencyCode;
    setActiveCurrency: (currency: CurrencyCode) => void;
}

export declare const PAYGCard: ({ button, ...plan }: PAYGCardProps) => JSX_2.Element;

declare interface PAYGCardProps extends Plan {
    button: SubscriptionCardButton;
}

export declare const PaymentMethodSwitcher: ({ setPaymentMethod, paymentMethod }: PaymentMethodTabsProps) => JSX_2.Element;

declare interface PaymentMethodTabsProps {
    setPaymentMethod: (value: PaymentMethodType) => void;
    paymentMethod: PaymentMethodType;
}

declare type PaymentMethodType = "payg" | "monthly" | "yearly";

declare type PeriodUnit = "month" | "year";

declare interface Plan {
    currency_code: CurrencyCode;
    description: string;
    metered: boolean;
    period_unit: PeriodUnit;
    item_price_id: string;
    tiers: Tier[];
    features: Feature[];
    name: string;
    quantity: number;
}

export declare const RichtextCTA: default_2.FC<RichtextCTAProps>;

declare interface RichtextCTAProps {
    richText: string;
}

export declare const SubscriptionCard: ({ highlighted, paymentMethod, handleOnSubmit, monthlyPlans, yearlyPlans, submitButtonText, currentSubscription, ...plan }: SubscriptionCardProps) => JSX_2.Element;

declare type SubscriptionCardButton = {
    text: string;
    onClick: (item_price_id: string, value: number) => void;
};

declare interface SubscriptionCardProps extends Plan {
    highlighted?: {
        label: string;
        isHighlighted: boolean;
    };
    paymentMethod: PaymentMethodType;
    handleOnSubmit: (item_price_id: string, value: number) => void;
    monthlyPlans: Plan[];
    yearlyPlans: Plan[];
    submitButtonText?: string;
    currentSubscription?: CurrentSubscription;
}

export declare const SubscriptionCardsGroup: ({ paymentMethod, bigPAYGCard, currency, apiKey, handlePAYGClick, handleMonthlyClick, handleYearlyClick, handleFormSubmit, }: SubscriptionCardsGroupProps) => JSX_2.Element;

declare interface SubscriptionCardsGroupProps {
    paymentMethod: PaymentMethodType;
    bigPAYGCard: boolean;
    currency: CurrencyCode;
    apiKey: string;
    handlePAYGClick: (item_price_id: string, value: number) => void;
    handleMonthlyClick: (item_price_id: string, value: number) => void;
    handleYearlyClick: (item_price_id: string, value: number) => void;
    handleFormSubmit: (data: {
        company_name: string;
        customer_name: string;
        customer_email: string;
        expected_volume: string;
    }) => Promise<{
        success: boolean;
    }>;
}

export declare const SubscriptionContactForm: ({ handleFormSubmit }: SubscriptionContactFormProps) => JSX_2.Element;

declare interface SubscriptionContactFormProps {
    handleFormSubmit: (data: {
        company_name: string;
        customer_name: string;
        customer_email: string;
        expected_volume: string;
    }) => Promise<{
        success: boolean;
    }>;
}

declare type Tier = {
    starting_unit: number;
    ending_unit: number | null;
    price: number;
    unit_price: number;
};

export declare const WebsiteSubscriptions: ({ apiKey, currency, baseUrl, apiUrl, cta }: WebsiteSubscriptionsProps) => JSX_2.Element;

declare interface WebsiteSubscriptionsProps {
    currency: CurrencyCode;
    apiKey: string;
    baseUrl: string;
    apiUrl: string;
    cta: {
        text: string;
        link: {
            href: string;
            text: string;
            subText: string;
            external: boolean;
        };
    };
}

export { }
