import { ConfigService } from "@nestjs/config";
import { PaymentIntentStatus } from "@prisma/client";
import { InvoiceService } from "../billing/invoice.service";
import { PrismaService } from "../prisma/prisma.service";
import { ProviderRouterService } from "../providers/provider-router.service";
import { WebhookEventService } from "../webhook-events/webhook-event.service";
import type { ConfirmPaymentIntentDto } from "./dto/confirm-payment-intent.dto";
import type { CreatePaymentIntentDto } from "./dto/create-payment-intent.dto";
export declare class PaymentIntentService {
    private readonly prisma;
    private readonly router;
    private readonly webhookEvents;
    private readonly config;
    private readonly invoices;
    constructor(prisma: PrismaService, router: ProviderRouterService, webhookEvents: WebhookEventService, config: ConfigService, invoices: InvoiceService);
    create(merchantId: string, dto: CreatePaymentIntentDto, idempotencyKey?: string): Promise<{
        id: string;
        merchantId: string;
        customerId: string | null;
        externalReference: string | null;
        amount: string;
        currency: string;
        country: string;
        description: string | null;
        requestedProvider: import("@prisma/client").$Enums.Provider | null;
        platformId: string | null;
        status: import("@prisma/client").$Enums.PaymentIntentStatus;
        metadata: Record<string, unknown> | null;
        expiresAt: Date | null;
        createdAt: Date;
        updatedAt: Date;
    }>;
    confirm(merchantId: string, intentId: string, dto: ConfirmPaymentIntentDto): Promise<{
        intent: {
            id: string;
            merchantId: string;
            customerId: string | null;
            externalReference: string | null;
            amount: string;
            currency: string;
            country: string;
            description: string | null;
            requestedProvider: import("@prisma/client").$Enums.Provider | null;
            platformId: string | null;
            status: import("@prisma/client").$Enums.PaymentIntentStatus;
            metadata: Record<string, unknown> | null;
            expiresAt: Date | null;
            createdAt: Date;
            updatedAt: Date;
        };
        attempt: {
            id: string;
            intentId: string;
            provider: import("@prisma/client").$Enums.Provider;
            providerPaymentId: string | null;
            method: import("@prisma/client").$Enums.PaymentMethod;
            platformId: string | null;
            status: import("@prisma/client").$Enums.PaymentAttemptStatus;
            responseCode: string | null;
            responseMessage: string | null;
            redirectUrl: string | null;
            qr: unknown;
            createdAt: Date;
        };
    }>;
    findOne(merchantId: string, id: string): Promise<{
        id: string;
        merchantId: string;
        customerId: string | null;
        externalReference: string | null;
        amount: string;
        currency: string;
        country: string;
        description: string | null;
        requestedProvider: import("@prisma/client").$Enums.Provider | null;
        platformId: string | null;
        status: import("@prisma/client").$Enums.PaymentIntentStatus;
        metadata: Record<string, unknown> | null;
        expiresAt: Date | null;
        createdAt: Date;
        updatedAt: Date;
    }>;
    syncFromProvider(merchantId: string, intentId: string): Promise<{
        id: string;
        merchantId: string;
        customerId: string | null;
        externalReference: string | null;
        amount: string;
        currency: string;
        country: string;
        description: string | null;
        requestedProvider: import("@prisma/client").$Enums.Provider | null;
        platformId: string | null;
        status: import("@prisma/client").$Enums.PaymentIntentStatus;
        metadata: Record<string, unknown> | null;
        expiresAt: Date | null;
        createdAt: Date;
        updatedAt: Date;
    }>;
    list(merchantId: string, opts?: {
        limit?: number;
        cursor?: string;
        status?: PaymentIntentStatus;
    }): Promise<{
        data: {
            id: string;
            merchantId: string;
            customerId: string | null;
            externalReference: string | null;
            amount: string;
            currency: string;
            country: string;
            description: string | null;
            requestedProvider: import("@prisma/client").$Enums.Provider | null;
            platformId: string | null;
            status: import("@prisma/client").$Enums.PaymentIntentStatus;
            metadata: Record<string, unknown> | null;
            expiresAt: Date | null;
            createdAt: Date;
            updatedAt: Date;
        }[];
        nextCursor: string | null;
    }>;
    private buildNotificationUrl;
    private toDecimal;
    private mapAttemptStatus;
    private mapIntentStatusFromAttempt;
    private emitForStatus;
    private eventData;
    private resolvePlatformMethod;
    private toAttemptDto;
    private toDto;
}
