cpay-kit
Version:
Composable Pay kit for merchants and users (Avalanche Fuji USDC payments)
77 lines (69 loc) • 2.3 kB
TypeScript
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 };