import Stripe from 'stripe';

let _stripe: Stripe | null = null;

export function getStripe(): Stripe {
  if (!_stripe) {
    _stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, {
      apiVersion: '2026-04-22.dahlia',
    });
  }
  return _stripe;
}

export const stripe = new Proxy({} as Stripe, {
  get(_t, prop: string | symbol) {
    return (getStripe() as unknown as Record<string | symbol, unknown>)[prop];
  },
});

export const PLANS = {
  starter: {
    name:      'Solo',
    priceId:   process.env.STRIPE_PRICE_STARTER ?? '',
    quota:     50,
    price_eur: 29,
  },
  essentiel: {
    name:      'Essentiel',
    priceId:   process.env.STRIPE_PRICE_ESSENTIEL ?? '',
    quota:     200,
    price_eur: 49,
  },
  pro: {
    name:      'Pro',
    priceId:   process.env.STRIPE_PRICE_PRO ?? '',
    quota:     500,
    price_eur: 79,
  },
  agency: {
    name:      'Agence',
    priceId:   process.env.STRIPE_PRICE_AGENCY ?? '',
    quota:     99999,
    price_eur: 199,
  },
} as const;

export type PlanKey = keyof typeof PLANS;
