{"version":3,"file":"configuration-DSvdNI95-BYFdJHdw.mjs","names":[],"sources":["../../adapter-evm-core/dist/configuration-DSvdNI95.mjs"],"sourcesContent":["import { a as testEvmExplorerConnection, o as validateEvmExplorerConfig } from \"./explorer-DClCq_90.mjs\";\nimport { a as testEvmRpcConnection, o as validateEvmRpcEndpoint } from \"./rpc-BMyYpWRW.mjs\";\nimport { m as isEvmProviderKey } from \"./helpers-CYDHdjrw.mjs\";\nimport { isValidUrl, logger, userNetworkServiceConfigService } from \"@openzeppelin/ui-utils\";\n\n//#region src/configuration/access-control-indexer.ts\n/**\n* Access Control Indexer URL resolution for EVM-compatible networks.\n*\n* Follows the same resolution pattern as `rpc.ts`:\n* 1. User-configured URL from UserNetworkServiceConfigService\n* 2. Default URL from network configuration\n*\n* @module configuration/access-control-indexer\n*/\nconst LOG_SYSTEM = \"AccessControlIndexerResolver\";\n/**\n* Extracts the user-configured access control indexer URL from UserNetworkServiceConfigService.\n*\n* @param networkId - The network ID to get the access control indexer URL for\n* @returns The access control indexer URL string if configured, undefined otherwise\n*/\nfunction getUserAccessControlIndexerUrl(networkId) {\n\tconst svcCfg = userNetworkServiceConfigService.get(networkId, \"access-control-indexer\");\n\tif (svcCfg && typeof svcCfg === \"object\" && \"accessControlIndexerUrl\" in svcCfg) return svcCfg.accessControlIndexerUrl;\n}\n/**\n* Resolves the access control indexer URL for a given EVM network configuration.\n*\n* Priority order:\n* 1. User-configured access control indexer URL (from Network Settings dialog)\n* 2. Default `accessControlIndexerUrl` from the network configuration\n*\n* Unlike RPC resolution, the access control indexer is optional — returns `undefined`\n* instead of throwing when no URL is available.\n*\n* @param networkConfig - EVM-compatible network configuration\n* @returns The resolved access control indexer URL string, or undefined if not configured\n*/\nfunction resolveAccessControlIndexerUrl(networkConfig) {\n\tconst networkId = networkConfig.id;\n\tconst userUrl = getUserAccessControlIndexerUrl(networkId);\n\tif (userUrl) if (isValidUrl(userUrl)) {\n\t\tlogger.info(LOG_SYSTEM, `Using user-configured access control indexer URL for network ${networkId}`);\n\t\treturn userUrl;\n\t} else logger.warn(LOG_SYSTEM, `User-configured access control indexer URL for ${networkId} is invalid: ${userUrl}. Falling back.`);\n\tif (networkConfig.accessControlIndexerUrl) if (isValidUrl(networkConfig.accessControlIndexerUrl)) {\n\t\tlogger.debug(LOG_SYSTEM, `Using default access control indexer URL for network ${networkId}: ${networkConfig.accessControlIndexerUrl}`);\n\t\treturn networkConfig.accessControlIndexerUrl;\n\t} else logger.warn(LOG_SYSTEM, `Default access control indexer URL for ${networkId} is invalid: ${networkConfig.accessControlIndexerUrl}`);\n\tlogger.info(LOG_SYSTEM, `No access control indexer configured for network ${networkId}`);\n}\n\n//#endregion\n//#region src/configuration/network-services.ts\n/**\n* Validates a network service configuration for EVM-compatible networks.\n*\n* @param serviceId - The service identifier ('rpc', 'explorer', or 'contract-definitions')\n* @param values - The form values to validate\n* @returns True if valid, false otherwise\n*/\nasync function validateEvmNetworkServiceConfig(serviceId, values) {\n\tif (serviceId === \"rpc\") return validateEvmRpcEndpoint({\n\t\turl: String(values.rpcUrl || \"\"),\n\t\tisCustom: true\n\t});\n\tif (serviceId === \"explorer\") return validateEvmExplorerConfig({\n\t\texplorerUrl: values.explorerUrl ? String(values.explorerUrl) : void 0,\n\t\tapiUrl: values.apiUrl ? String(values.apiUrl) : void 0,\n\t\tapiKey: values.apiKey ? String(values.apiKey) : void 0,\n\t\tisCustom: true,\n\t\tapplyToAllNetworks: Boolean(values.applyToAllNetworks)\n\t});\n\tif (serviceId === \"access-control-indexer\") {\n\t\tif (values.accessControlIndexerUrl !== void 0 && values.accessControlIndexerUrl !== null && values.accessControlIndexerUrl !== \"\") return isValidUrl(String(values.accessControlIndexerUrl));\n\t\treturn true;\n\t}\n\tif (serviceId === \"contract-definitions\") {\n\t\tconst raw = values.defaultProvider;\n\t\tif (raw === void 0 || raw === null || raw === \"\") return true;\n\t\treturn isEvmProviderKey(raw);\n\t}\n\treturn true;\n}\n/**\n* Tests a network service connection for EVM-compatible networks.\n*\n* @param serviceId - The service identifier ('rpc', 'explorer', or 'contract-definitions')\n* @param values - The form values containing connection details\n* @param networkConfig - The network configuration (ecosystem-agnostic)\n* @returns Connection test result with success status, latency, and optional error\n*/\nasync function testEvmNetworkServiceConnection(serviceId, values, networkConfig) {\n\tif (serviceId === \"rpc\") return testEvmRpcConnection({\n\t\turl: String(values.rpcUrl || \"\"),\n\t\tisCustom: true\n\t});\n\tif (serviceId === \"explorer\") return testEvmExplorerConnection({\n\t\texplorerUrl: values.explorerUrl ? String(values.explorerUrl) : void 0,\n\t\tapiUrl: values.apiUrl ? String(values.apiUrl) : void 0,\n\t\tapiKey: values.apiKey ? String(values.apiKey) : void 0,\n\t\tisCustom: true,\n\t\tapplyToAllNetworks: Boolean(values.applyToAllNetworks)\n\t}, networkConfig);\n\tif (serviceId === \"access-control-indexer\") {\n\t\tconst accessControlIndexerUrl = values.accessControlIndexerUrl;\n\t\tif (!accessControlIndexerUrl || typeof accessControlIndexerUrl !== \"string\" || accessControlIndexerUrl.trim() === \"\") return { success: true };\n\t\tif (!isValidUrl(accessControlIndexerUrl)) return {\n\t\t\tsuccess: false,\n\t\t\terror: \"Invalid access control indexer URL format\"\n\t\t};\n\t\ttry {\n\t\t\tconst startTime = Date.now();\n\t\t\tconst response = await fetch(accessControlIndexerUrl, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t\tbody: JSON.stringify({ query: \"{ __typename }\" })\n\t\t\t});\n\t\t\tconst latency = Date.now() - startTime;\n\t\t\tif (!response.ok) return {\n\t\t\t\tsuccess: false,\n\t\t\t\tlatency,\n\t\t\t\terror: `HTTP ${response.status}: ${response.statusText}`\n\t\t\t};\n\t\t\tconst data = await response.json();\n\t\t\tif (data.errors) return {\n\t\t\t\tsuccess: false,\n\t\t\t\tlatency,\n\t\t\t\terror: `GraphQL errors: ${JSON.stringify(data.errors)}`\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tlatency\n\t\t\t};\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: error instanceof Error ? error.message : \"Unknown error\"\n\t\t\t};\n\t\t}\n\t}\n\treturn { success: true };\n}\n\n//#endregion\nexport { resolveAccessControlIndexerUrl as i, validateEvmNetworkServiceConfig as n, getUserAccessControlIndexerUrl as r, testEvmNetworkServiceConnection as t };\n//# sourceMappingURL=configuration-DSvdNI95.mjs.map"],"mappings":"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"}