UNPKG

cpay-kit

Version:

Composable Pay kit for merchants and users (Avalanche Fuji USDC payments)

77 lines (69 loc) 2.3 kB
import { ethers } from 'ethers'; interface PaymentPayload { merchantAddress: string; paymentId: string; amount: string; token: string; chainId: number; timestamp: number; } interface QRScanResult { success: boolean; data?: string; payload?: PaymentPayload; error?: string; } interface QRPayload { ma: string; pid: string; a: string; } /** * Generate a QR for a payment and listen for payment confirmation on-chain */ declare function generateQrAndListen(payload: QRPayload, provider: ethers.BrowserProvider): Promise<{ qrDataUrl: string; event: ethers.ContractEventPayload; eventArgs: any; receipt: ethers.TransactionReceipt; }>; /** * Scan a QR code, decode it to a PaymentPayload, and execute payment. * @param provider - Injected Ethereum provider (e.g., MetaMask) * @param account - User wallet address */ declare function scanDecodeAndPay(provider: ethers.BrowserProvider, account: string): Promise<QRPayload | null>; /** * Scan QR codes using camera */ declare function scanQr(elementId: string, onScan: (result: string) => void, { fps, qrbox }?: { fps?: number | undefined; qrbox?: { width: number; height: number; } | undefined; }): Promise<{ stop: () => Promise<void>; }>; /** * Generate QR code from PaymentPayload and return a Data URL * Browser-friendly version */ declare function generateQrFromPayload(payload: QRPayload): Promise<string>; interface QRInputResult { success: boolean; payload?: QRPayload; rawString?: string; error?: string; } declare function parseQRInput(embedding: string): QRInputResult; declare function encodePayment(payload: { paymentId: string; merchantAddress: string; amount: string; }): string; declare function decodePayment(base64String: string): QRPayload; declare function validateEVMAddress(address: string): boolean; declare function validatePaymentId(paymentId: string): boolean; declare function formatAmount(amount: string, decimals?: number): string; export { type PaymentPayload, type QRInputResult, type QRPayload, type QRScanResult, decodePayment, encodePayment, formatAmount, generateQrAndListen, generateQrFromPayload, parseQRInput, scanDecodeAndPay, scanQr, validateEVMAddress, validatePaymentId };