import { ReactNode } from 'react';

type PlanFeature = {
    id?: string;
    text: string;
    tooltip?: {
        title: string;
        cta: string;
        href: string;
    };
};
type Plan = {
    name: string;
    link?: string;
    price: {
        monthly: number | null;
        yearly: number | null;
        ids?: string[];
    };
    limits: {
        links: number;
        clicks: number;
        payouts: number;
        domains: number;
        tags: number;
        folders: number;
        groups: number;
        networkInvites: number;
        users: number;
        ai: number;
        api: number;
        retention: string;
    };
    tiers?: {
        [key: number]: {
            price: {
                monthly: number | null;
                yearly: number | null;
                ids: string[];
            };
            limits: {
                links: number;
                clicks: number;
            };
        };
    };
    featureTitle?: string;
    features?: PlanFeature[];
};
type PlanWithTier = Plan & {
    tier: number;
};
declare const NEW_BUSINESS_PRICE_IDS: string[];
declare const PLANS: Plan[];
declare const FREE_PLAN: Plan;
declare const PRO_PLAN: Plan;
declare const BUSINESS_PLAN: Plan;
declare const ADVANCED_PLAN: Plan;
declare const ENTERPRISE_PLAN: Plan;
declare const SELF_SERVE_PAID_PLANS: Plan[];
declare const FREE_WORKSPACES_LIMIT = 2;
declare const getPlanFromPriceId: (priceId: string) => PlanWithTier | null;
declare const getPlanLimits: (plan: PlanWithTier | null) => {
    links: number;
    clicks: number;
    payouts: number;
    domains: number;
    tags: number;
    folders: number;
    groups: number;
    networkInvites: number;
    users: number;
    ai: number;
    api: number;
    retention: string;
} | null;
declare const getPlanDetails: (plan: string) => Plan;
declare const getCurrentPlan: (plan: string) => Plan;
declare const getNextPlan: (plan?: string | null) => Plan;
declare const isDowngradePlan: ({ currentPlan, newPlan, currentTier, newTier, }: {
    currentPlan: string;
    newPlan: string;
    currentTier?: number | undefined;
    newTier?: number | undefined;
}) => boolean;
declare const getSuggestedPlan: ({ events, links, suggestFree, }: {
    events?: number | undefined;
    links?: number | undefined;
    suggestFree?: boolean | undefined;
}) => PlanWithTier;
declare const isLegacyBusinessPlan: ({ plan, payoutsLimit, }: {
    plan?: string | undefined;
    payoutsLimit?: number | undefined;
}) => boolean;

declare const PLAN_COMPARE_FEATURES: {
    category: string;
    href: string;
    features: {
        text: string | ((d: {
            id: string;
            plan: (typeof PLANS)[number];
        }) => ReactNode);
        href?: string;
        check?: boolean | {
            default?: boolean;
            free?: boolean;
            pro?: boolean;
            business?: boolean;
            advanced?: boolean;
            enterprise?: boolean;
        };
    }[];
}[];

export { ADVANCED_PLAN as A, BUSINESS_PLAN as B, ENTERPRISE_PLAN as E, FREE_PLAN as F, NEW_BUSINESS_PRICE_IDS as N, PLAN_COMPARE_FEATURES as P, SELF_SERVE_PAID_PLANS as S, PlanFeature as a, Plan as b, PlanWithTier as c, PLANS as d, PRO_PLAN as e, FREE_WORKSPACES_LIMIT as f, getPlanFromPriceId as g, getPlanLimits as h, getPlanDetails as i, getCurrentPlan as j, getNextPlan as k, isDowngradePlan as l, getSuggestedPlan as m, isLegacyBusinessPlan as n };
