@sahabaplus/moyasar
Version:
A comprehensive TypeScript SDK for integrating with the Moyasar payment gateway
78 lines • 2.74 kB
TypeScript
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