import { RawBodyRequest } from '@nestjs/common';
import { Request, Response } from 'express';
import { PaymentsService } from '../services/payments.service';
import { RecordPaymentDto } from '../dto/record-payment.dto';
import { ConfirmPaymentDto } from '../dto/confirm-payment.dto';
import { AuthenticatedUser } from '../../../common/decorators/current-user.decorator';
declare class InitiateOnlinePaymentDto {
    amount: number;
    currency?: string;
    providerCode?: string;
    successUrl?: string;
    failureUrl?: string;
}
export declare class PaymentsController {
    private readonly payments;
    constructor(payments: PaymentsService);
    record(itemId: string, dto: RecordPaymentDto, user: AuthenticatedUser): Promise<{
        id: string;
        currency: string;
        createdAt: Date;
        status: import(".prisma/client").$Enums.PaymentStatus;
        method: import(".prisma/client").$Enums.PaymentMethod;
        amount: import("@prisma/client/runtime/library").Decimal;
        paidAt: Date | null;
        fundCallItemId: string;
        reference: string | null;
        providerPayload: import("@prisma/client/runtime/library").JsonValue | null;
        receiptPdfUrl: string | null;
    }>;
    recordBankTransfer(itemId: string, dto: RecordPaymentDto, user: AuthenticatedUser): Promise<{
        id: string;
        currency: string;
        createdAt: Date;
        status: import(".prisma/client").$Enums.PaymentStatus;
        method: import(".prisma/client").$Enums.PaymentMethod;
        amount: import("@prisma/client/runtime/library").Decimal;
        paidAt: Date | null;
        fundCallItemId: string;
        reference: string | null;
        providerPayload: import("@prisma/client/runtime/library").JsonValue | null;
        receiptPdfUrl: string | null;
    }>;
    list(itemId: string, user: AuthenticatedUser): Promise<{
        id: string;
        currency: string;
        createdAt: Date;
        status: import(".prisma/client").$Enums.PaymentStatus;
        method: import(".prisma/client").$Enums.PaymentMethod;
        amount: import("@prisma/client/runtime/library").Decimal;
        paidAt: Date | null;
        fundCallItemId: string;
        reference: string | null;
        providerPayload: import("@prisma/client/runtime/library").JsonValue | null;
        receiptPdfUrl: string | null;
    }[]>;
    receipt(id: string, user: AuthenticatedUser, res: Response): Promise<void>;
    initiateOnline(itemId: string, dto: InitiateOnlinePaymentDto, user: AuthenticatedUser): Promise<{
        paymentId: string;
        provider: string;
        checkoutUrl: string;
    }>;
    confirm(id: string, dto: ConfirmPaymentDto, user: AuthenticatedUser): Promise<{
        id: string;
        currency: string;
        createdAt: Date;
        status: import(".prisma/client").$Enums.PaymentStatus;
        method: import(".prisma/client").$Enums.PaymentMethod;
        amount: import("@prisma/client/runtime/library").Decimal;
        paidAt: Date | null;
        fundCallItemId: string;
        reference: string | null;
        providerPayload: import("@prisma/client/runtime/library").JsonValue | null;
        receiptPdfUrl: string | null;
    }>;
    webhook(provider: string, req: RawBodyRequest<Request>, headers: Record<string, string>): Promise<{
        id: string;
        currency: string;
        createdAt: Date;
        status: import(".prisma/client").$Enums.PaymentStatus;
        method: import(".prisma/client").$Enums.PaymentMethod;
        amount: import("@prisma/client/runtime/library").Decimal;
        paidAt: Date | null;
        fundCallItemId: string;
        reference: string | null;
        providerPayload: import("@prisma/client/runtime/library").JsonValue | null;
        receiptPdfUrl: string | null;
    } | {
        ok: boolean;
        alreadyProcessed?: undefined;
        status?: undefined;
    } | {
        ok: boolean;
        alreadyProcessed: boolean;
        status?: undefined;
    } | {
        ok: boolean;
        status: string;
        alreadyProcessed?: undefined;
    }>;
    stubCheckout(token: string, res: Response): Promise<void>;
}
export {};
