import { t as Organization } from "./organization.types-BSBYM52i.js";
import { n as ResponseData } from "./responseData-U7Jr-usN.js";
import { t as PricingResult } from "./subscription.service-BxV0V_jO.js";
import { FastifyReply, FastifyRequest } from "fastify";
import { Stripe } from "stripe";

//#region src/controllers/stripe.controller.d.ts
type GetPricingBody = {
  priceIds: string[];
  promoCode?: string;
};
type GetPricingResult = ResponseData<PricingResult>;
/**
 * Simulate pricing for a given set of prices and a promotion code.
 *
 * @param request - The request object containing the price IDs and promotion code.
 * @param reply - The response object to send the simulated pricing result.
 */
declare const getPricing: (request: FastifyRequest<{
  Body: GetPricingBody;
}>, reply: FastifyReply) => Promise<void>;
type GetCheckoutSessionBody = {
  priceId: string;
  promoCode?: string;
};
type GetCheckoutSessionResult = ResponseData<{
  subscription: Stripe.Response<Stripe.Subscription>;
  clientSecret: string;
}>;
/**
 * Handles subscription creation or update with Stripe and returns a ClientSecret.
 */
declare const getSubscription: (request: FastifyRequest<{
  Body: GetCheckoutSessionBody;
}>, reply: FastifyReply) => Promise<void>;
type CancelSubscriptionData = Organization['plan'];
type CancelSubscriptionResult = ResponseData<CancelSubscriptionData>;
/**
 * Cancels a subscription for an organization.
 */
declare const cancelSubscription: (_request: FastifyRequest, reply: FastifyReply) => Promise<void>;
//#endregion
export { GetPricingResult as a, getSubscription as c, GetPricingBody as i, GetCheckoutSessionBody as n, cancelSubscription as o, GetCheckoutSessionResult as r, getPricing as s, CancelSubscriptionResult as t };
//# sourceMappingURL=stripe.controller-BbZYFfjA.d.ts.map