{"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\n// Export default instance\nexport default MorphCreditSDK;\n\n// Export the button component\nexport { default as MorphCreditButton } from './button'; "]}