/**
 * Payment REST Controller
 *
 * Handles Stripe payment endpoints: checkout session creation,
 * subscription queries, customer portal sessions, and webhook events.
 *
 * All endpoints except the webhook require authentication.
 * The webhook endpoint receives raw body for Stripe signature verification.
 *
 * @module controllers/payment/payment.controller
 */
import type { Request, Response } from 'express';
/**
 * Shape of an authenticated request with user info attached by auth middleware.
 * Replaces the former SupabaseAuthenticatedRequest from the deleted cloud module.
 */
export interface AuthenticatedRequest extends Request {
    user: {
        userId: string;
        email: string;
        plan?: string;
    };
}
/**
 * POST /api/payment/checkout
 *
 * Creates a Stripe Checkout Session for a subscription plan.
 * Requires auth. The authenticated user ID is attached
 * as session metadata for post-checkout correlation.
 *
 * @param req - Request with body: { planId, interval, successUrl, cancelUrl }
 * @param res - Response with { success, data: { checkoutUrl, sessionId } }
 */
export declare const handleCreateCheckout: (req: Request, res: Response, next: import("express").NextFunction) => Promise<void>;
/**
 * POST /api/payment/webhook
 *
 * Receives Stripe webhook events. Does NOT require auth —
 * authentication is done via Stripe signature verification.
 *
 * Expects raw body (application/json with raw Buffer) and the
 * Stripe-Signature header.
 *
 * @param req - Request with raw body and Stripe-Signature header
 * @param res - Response with 200 on success, 400 on failure
 */
export declare const handleWebhook: (req: Request, res: Response, next: import("express").NextFunction) => Promise<void>;
/**
 * GET /api/payment/subscription
 *
 * Returns the current subscription status for the authenticated user.
 * Requires auth.
 *
 * @param req - Authenticated request
 * @param res - Response with { success, data: SubscriptionInfo }
 */
export declare const handleGetSubscription: (req: Request, res: Response, next: import("express").NextFunction) => Promise<void>;
/**
 * POST /api/payment/portal
 *
 * Creates a Stripe Customer Portal session for subscription management.
 * Requires auth.
 *
 * @param req - Request with body: { returnUrl }
 * @param res - Response with { success, data: { portalUrl } }
 */
export declare const handleCreatePortal: (req: Request, res: Response, next: import("express").NextFunction) => Promise<void>;
//# sourceMappingURL=payment.controller.d.ts.map