@gotake/gotake-sdk
Version:
SDK for interacting with GoTake blockchain contracts
139 lines • 4.64 kB
TypeScript
import { BigNumber } from 'ethers';
import { PaymentMethod, PurchaseParams, PurchaseResult } from '../types';
/**
* Utility functions for payment processing
*/
export declare class PaymentUtils {
/**
* Validate payment parameters
* @param params Purchase parameters
* @returns Validation result with errors if any
*/
static validatePurchaseParams(params: PurchaseParams): {
isValid: boolean;
errors: string[];
};
/**
* Check if address is valid Ethereum address
* @param address Address to check
* @returns True if address is valid
*/
static isValidAddress(address: string): boolean;
/**
* Format payment method for display
* @param method Payment method
* @returns Formatted string
*/
static formatPaymentMethod(method: PaymentMethod): string;
/**
* Get payment method icon/symbol
* @param method Payment method
* @returns Symbol string
*/
static getPaymentMethodSymbol(method: PaymentMethod): string;
/**
* Calculate total cost including gas estimate
* @param price Content price
* @param gasEstimate Estimated gas cost
* @param paymentMethod Payment method
* @returns Total cost breakdown
*/
static calculateTotalCost(price: BigNumber, gasEstimate: BigNumber, paymentMethod: PaymentMethod): {
contentPrice: BigNumber;
gasCost: BigNumber;
total: BigNumber;
isETHPayment: boolean;
};
/**
* Format purchase result for display
* @param result Purchase result
* @returns Formatted result object
*/
static formatPurchaseResult(result: PurchaseResult): {
transactionHash: string;
shortHash: string;
contentId: number;
purchaseTime: string;
viewCount: number;
validUntil: string;
gasUsed?: string;
};
/**
* Shorten transaction hash for display
* @param hash Full transaction hash
* @returns Shortened hash
*/
static shortenHash(hash: string): string;
/**
* Format timestamp for display
* @param timestamp BigNumber timestamp
* @returns Formatted date string
*/
static formatTimestamp(timestamp: BigNumber): string;
/**
* Calculate percentage savings
* @param originalPrice Original price
* @param discountedPrice Discounted price
* @returns Savings percentage
*/
static calculateSavings(originalPrice: BigNumber, discountedPrice: BigNumber): number;
/**
* Compare payment costs across different methods
* @param costs Array of cost objects with method and price
* @returns Sorted costs with savings information
*/
static comparePaymentCosts(costs: Array<{
method: PaymentMethod;
price: BigNumber;
gasEstimate?: BigNumber;
tokenSymbol?: string;
}>): Array<{
method: PaymentMethod;
price: BigNumber;
total: BigNumber;
tokenSymbol?: string;
savings?: number;
isRecommended?: boolean;
}>;
/**
* Generate payment summary text
* @param params Purchase parameters
* @param price Content price
* @returns Summary text
*/
static generatePaymentSummary(params: PurchaseParams, price: BigNumber): string;
/**
* Estimate gas for purchase transaction
* @param paymentMethod Payment method
* @param hasApproval Whether token approval is needed (for ERC20)
* @returns Estimated gas units
*/
static estimateGasUnits(paymentMethod: PaymentMethod, hasApproval?: boolean): number;
/**
* Check if sufficient balance for purchase
* @param balance User's balance
* @param requiredAmount Required amount
* @param gasEstimate Gas cost estimate
* @param paymentMethod Payment method
* @returns Balance check result
*/
static checkSufficientBalance(balance: BigNumber, requiredAmount: BigNumber, gasEstimate: BigNumber, paymentMethod: PaymentMethod): {
sufficient: boolean;
shortage?: BigNumber;
message: string;
};
/**
* Generate transaction receipt URL for block explorer
* @param transactionHash Transaction hash
* @param networkId Network ID
* @returns Block explorer URL
*/
static generateExplorerUrl(transactionHash: string, networkId: number): string;
/**
* Parse error messages from failed transactions
* @param error Error object
* @returns User-friendly error message
*/
static parseTransactionError(error: any): string;
}
//# sourceMappingURL=payment-utils.d.ts.map