{"version":3,"file":"walletImplementationManager-BwtUTfjY.mjs","names":["CoreWagmiWalletImplementation"],"sources":["../src/wallet/implementation/wagmi-implementation.ts","../src/wallet/utils/walletImplementationManager.ts"],"sourcesContent":["/**\n * EVM Wagmi Wallet Implementation\n *\n * This file configures and exports the core WagmiWalletImplementation\n * with EVM-specific settings.\n */\nimport {\n  WagmiWalletImplementation as CoreWagmiWalletImplementation,\n  getWagmiConfigForRainbowKit,\n  type WagmiConfigChains,\n  type WagmiWalletConfig,\n} from '@openzeppelin/adapter-evm-core';\nimport type { UiKitConfiguration } from '@openzeppelin/ui-types';\n\nimport { evmNetworks } from '../../networks';\n\n/**\n * Generates the supported chains from EVM network configurations.\n * Only includes networks that have a viemChain property (ensuring wagmi compatibility).\n */\nconst getSupportedChainsFromNetworks = () => {\n  return evmNetworks\n    .filter((network) => network.viemChain)\n    .map((network) => network.viemChain!)\n    .filter((chain, index, self) => self.findIndex((c) => c.id === chain.id) === index);\n};\n\n/**\n * The supported chains for EVM adapter.\n */\nconst defaultSupportedChains = getSupportedChainsFromNetworks();\n\n/**\n * Create an EVM-configured WagmiWalletImplementation instance.\n *\n * @param initialUiKitConfig - Optional initial UI kit configuration\n * @returns A configured WagmiWalletImplementation instance\n */\nexport function createEvmWalletImplementation(\n  initialUiKitConfig?: UiKitConfiguration\n): CoreWagmiWalletImplementation {\n  const config: WagmiWalletConfig = {\n    chains: defaultSupportedChains,\n    networkConfigs: evmNetworks,\n    initialUiKitConfig,\n    logSystem: 'WagmiWalletImplementation',\n  };\n\n  const instance = new CoreWagmiWalletImplementation(config);\n\n  // Inject the RainbowKit config function\n  instance.setRainbowKitConfigFn(\n    async (uiKitConfiguration, chains, chainIdToNetworkIdMap, getRpcOverride) => {\n      return getWagmiConfigForRainbowKit(\n        uiKitConfiguration,\n        chains as WagmiConfigChains,\n        chainIdToNetworkIdMap,\n        getRpcOverride\n      );\n    }\n  );\n\n  return instance;\n}\n","import type { WagmiWalletImplementation } from '@openzeppelin/adapter-evm-core';\nimport type { UiKitConfiguration } from '@openzeppelin/ui-types';\nimport { appConfigService, logger } from '@openzeppelin/ui-utils';\n\nimport { createEvmWalletImplementation } from '../implementation/wagmi-implementation';\n\nlet walletImplementationInstance: WagmiWalletImplementation | undefined;\nlet walletImplementationPromise: Promise<WagmiWalletImplementation> | undefined;\n\nconst LOG_SYSTEM = 'EvmWalletImplementationManager';\n\n/**\n * Get or create the singleton instance of WagmiWalletImplementation.\n * This function ensures that the initialization logic runs only once.\n *\n * @returns A Promise resolving to the WagmiWalletImplementation singleton\n */\nexport async function getEvmWalletImplementation(): Promise<WagmiWalletImplementation> {\n  if (walletImplementationInstance) {\n    return walletImplementationInstance;\n  }\n\n  if (walletImplementationPromise) {\n    return walletImplementationPromise;\n  }\n\n  walletImplementationPromise = (async () => {\n    try {\n      logger.info(LOG_SYSTEM, 'Initializing WagmiWalletImplementation singleton (async)... ');\n      // Get the UI kit config from appConfigService for RainbowKit.\n      // This assumes appConfigService is initialized before this manager is first called.\n      const initialUiKitConfig = appConfigService.getTypedNestedConfig<UiKitConfiguration>(\n        'walletui',\n        'config'\n      );\n\n      // Use factory function for proper EVM configuration\n      const instance = createEvmWalletImplementation(initialUiKitConfig);\n      logger.info(LOG_SYSTEM, 'WagmiWalletImplementation singleton created (async).');\n      walletImplementationInstance = instance;\n      return instance;\n    } catch (error) {\n      logger.error(LOG_SYSTEM, 'Failed to initialize WagmiWalletImplementation (async):', error);\n      const fallbackInstance = createEvmWalletImplementation();\n      walletImplementationInstance = fallbackInstance;\n      return fallbackInstance;\n    }\n  })();\n\n  return walletImplementationPromise;\n}\n\n// Optional: A synchronous getter for cases where the instance is known to be initialized.\n// Use with caution, prefer the async getter.\nexport function getInitializedEvmWalletImplementation(): WagmiWalletImplementation | undefined {\n  if (!walletImplementationInstance) {\n    logger.warn(\n      LOG_SYSTEM,\n      'getInitializedEvmWalletImplementation called before instance was ready.'\n    );\n  }\n  return walletImplementationInstance;\n}\n"],"mappings":";;;;;;;;;;;;;;;AAoBA,MAAM,uCAAuC;AAC3C,QAAO,YACJ,QAAQ,YAAY,QAAQ,UAAU,CACtC,KAAK,YAAY,QAAQ,UAAW,CACpC,QAAQ,OAAO,OAAO,SAAS,KAAK,WAAW,MAAM,EAAE,OAAO,MAAM,GAAG,KAAK,MAAM;;;;;AAMvF,MAAM,yBAAyB,gCAAgC;;;;;;;AAQ/D,SAAgB,8BACd,oBAC+B;CAQ/B,MAAM,WAAW,IAAIA,0BAPa;EAChC,QAAQ;EACR,gBAAgB;EAChB;EACA,WAAW;EACZ,CAEyD;AAG1D,UAAS,sBACP,OAAO,oBAAoB,QAAQ,uBAAuB,mBAAmB;AAC3E,SAAO,4BACL,oBACA,QACA,uBACA,eACD;GAEJ;AAED,QAAO;;;;;ACxDT,IAAI;AACJ,IAAI;AAEJ,MAAM,aAAa;;;;;;;AAQnB,eAAsB,6BAAiE;AACrF,KAAI,6BACF,QAAO;AAGT,KAAI,4BACF,QAAO;AAGT,gCAA+B,YAAY;AACzC,MAAI;AACF,UAAO,KAAK,YAAY,+DAA+D;GASvF,MAAM,WAAW,8BANU,iBAAiB,qBAC1C,YACA,SACD,CAGiE;AAClE,UAAO,KAAK,YAAY,uDAAuD;AAC/E,kCAA+B;AAC/B,UAAO;WACA,OAAO;AACd,UAAO,MAAM,YAAY,2DAA2D,MAAM;GAC1F,MAAM,mBAAmB,+BAA+B;AACxD,kCAA+B;AAC/B,UAAO;;KAEP;AAEJ,QAAO;;AAKT,SAAgB,wCAA+E;AAC7F,KAAI,CAAC,6BACH,QAAO,KACL,YACA,0EACD;AAEH,QAAO"}