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