{"version":3,"file":"etherscan-v2-DMXR3bdG-F7pOyUo2.mjs","names":[],"sources":["../../adapter-evm-core/dist/etherscan-v2-DMXR3bdG.mjs"],"sourcesContent":["import { n as transformAbiToSchema } from \"./transformer-0vQSxsqD.mjs\";\nimport { i as resolveExplorerConfig } from \"./explorer-DClCq_90.mjs\";\nimport { logger } from \"@openzeppelin/ui-utils\";\n\n//#region src/abi/etherscan-v2.ts\nconst ETHERSCAN_V2_BASE_URL = \"https://api.etherscan.io/v2/api\";\n/**\n* Builds a V2 API URL for Etherscan-compatible explorers\n*/\nfunction buildV2ApiUrl(chainId, module, action, params, apiKey) {\n\tconst url = new URL(ETHERSCAN_V2_BASE_URL);\n\turl.searchParams.append(\"chainid\", chainId.toString());\n\turl.searchParams.append(\"module\", module);\n\turl.searchParams.append(\"action\", action);\n\tObject.entries(params).forEach(([key, value]) => {\n\t\turl.searchParams.append(key, value);\n\t});\n\tif (apiKey) url.searchParams.append(\"apikey\", apiKey);\n\treturn url.toString();\n}\n/**\n* Checks if the network supports V2 API\n*\n* @param networkConfig - EVM-compatible network configuration (works with any ecosystem)\n*/\nfunction shouldUseV2Api(networkConfig) {\n\tif (!networkConfig.supportsEtherscanV2) return false;\n\treturn true;\n}\n/**\n* Fetches and parses an ABI from Etherscan V2 API using a contract address and network config.\n*\n* @param address - Contract address to fetch ABI for\n* @param networkConfig - EVM-compatible network configuration (works with any ecosystem)\n*/\nasync function loadAbiFromEtherscanV2(address, networkConfig) {\n\tconst explorerConfig = resolveExplorerConfig(networkConfig);\n\tconst url = buildV2ApiUrl(networkConfig.chainId, \"contract\", \"getabi\", { address }, explorerConfig.apiKey);\n\tlet response;\n\ttry {\n\t\tlogger.info(\"loadAbiFromEtherscanV2\", `Fetching ABI from Etherscan V2 API for address: ${address} on chain ${networkConfig.chainId}`);\n\t\tresponse = await fetch(url);\n\t} catch (networkError) {\n\t\tlogger.error(\"loadAbiFromEtherscanV2\", `Network error fetching ABI from Explorer V2 API: ${networkError}`);\n\t\tthrow new Error(`Network error fetching ABI: ${networkError.message}`);\n\t}\n\tif (!response.ok) {\n\t\tlogger.error(\"loadAbiFromEtherscanV2\", `Explorer V2 API request failed with status: ${response.status}`);\n\t\tthrow new Error(`Explorer V2 API request failed: ${response.status} ${response.statusText}`);\n\t}\n\tlet apiResult;\n\ttry {\n\t\tapiResult = await response.json();\n\t} catch (jsonError) {\n\t\tlogger.error(\"loadAbiFromEtherscanV2\", `Failed to parse Explorer V2 API response as JSON: ${jsonError}`);\n\t\tthrow new Error(\"Invalid JSON response received from Explorer V2 API.\");\n\t}\n\tif (apiResult.status !== \"1\") {\n\t\tlogger.warn(\"loadAbiFromEtherscanV2\", `Explorer V2 API error: Status ${apiResult.status}, Message: ${apiResult.message}, Result: ${apiResult.result}`);\n\t\tif (apiResult.message?.includes(\"NOTOK\")) {\n\t\t\tif (apiResult.result?.includes(\"Invalid API Key\")) throw new Error(`Invalid API key for Etherscan V2. Please check your API key configuration.`);\n\t\t\tif (apiResult.result?.includes(\"Contract source code not verified\")) throw new Error(`Contract not verified on ${networkConfig.name} explorer (address: ${address}). ABI not available. You can provide the contract's ABI manually.`);\n\t\t\tif (apiResult.result?.includes(\"Invalid chain\")) throw new Error(`Chain ID ${networkConfig.chainId} is not supported by Etherscan V2 API. Please check if this chain is available.`);\n\t\t}\n\t\tthrow new Error(`Explorer V2 API Error: ${apiResult.result || apiResult.message}`);\n\t}\n\tconst originalAbiString = apiResult.result;\n\tlet abi;\n\ttry {\n\t\tabi = JSON.parse(originalAbiString);\n\t\tif (!Array.isArray(abi)) throw new Error(\"Parsed ABI from Explorer V2 API is not an array.\");\n\t} catch (error) {\n\t\tlogger.error(\"loadAbiFromEtherscanV2\", `Failed to parse ABI JSON string from Explorer V2 API result: ${error}`);\n\t\tthrow new Error(`Invalid ABI JSON received from Explorer V2 API: ${error.message}`);\n\t}\n\tlogger.info(\"loadAbiFromEtherscanV2\", `Successfully parsed ABI for ${networkConfig.name} with ${abi.length} items using V2 API.`);\n\tconst contractName = `Contract_${address.substring(0, 6)}`;\n\treturn {\n\t\tschema: transformAbiToSchema(abi, contractName, address),\n\t\toriginalAbi: originalAbiString\n\t};\n}\n/**\n* Test connection to Etherscan V2 API\n*\n* @param networkConfig - EVM-compatible network configuration (works with any ecosystem)\n* @param apiKey - Optional API key for authentication\n*/\nasync function testEtherscanV2Connection(networkConfig, apiKey) {\n\tconst startTime = Date.now();\n\tif ((networkConfig.requiresExplorerApiKey ?? true) && !apiKey) return {\n\t\tsuccess: false,\n\t\terror: \"API key is required for testing connection to this explorer\"\n\t};\n\ttry {\n\t\tconst url = buildV2ApiUrl(networkConfig.chainId, \"proxy\", \"eth_blockNumber\", {}, apiKey);\n\t\tconst response = await fetch(url);\n\t\tconst latency = Date.now() - startTime;\n\t\tif (!response.ok) return {\n\t\t\tsuccess: false,\n\t\t\terror: `HTTP ${response.status}: ${response.statusText}`,\n\t\t\tlatency\n\t\t};\n\t\tconst data = await response.json();\n\t\tif (data.status === \"0\" && data.message) {\n\t\t\tif (data.result?.includes(\"Invalid API Key\")) return {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: \"Invalid API key. Please check your Etherscan API key.\",\n\t\t\t\tlatency\n\t\t\t};\n\t\t\tif (data.result?.includes(\"Invalid chain\")) return {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: `Chain ID ${networkConfig.chainId} is not supported by Etherscan V2 API.`,\n\t\t\t\tlatency\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: data.result || data.message,\n\t\t\t\tlatency\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tsuccess: true,\n\t\t\tlatency\n\t\t};\n\t} catch (error) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: error instanceof Error ? error.message : \"Connection test failed\",\n\t\t\tlatency: Date.now() - startTime\n\t\t};\n\t}\n}\n\n//#endregion\nexport { shouldUseV2Api as n, testEtherscanV2Connection as r, loadAbiFromEtherscanV2 as t };\n//# sourceMappingURL=etherscan-v2-DMXR3bdG.mjs.map"],"mappings":"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"}