/**
 * @fileoverview Create Checkout Session Algorithm
 * @description Platform-agnostic algorithm for creating Stripe checkout sessions
 *
 * @version 0.1.0
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
import type { CreateCheckoutSessionRequest, CreateCheckoutSessionResponse, StripeBackConfig } from '@donotdev/core/server';
/**
 * Provider interface for Stripe checkout operations
 *
 * @version 0.1.0
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export interface StripeCheckoutProvider {
    createCheckoutSession(params: {
        priceId?: string;
        /** Amount in cents (dynamic pricing mode) */
        unitAmount?: number;
        /** Product name for Stripe checkout (dynamic pricing mode) */
        productName?: string;
        /** Currency code, defaults to 'eur' */
        currency?: string;
        customerEmail?: string;
        metadata: Record<string, string>;
        allowPromotionCodes: boolean;
        successUrl: string;
        cancelUrl: string;
        mode?: 'payment' | 'subscription';
    }): Promise<{
        id: string;
        url: string | null;
    }>;
}
/**
 * Provider interface for authentication operations
 *
 * @version 0.1.0
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export interface AuthCheckoutProvider {
    getUser(userId: string): Promise<{
        customClaims?: Record<string, any>;
    }>;
}
/**
 * Create checkout session algorithm
 *
 * @version 0.2.0
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export declare function createCheckoutAlgorithm(request: CreateCheckoutSessionRequest, stripeProvider: StripeCheckoutProvider, authProvider: AuthCheckoutProvider, billingConfig: StripeBackConfig): Promise<CreateCheckoutSessionResponse>;
