UNPKG

morphcredit-merchant-sdk

Version:

MorphCredit Merchant SDK for BNPL integration

1 lines 50.2 kB
{"version":3,"sources":["../../../apps/config/addresses.json","../src/button.tsx","../src/index.ts"],"names":["useState","useEffect","useCallback","jsxs","Fragment","jsx","ErrorCodes","ethers"],"mappings":"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","file":"index.cjs","sourcesContent":["{\n \"scoreOracle\": \"0xd9Dc385246308FfBEBdEAc210F4c6B2E26Eb096d\",\n \"oracleSigner\": \"0xcB5478384f9E1179d2dA16B5aF092b886b96188D\",\n \"creditRegistry\": \"0x62179b92bD09Bfc6699646F3394A6595c1E12BB2\",\n \"lendingPool\": \"0x22D194Bb22f66731421C5F93163a7DFC05D2Ed5f\",\n \"mockStable\": \"0x4311bF09e2F08e9A55E9DE66EE51561C063A008E\",\n \"bnplFactory\": \"0x50e43053510E8f25280d335F5c7F30b15CF13965\",\n \"locFactory\": \"0xAf91111d8602FF57106Fc58caDb749b9fb1dF6EB\",\n \"bnplAgreementImpl\": \"0xA3f915A7a58A5260B4CFe781feC7761d0BD46c2b\"\n}","import React, { useState, useEffect, useCallback } from 'react';\nimport type {\n MorphCreditButtonProps,\n Offer,\n TxResult,\n MorphCreditError\n} from './types';\nimport { MorphCreditSDK } from './index';\n\nconst MorphCreditButton: React.FC<MorphCreditButtonProps> = ({\n amount,\n userAddress,\n onSuccess,\n onError,\n onOffersLoaded,\n onWalletConnect,\n disabled = false,\n className = '',\n style,\n children = 'Pay with MorphCredit',\n variant = 'primary',\n size = 'md',\n loading = false,\n showOffers = false\n}) => {\n const [sdk] = useState(() => new MorphCreditSDK({}, { enableLogging: true }));\n const [isConnecting, setIsConnecting] = useState(false);\n const [isProcessing, setIsProcessing] = useState(false);\n const [offers, setOffers] = useState<Offer[]>([]);\n const [, setSelectedOffer] = useState<Offer | null>(null);\n const [showOfferSelector, setShowOfferSelector] = useState(false);\n const [walletAddress, setWalletAddress] = useState<string | null>(userAddress || null);\n\n // Initialize SDK event listeners\n useEffect(() => {\n sdk.onOffersLoaded((loadedOffers: Offer[]) => {\n setOffers(loadedOffers);\n onOffersLoaded?.(loadedOffers);\n });\n\n sdk.onAgreementCreated((result: TxResult) => {\n setIsProcessing(false);\n onSuccess?.(result);\n });\n\n sdk.setErrorHandler((error: MorphCreditError) => {\n setIsConnecting(false);\n setIsProcessing(false);\n onError?.(error);\n });\n\n return () => {\n sdk.disconnectWallet();\n };\n }, [sdk, onOffersLoaded, onSuccess, onError]);\n\n // Update wallet address when userAddress prop changes\n useEffect(() => {\n setWalletAddress(userAddress || null);\n }, [userAddress]);\n\n const connectWallet = useCallback(async () => {\n try {\n setIsConnecting(true);\n const address = await sdk.connectWallet();\n setWalletAddress(address);\n onWalletConnect?.(address);\n } catch (error) {\n console.error('Failed to connect wallet:', error);\n onError?.(error as MorphCreditError);\n } finally {\n setIsConnecting(false);\n }\n }, [sdk, onWalletConnect, onError]);\n\n const handleClick = useCallback(async () => {\n if (disabled || loading || isConnecting || isProcessing) {\n return;\n }\n\n try {\n // If no wallet connected, connect first\n if (!walletAddress) {\n await connectWallet();\n return;\n }\n\n // Get offers for the user\n const userOffers = await sdk.getOffers({\n address: walletAddress,\n amount,\n includeFeatures: true\n });\n\n if (userOffers.length === 0) {\n throw new Error('No offers available for this amount');\n }\n\n if (showOffers && userOffers.length > 1) {\n setOffers(userOffers);\n setShowOfferSelector(true);\n } else {\n // Auto-select first offer\n const firstOffer = userOffers[0];\n await createAgreement(firstOffer.id);\n }\n } catch (error) {\n console.error('Error in button click:', error);\n onError?.(error as MorphCreditError);\n }\n }, [\n disabled,\n loading,\n isConnecting,\n isProcessing,\n walletAddress,\n amount,\n showOffers,\n sdk,\n connectWallet,\n onError\n ]);\n\n const createAgreement = useCallback(async (offerId: string) => {\n try {\n setIsProcessing(true);\n setShowOfferSelector(false);\n await sdk.createAgreement(offerId);\n } catch (error) {\n console.error('Failed to create agreement:', error);\n onError?.(error as MorphCreditError);\n }\n }, [sdk, onError]);\n\n const handleOfferSelect = useCallback((offer: Offer) => {\n setSelectedOffer(offer);\n createAgreement(offer.id);\n }, [createAgreement]);\n\n // Generate CSS classes\n const getButtonClasses = () => {\n const baseClasses = 'morphcredit-button';\n const variantClasses = {\n primary: 'morphcredit-button--primary',\n secondary: 'morphcredit-button--secondary',\n outline: 'morphcredit-button--outline'\n };\n const sizeClasses = {\n sm: 'morphcredit-button--sm',\n md: 'morphcredit-button--md',\n lg: 'morphcredit-button--lg'\n };\n const stateClasses = {\n disabled: disabled || loading || isConnecting || isProcessing ? 'morphcredit-button--disabled' : '',\n loading: loading || isConnecting || isProcessing ? 'morphcredit-button--loading' : ''\n };\n\n return [\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n stateClasses.disabled,\n stateClasses.loading,\n className\n ].filter(Boolean).join(' ');\n };\n\n // Generate button content\n const getButtonContent = () => {\n if (loading || isConnecting) {\n return (\n <>\n <span className=\"morphcredit-button__spinner\"></span>\n {isConnecting ? 'Connecting...' : 'Loading...'}\n </>\n );\n }\n if (isProcessing) {\n return (\n <>\n <span className=\"morphcredit-button__spinner\"></span>\n Processing...\n </>\n );\n }\n return children;\n };\n\n return (\n <>\n <button\n className={getButtonClasses()}\n style={style}\n onClick={handleClick}\n disabled={disabled || loading || isConnecting || isProcessing}\n type=\"button\"\n >\n {getButtonContent()}\n </button>\n\n {/* Offer Selector Modal */}\n {showOfferSelector && offers.length > 0 && (\n <div className=\"morphcredit-offer-selector\">\n <div className=\"morphcredit-offer-selector__overlay\" onClick={() => setShowOfferSelector(false)} />\n <div className=\"morphcredit-offer-selector__modal\">\n <div className=\"morphcredit-offer-selector__header\">\n <h3>Choose Your Payment Plan</h3>\n <button\n className=\"morphcredit-offer-selector__close\"\n onClick={() => setShowOfferSelector(false)}\n >\n ×\n </button>\n </div>\n <div className=\"morphcredit-offer-selector__content\">\n {offers.map((offer) => (\n <div\n key={offer.id}\n className=\"morphcredit-offer-option\"\n onClick={() => handleOfferSelect(offer)}\n >\n <div className=\"morphcredit-offer-option__header\">\n <h4>Tier {offer.tier} Plan</h4>\n <span className=\"morphcredit-offer-option__apr\">\n {(offer.apr * 100).toFixed(1)}% APR\n </span>\n </div>\n <div className=\"morphcredit-offer-option__details\">\n <p>\n {offer.installments} payments of $\n {(Number(offer.installmentAmount) / 1e6).toFixed(2)}\n </p>\n <p className=\"morphcredit-offer-option__total\">\n Total: ${(Number(offer.totalCost) / 1e6).toFixed(2)}\n </p>\n </div>\n {offer.features && (\n <div className=\"morphcredit-offer-option__features\">\n {offer.features.noLateFees && (\n <span className=\"morphcredit-offer-option__feature\">No Late Fees</span>\n )}\n {offer.features.earlyPayoff && (\n <span className=\"morphcredit-offer-option__feature\">Early Payoff</span>\n )}\n {offer.features.autoRepay && (\n <span className=\"morphcredit-offer-option__feature\">Auto Repay</span>\n )}\n </div>\n )}\n </div>\n ))}\n </div>\n </div>\n </div>\n )}\n\n {/* Default Styles */}\n <style>{`\n .morphcredit-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n border: none;\n border-radius: 8px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n text-decoration: none;\n position: relative;\n overflow: hidden;\n }\n\n .morphcredit-button:disabled {\n cursor: not-allowed;\n opacity: 0.6;\n }\n\n .morphcredit-button--primary {\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: white;\n box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);\n }\n\n .morphcredit-button--primary:hover:not(:disabled) {\n transform: translateY(-2px);\n box-shadow: 0 6px 20px rgba(102, 126, 234, 0.6);\n }\n\n .morphcredit-button--secondary {\n background: #f8f9fa;\n color: #495057;\n border: 2px solid #dee2e6;\n }\n\n .morphcredit-button--secondary:hover:not(:disabled) {\n background: #e9ecef;\n border-color: #adb5bd;\n }\n\n .morphcredit-button--outline {\n background: transparent;\n color: #667eea;\n border: 2px solid #667eea;\n }\n\n .morphcredit-button--outline:hover:not(:disabled) {\n background: #667eea;\n color: white;\n }\n\n .morphcredit-button--sm {\n padding: 8px 16px;\n font-size: 14px;\n min-height: 36px;\n }\n\n .morphcredit-button--md {\n padding: 12px 24px;\n font-size: 16px;\n min-height: 44px;\n }\n\n .morphcredit-button--lg {\n padding: 16px 32px;\n font-size: 18px;\n min-height: 52px;\n }\n\n .morphcredit-button__spinner {\n width: 16px;\n height: 16px;\n border: 2px solid transparent;\n border-top: 2px solid currentColor;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n }\n\n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n\n .morphcredit-offer-selector {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1000;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .morphcredit-offer-selector__overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(4px);\n }\n\n .morphcredit-offer-selector__modal {\n position: relative;\n background: white;\n border-radius: 12px;\n box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);\n max-width: 500px;\n width: 90%;\n max-height: 80vh;\n overflow-y: auto;\n }\n\n .morphcredit-offer-selector__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 24px;\n border-bottom: 1px solid #e9ecef;\n }\n\n .morphcredit-offer-selector__header h3 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: #212529;\n }\n\n .morphcredit-offer-selector__close {\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #6c757d;\n padding: 0;\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n transition: background-color 0.2s;\n }\n\n .morphcredit-offer-selector__close:hover {\n background: #f8f9fa;\n }\n\n .morphcredit-offer-selector__content {\n padding: 24px;\n }\n\n .morphcredit-offer-option {\n border: 2px solid #e9ecef;\n border-radius: 8px;\n padding: 20px;\n margin-bottom: 16px;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .morphcredit-offer-option:hover {\n border-color: #667eea;\n box-shadow: 0 4px 12px rgba(102, 126, 234, 0.1);\n }\n\n .morphcredit-offer-option__header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 12px;\n }\n\n .morphcredit-offer-option__header h4 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #212529;\n }\n\n .morphcredit-offer-option__apr {\n background: #e3f2fd;\n color: #1976d2;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 12px;\n font-weight: 600;\n }\n\n .morphcredit-offer-option__details {\n margin-bottom: 12px;\n }\n\n .morphcredit-offer-option__details p {\n margin: 4px 0;\n color: #495057;\n }\n\n .morphcredit-offer-option__total {\n font-weight: 600;\n color: #212529 !important;\n }\n\n .morphcredit-offer-option__features {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n }\n\n .morphcredit-offer-option__feature {\n background: #f8f9fa;\n color: #6c757d;\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 12px;\n font-weight: 500;\n }\n `}</style>\n </>\n );\n};\n\nexport default MorphCreditButton; ","import { ethers } from 'ethers';\nimport type {\n SDKConfig,\n SDKOptions,\n Offer,\n OfferRequest,\n TxResult,\n AgreementStatus\n} from './types';\n\n// Extend Window interface for ethereum\ndeclare global {\n interface Window {\n ethereum?: any;\n }\n}\n\n// Import addresses from config\nimport addresses from '../../../apps/config/addresses.json';\n\nexport enum ErrorCodes {\n WALLET_NOT_CONNECTED = 'WALLET_NOT_CONNECTED',\n WALLET_CONNECTION_FAILED = 'WALLET_CONNECTION_FAILED',\n WRONG_NETWORK = 'WRONG_NETWORK',\n INSUFFICIENT_CREDIT = 'INSUFFICIENT_CREDIT',\n SCORE_NOT_FOUND = 'SCORE_NOT_FOUND',\n SCORE_EXPIRED = 'SCORE_EXPIRED',\n AGREEMENT_FAILED = 'AGREEMENT_FAILED',\n AGREEMENT_NOT_FOUND = 'AGREEMENT_NOT_FOUND',\n AGREEMENT_EXPIRED = 'AGREEMENT_EXPIRED',\n NETWORK_ERROR = 'NETWORK_ERROR',\n RPC_ERROR = 'RPC_ERROR',\n TIMEOUT = 'TIMEOUT',\n USER_REJECTED = 'USER_REJECTED',\n INSUFFICIENT_BALANCE = 'INSUFFICIENT_BALANCE',\n INVALID_ADDRESS = 'INVALID_ADDRESS',\n INVALID_AMOUNT = 'INVALID_AMOUNT',\n INVALID_OFFER = 'INVALID_OFFER'\n}\n\nexport class MorphCreditError extends Error {\n code: string;\n details?: any;\n retryable: boolean;\n \n constructor(code: string, message: string, details?: any, retryable = false) {\n super(message);\n this.code = code;\n this.details = details;\n this.retryable = retryable;\n this.name = 'MorphCreditError';\n }\n}\n\nexport class MorphCreditSDK {\n private config: SDKConfig;\n private options: SDKOptions;\n private provider: ethers.BrowserProvider | null = null;\n private signer: ethers.JsonRpcSigner | null = null;\n private eventCallbacks: Map<string, Function[]> = new Map();\n private offersCache: Map<string, Offer> = new Map();\n\n constructor(config: Partial<SDKConfig> = {}, options: SDKOptions = {}) {\n // Resolve scoring service base URL with robust fallbacks suitable for browser builds\n const runtimeScoring = (\n (typeof globalThis !== 'undefined' && (globalThis as any).__MORPHCREDIT_SCORING_URL__) ||\n (typeof process !== 'undefined' && (process as any).env && (process as any).env.MORPHCREDIT_SCORING_URL) ||\n 'https://morphcredit.onrender.com'\n );\n\n this.config = {\n rpcUrl: 'https://rpc-holesky.morphl2.io',\n contracts: {\n scoreOracle: (addresses as any).scoreOracle,\n creditRegistry: (addresses as any).creditRegistry,\n lendingPool: (addresses as any).lendingPool,\n bnplFactory: (addresses as any).bnplFactory,\n },\n scoringService: runtimeScoring,\n networkId: 2810,\n gasLimit: 800000,\n confirmations: 1,\n ...config\n };\n\n this.options = {\n autoConnect: false,\n enableLogging: false,\n retryAttempts: 3,\n retryDelay: 1000,\n ...options\n };\n\n this.initializeProviders();\n }\n\n // Minimal ABIs\n private static readonly BNPL_FACTORY_ABI = [\n 'function createAgreement(address borrower,address merchant,uint256 principal,uint256 installments,uint256 apr) returns (address)',\n 'function hasRole(bytes32 role, address account) view returns (bool)',\n 'event AgreementCreated(address indexed borrower, address indexed merchant, address agreement, uint256 principal)'\n ];\n private static readonly BNPL_AGREEMENT_ABI = [\n 'function getAgreement() view returns (tuple(uint256 principal,address borrower,address merchant,uint256 installments,uint256 installmentAmount,uint256 apr,uint256 penaltyRate,uint256[] dueDates,uint8 status,uint256 paidInstallments,uint256 lastPaymentDate,uint256 gracePeriod,uint256 writeOffPeriod))',\n 'function getAllInstallments() view returns (tuple(uint256 id,uint256 amount,uint256 dueDate,bool isPaid,uint256 paidAt,uint256 penaltyAccrued)[])'\n ];\n\n private async getSigner(): Promise<ethers.JsonRpcSigner> {\n if (!this.provider) throw new MorphCreditError(ErrorCodes.WALLET_CONNECTION_FAILED, 'Provider not initialized');\n if (!this.signer) {\n this.signer = await this.provider.getSigner();\n }\n return this.signer;\n }\n\n private initializeProviders() {\n try {\n // Initialize ethers provider\n if (typeof window !== 'undefined' && window.ethereum) {\n this.provider = new ethers.BrowserProvider(window.ethereum);\n }\n\n if (this.options.enableLogging) {\n console.log('MorphCreditSDK initialized with config:', this.config);\n }\n } catch (error) {\n console.error('Failed to initialize providers:', error);\n }\n }\n\n async connectWallet(): Promise<string> {\n try {\n if (!this.provider) {\n throw new MorphCreditError(\n ErrorCodes.WALLET_CONNECTION_FAILED,\n 'Provider not initialized'\n );\n }\n\n this.signer = await this.provider.getSigner();\n const address = await this.signer.getAddress();\n\n if (this.options.enableLogging) {\n console.log('Wallet connected:', address);\n }\n\n this.triggerEvent('walletConnected', address);\n return address;\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error';\n throw new MorphCreditError(\n ErrorCodes.WALLET_CONNECTION_FAILED,\n `Failed to connect wallet: ${errorMessage}`,\n error\n );\n }\n }\n\n disconnectWallet(): void {\n this.signer = null;\n this.triggerEvent('walletDisconnected');\n }\n\n getWalletAddress(): string | null {\n return this.signer ? this.signer.address : null;\n }\n\n isWalletConnected(): boolean {\n return this.signer !== null;\n }\n\n async getOffers(request: OfferRequest): Promise<Offer[]> {\n try {\n if (!request.address) {\n throw new MorphCreditError(\n ErrorCodes.INVALID_ADDRESS,\n 'Address is required'\n );\n }\n\n if (!request.amount || request.amount <= 0) {\n throw new MorphCreditError(\n ErrorCodes.INVALID_AMOUNT,\n 'Amount must be greater than 0'\n );\n }\n\n const amountInWei = BigInt(Math.floor(request.amount * 1e6));\n // Call scoring service to get current score/tier\n const res = await fetch(`${this.config.scoringService.replace(/\\/$/, '')}/score`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ address: request.address }),\n });\n if (!res.ok) {\n throw new MorphCreditError(ErrorCodes.NETWORK_ERROR, `Scoring service error: ${res.status}`);\n }\n const json = await res.json();\n if (!json?.success || !json?.data?.scoring) {\n throw new MorphCreditError(ErrorCodes.SCORE_NOT_FOUND, 'Score response invalid');\n }\n const tier: 'A'|'B'|'C'|'D'|'E' = json.data.scoring.tier;\n // Map tier to APR bands\n const tierAprMap: Record<string, number[]> = {\n A: [0.10, 0.14],\n B: [0.14, 0.20],\n C: [0.20, 0.28],\n D: [0.28, 0.36],\n E: [0.36, 0.50],\n };\n const [aprLow, aprHigh] = tierAprMap[tier] || [0.25, 0.35];\n const aprChoices = [aprLow, (aprLow + aprHigh) / 2, aprHigh];\n const now = Math.floor(Date.now() / 1000);\n const biweekly = 14 * 24 * 60 * 60;\n const installments = 4;\n const offers: Offer[] = aprChoices.map((apr, idx) => {\n const totalCost = BigInt(Math.floor(Number(amountInWei) * (1 + apr)));\n const installmentAmount = BigInt(Number(totalCost) / installments);\n const id = `offer_${request.address}_${amountInWei}_${tier}_${idx}`;\n const offer: Offer = {\n id,\n principal: amountInWei,\n installments,\n installmentAmount,\n totalCost,\n apr,\n dueDates: [now + biweekly, now + biweekly * 2, now + biweekly * 3, now + biweekly * 4],\n merchant: request.address,\n status: 'available',\n tier,\n features: { earlyPayoff: true, autoRepay: true },\n };\n this.offersCache.set(id, offer);\n return offer;\n });\n\n if (this.options.enableLogging) {\n console.log('Generated offers:', offers);\n }\n\n this.triggerEvent('offersLoaded', offers);\n return offers;\n } catch (error) {\n if (error instanceof MorphCreditError) {\n throw error;\n }\n throw new MorphCreditError(\n ErrorCodes.NETWORK_ERROR,\n `Failed to get offers: ${error instanceof Error ? error.message : 'Unknown error'}`,\n error\n );\n }\n }\n\n // Removed mock offer generation\n\n async createAgreement(offerId: string, borrowerAddress?: string): Promise<TxResult> {\n try {\n const signer = await this.getSigner();\n const offer = this.offersCache.get(offerId);\n if (!offer) throw new MorphCreditError(ErrorCodes.INVALID_OFFER, 'Offer not found in cache');\n const borrower = borrowerAddress || (await signer.getAddress());\n const merchant = await signer.getAddress();\n const fac = new ethers.Contract(this.config.contracts.bnplFactory, MorphCreditSDK.BNPL_FACTORY_ABI, signer);\n // Check FACTORY_ROLE unless skipRoleCheck option is enabled\n if (!this.options.skipRoleCheck) {\n try {\n const FACTORY_ROLE = ethers.id('FACTORY_ROLE');\n const caller = await signer.getAddress();\n const hasRole: boolean = await fac.hasRole(FACTORY_ROLE, caller);\n if (!hasRole) {\n throw new MorphCreditError(ErrorCodes.AGREEMENT_FAILED, 'Merchant is not authorized (FACTORY_ROLE missing)');\n }\n } catch (e) {\n if (this.options.enableLogging) console.warn('Role check skipped due to error; set skipRoleCheck to true to silence', e);\n if (!this.options.skipRoleCheck) throw e;\n }\n }\n const aprBps = Math.floor(offer.apr * 10000);\n const tx = await fac.createAgreement(borrower, merchant, offer.principal, offer.installments, aprBps, {\n gasLimit: this.config.gasLimit,\n });\n const receipt = await tx.wait(this.config.confirmations);\n // Parse AgreementCreated event for agreement address\n let agreementAddress: string = tx.hash;\n try {\n const iface = new ethers.Interface(MorphCreditSDK.BNPL_FACTORY_ABI);\n const factoryAddr = this.config.contracts.bnplFactory.toLowerCase();\n const logs = (receipt?.logs ?? []).filter((l: any) => l?.address?.toLowerCase() === factoryAddr);\n for (const log of logs) {\n try {\n const parsed = iface.parseLog({ topics: log.topics, data: log.data });\n if (parsed?.name === 'AgreementCreated') {\n const args: any = parsed.args as any;\n agreementAddress = (args.agreement ?? args[2]) as string;\n break;\n }\n } catch {\n // skip non-matching logs\n }\n }\n } catch {}\n const txResult: TxResult = {\n success: receipt?.status === 1,\n txHash: tx.hash,\n agreementId: agreementAddress,\n blockNumber: receipt?.blockNumber ?? 0,\n gasUsed: Number(receipt?.gasUsed ?? 0n),\n gasPrice: (tx as any).gasPrice ?? 0n,\n receipt,\n };\n this.triggerEvent('agreementCreated', txResult);\n return txResult;\n } catch (error) {\n if (error instanceof MorphCreditError) {\n throw error;\n }\n throw new MorphCreditError(\n ErrorCodes.AGREEMENT_FAILED,\n `Failed to create agreement: ${error instanceof Error ? error.message : 'Unknown error'}`,\n error\n );\n }\n }\n\n async getAgreementStatus(agreementAddress: string): Promise<AgreementStatus> {\n try {\n if (!this.provider) throw new MorphCreditError(ErrorCodes.WALLET_CONNECTION_FAILED, 'Provider not initialized');\n const ag = new ethers.Contract(agreementAddress, MorphCreditSDK.BNPL_AGREEMENT_ABI, this.provider);\n const a = await ag.getAgreement();\n const installments = await ag.getAllInstallments();\n const next = installments.find((i: any) => !i.isPaid);\n const remaining = Number(a.installments) - Number(a.paidInstallments);\n const statusNum = Number(a.status);\n const status: AgreementStatus['status'] = statusNum === 2 ? 'completed' : statusNum === 3 ? 'defaulted' : statusNum === 4 ? 'written_off' : 'active';\n return {\n id: agreementAddress,\n status,\n paidInstallments: Number(a.paidInstallments),\n totalInstallments: Number(a.installments),\n nextDueDate: next ? Number(next.dueDate) : 0,\n nextAmount: next ? BigInt(next.amount) : BigInt(0),\n remainingBalance: BigInt(remaining) * BigInt(a.installmentAmount),\n lastPaymentDate: Number(a.lastPaymentDate),\n delinquencyDays: 0,\n };\n } catch (error) {\n throw new MorphCreditError(\n ErrorCodes.AGREEMENT_NOT_FOUND,\n `Failed to get agreement status: ${error instanceof Error ? error.message : 'Unknown error'}`,\n error\n );\n }\n }\n\n // Event handling\n onAgreementCreated(callback: (agreement: TxResult) => void): void {\n this.addEventCallback('agreementCreated', callback);\n }\n\n onOffersLoaded(callback: (offers: Offer[]) => void): void {\n this.addEventCallback('offersLoaded', callback);\n }\n\n onWalletConnected(callback: (address: string) => void): void {\n this.addEventCallback('walletConnected', callback);\n }\n\n onWalletDisconnected(callback: () => void): void {\n this.addEventCallback('walletDisconnected', callback);\n }\n\n private addEventCallback(event: string, callback: Function): void {\n if (!this.eventCallbacks.has(event)) {\n this.eventCallbacks.set(event, []);\n }\n this.eventCallbacks.get(event)!.push(callback);\n }\n\n private triggerEvent(event: string, data?: any): void {\n const callbacks = this.eventCallbacks.get(event);\n if (callbacks) {\n callbacks.forEach(callback => {\n try {\n callback(data);\n } catch (error) {\n console.error(`Error in event callback for ${event}:`, error);\n }\n });\n }\n }\n\n // Configuration methods\n updateConfig(config: Partial<SDKConfig>): void {\n this.config = { ...this.config, ...config };\n this.initializeProviders();\n }\n\n public updateOptions(options: Partial<SDKOptions>): void {\n this.options = { ...(this.options as SDKOptions), ...(options as SDKOptions) } as SDKOptions;\n }\n\n getConfig(): SDKConfig {\n return { ...this.config };\n }\n\n setErrorHandler(handler: (error: MorphCreditError) => void): void {\n this.addEventCallback('error', handler);\n }\n}\n\n// Export types\nexport type {\n SDKConfig,\n SDKOptions,\n Offer,\n OfferRequest,\n TxResult,\n AgreementStatus\n};\n\