import type { Invoice, CreateInvoiceRequest, BulkCreateInvoiceRequest, DetailedInvoice } from "./types";
import { InvoiceStatus } from "./enums";
import type { ValidationResult, Amount, CurrencyType } from "../../shared/types/index";
export declare class InvoiceUtils {
    /**
     * Validate single invoice creation request using Zod
     */
    static validateCreateInvoiceRequest(request: CreateInvoiceRequest): ValidationResult<CreateInvoiceRequest>;
    /**
     * Validate bulk invoice creation request using Zod
     */
    static validateBulkCreateRequest(request: BulkCreateInvoiceRequest): ValidationResult<BulkCreateInvoiceRequest>;
    /**
     * Convert amount to display format
     */
    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 invoice is in a final state
     */
    static isInvoiceFinal(status: InvoiceStatus): boolean;
    /**
     * Check if invoice can be canceled
     */
    static canCancelInvoice(invoice: Invoice): boolean;
    /**
     * Check if invoice is expired
     */
    static isInvoiceExpired(invoice: Invoice): boolean;
    /**
     * Get time until expiry
     */
    static getTimeUntilExpiry(invoice: Invoice): number | null;
    /**
     * Get payment summary for an invoice
     */
    static getPaymentSummary(invoice: DetailedInvoice): {
        total: number;
        paid: number;
        failed: number;
        pending: number;
        totalAmount: number;
        paidAmount: number;
        refundedAmount: number;
    };
    /**
     * Build metadata query parameters for filtering
     */
    static buildMetadataQuery(metadata: Record<string, string>): Record<string, string>;
    /**
     * Sanitize invoice description
     */
    static sanitizeDescription(description: string): string;
    /**
     * Generate invoice reference number
     */
    static generateReference(prefix?: string): string;
    /**
     * Parse and validate a CreateInvoiceRequest, returning sanitized data
     */
    static parseCreateInvoiceRequest(request: unknown): ValidationResult<CreateInvoiceRequest>;
    /**
     * Parse and validate a BulkCreateInvoiceRequest, returning sanitized data
     */
    static parseBulkCreateRequest(request: unknown): ValidationResult<BulkCreateInvoiceRequest>;
    static parseInvoice(invoice: unknown): Invoice;
}
//# sourceMappingURL=utils.d.ts.map