import type { ListPaymentsResponse, Payment } from "./types";
import type { CreatePaymentRequest, UpdatePaymentRequest, RefundPaymentRequest, CapturePaymentRequest } from "./types";
import { PaymentStatus, CardScheme } from "./enums";
import { type Amount, type CurrencyType } from "../../shared/types/index";
import type { ValidationResult } from "../../shared/types/index";
export declare class PaymentUtils {
    /**
     * Validate payment creation request using Zod
     */
    static validateCreatePaymentRequest(request: CreatePaymentRequest): ValidationResult<CreatePaymentRequest>;
    /**
     * Validate payment update request using Zod
     */
    static validateUpdatePaymentRequest(request: UpdatePaymentRequest): ValidationResult<UpdatePaymentRequest>;
    /**
     * Validate refund request using Zod
     */
    static validateRefundRequest(request: RefundPaymentRequest): ValidationResult<RefundPaymentRequest>;
    /**
     * Validate capture request using Zod
     */
    static validateCaptureRequest(request?: CapturePaymentRequest): ValidationResult<CapturePaymentRequest>;
    /**
     * Format amount for display
     */
    static formatAmount(amount: Amount, currency: CurrencyType): `${number} ${CurrencyType}`;
    /**
     * Parse amount from display format to smallest unit
     */
    static parseAmount(formattedAmount: string, currency: CurrencyType): number;
    /**
     * Check if payment is in a final state
     */
    static isPaymentFinal(status: PaymentStatus): boolean;
    /**
     * Check if payment can be refunded
     */
    static canRefundPayment(payment: Payment): boolean;
    /**
     * Check if payment can be captured
     */
    static canCapturePayment(payment: Payment): boolean;
    /**
     * Check if payment can be voided
     */
    static canVoidPayment(payment: Payment): boolean;
    /**
     * Get maximum refund amount for a payment
     */
    static getMaxRefundAmount(payment: Payment): number;
    /**
     * Get maximum capture amount for an authorized payment
     */
    static getMaxCaptureAmount(payment: Payment): number;
    /**
     * Check if card scheme matches expected CVV length
     */
    static validateCvcLength(cvc: string, scheme?: CardScheme): boolean;
    /**
     * Mask card number for display (show first 6 and last 4 digits)
     */
    static maskCardNumber(cardNumber: string): string;
    /**
     * Get last 4 digits of card number
     */
    static getCardLast4(cardNumber: string): string;
    /**
     * Build metadata query parameters for filtering
     */
    static buildMetadataQuery(metadata: Record<string, string>): Record<string, string>;
    /**
     * Sanitize payment description
     */
    static sanitizeDescription(description: string): string;
    /**
     * Generate idempotency key for payment
     */
    static generateIdempotencyKey(prefix?: string): string;
    /**
     * Check if payment method requires 3DS by default
     */
    static requires3DS(source: CreatePaymentRequest["source"]): boolean;
    /**
     * Parse and validate a Payment response, ensuring all data types are correct
     */
    static parsePayment(payment: unknown): Payment;
    static parseListPaymentsResponse(response: unknown): ListPaymentsResponse;
    /**
     * Parse and validate an array of Payment responses
     */
    static parsePayments(payments: unknown): Payment[];
    /**
     * Safely parse a Payment response with error handling
     */
    static safeParsePayment(payment: unknown): {
        success: boolean;
        data?: Payment;
        error?: string;
    };
    static parseCreatePaymentRequest(request: unknown): ValidationResult<CreatePaymentRequest>;
    /**
     * Parse and validate an UpdatePaymentRequest, returning sanitized data
     */
    static parseUpdatePaymentRequest(request: unknown): ValidationResult<UpdatePaymentRequest>;
}
export * as PaymentSchemas from "./validation/schemas";
//# sourceMappingURL=utils.d.ts.map