UNPKG

@sahabaplus/moyasar

Version:

A comprehensive TypeScript SDK for integrating with the Moyasar payment gateway

78 lines 2.74 kB
import type { Invoice, CreateInvoiceRequest, BulkCreateInvoiceRequest, DetailedInvoice } from "./types"; import { InvoiceStatus } from "./enums"; import type { ValidationResult, Amount, CurrencyType } from "../../shared/types/index"; import type { MetadataValidator } from "../../shared/types/index"; type InvoiceUtilsParams<T extends object> = { metadataValidator: MetadataValidator<T>; }; export declare class InvoiceUtils<T extends object> { private readonly metadataDeserializer; constructor(p: InvoiceUtilsParams<T>); /** * Validate single invoice creation request using Zod */ validateCreateInvoiceRequest(request: CreateInvoiceRequest<T>): ValidationResult<CreateInvoiceRequest<T>>; /** * Validate bulk invoice creation request using Zod */ validateBulkCreateRequest(request: BulkCreateInvoiceRequest<T>): ValidationResult<BulkCreateInvoiceRequest<T>>; /** * Convert amount to display format */ formatAmount(amount: Amount, currency: CurrencyType): `${number} ${CurrencyType}`; /** * Parse amount from display format to smallest unit */ parseAmount(formattedAmount: string, currency: CurrencyType): number; /** * Check if invoice is in a final state */ isInvoiceFinal(status: InvoiceStatus): boolean; /** * Check if invoice can be canceled */ canCancelInvoice(invoice: Invoice): boolean; /** * Check if invoice is expired */ isInvoiceExpired(invoice: Invoice): boolean; /** * Get time until expiry */ getTimeUntilExpiry(invoice: Invoice): number | null; /** * Get payment summary for an invoice */ getPaymentSummary(invoice: DetailedInvoice<T>): { total: number; paid: number; failed: number; pending: number; totalAmount: number; paidAmount: number; refundedAmount: number; }; /** * Build metadata query parameters for filtering */ buildMetadataQuery(metadata: T): Record<`metadata[${string}]`, string>; /** * Sanitize invoice description */ sanitizeDescription(description: string): string; /** * Generate invoice reference number */ generateReference(prefix?: string): string; /** * Parse and validate a CreateInvoiceRequest, returning sanitized data */ parseCreateInvoiceRequest(request: unknown): ValidationResult<CreateInvoiceRequest<T>>; /** * Parse and validate a BulkCreateInvoiceRequest, returning sanitized data */ parseBulkCreateRequest(request: unknown): ValidationResult<BulkCreateInvoiceRequest<T>>; parseInvoice(invoice: unknown): Invoice<T>; } export {}; //# sourceMappingURL=utils.d.ts.map