import { ConfigService } from "@nestjs/config";
import { PaymentIntentService } from "../payment-intents/payment-intent.service";
import { PrismaService } from "../prisma/prisma.service";
import type { ConfirmPublicCheckoutSessionDto } from "./dto/confirm-public-checkout-session.dto";
import type { CreateCheckoutSessionDto } from "./dto/create-checkout-session.dto";
export declare const PUBLIC_MAX_FAILED_ATTEMPTS = 5;
export declare class CheckoutSessionService {
    private readonly prisma;
    private readonly config;
    private readonly paymentIntents;
    constructor(prisma: PrismaService, config: ConfigService, paymentIntents: PaymentIntentService);
    create(merchantId: string, dto: CreateCheckoutSessionDto): Promise<{
        clientSecret: string;
        id: string;
        intentId: string;
        publicToken: string;
        url: string;
        status: import("@prisma/client").$Enums.CheckoutSessionStatus;
        returnUrl: string | null;
        cancelUrl: string | null;
        uiConfig: Record<string, unknown> | null;
        failedAttempts: number;
        expiresAt: Date;
        createdAt: Date;
    }>;
    findOne(merchantId: string, id: string): Promise<{
        id: string;
        intentId: string;
        publicToken: string;
        url: string;
        status: import("@prisma/client").$Enums.CheckoutSessionStatus;
        returnUrl: string | null;
        cancelUrl: string | null;
        uiConfig: Record<string, unknown> | null;
        failedAttempts: number;
        expiresAt: Date;
        createdAt: Date;
    }>;
    retrieveByPublicToken(publicToken: string): Promise<{
        id: string;
        status: import("@prisma/client").$Enums.CheckoutSessionStatus;
        expiresAt: Date;
        amount: string;
        currency: string;
        country: string;
        description: string | null;
        merchantName: string;
        uiConfig: Record<string, unknown> | null;
        returnUrl: string | null;
        cancelUrl: string | null;
        customer: {
            email: string | null;
            name: string | null;
            docNumber: string | null;
            phone: string | null;
            country: string | null;
        } | null;
    }>;
    confirmByPublicToken(publicToken: string, dto: ConfirmPublicCheckoutSessionDto): Promise<{
        status: import("@prisma/client").$Enums.PaymentIntentStatus;
        redirectUrl: string | null;
        qr: {} | null;
        returnUrl: string | null;
        cancelUrl: string | null;
    }>;
    listPaymentMethodsByPublicToken(publicToken: string): Promise<{
        platformId: string;
        name: string;
        method: import("@prisma/client").$Enums.PaymentMethod;
    }[]>;
    private loadPublicSessionOrThrow;
    private bumpFailed;
    private customerPatch;
    private markExpiredIfDue;
    private buildUrl;
    private toDto;
    private toCreatedDto;
}
