{"version":3,"file":"helpers-CYDHdjrw-BSrAXJZD.cjs","names":["RuntimeDisposedError","isValidEvmAddress"],"sources":["../../adapter-evm-core/dist/helpers-CYDHdjrw.mjs"],"sourcesContent":["import { t as isValidEvmAddress } from \"./validation--Y5v5XOf.mjs\";\nimport { RuntimeDisposedError } from \"@openzeppelin/ui-types\";\n\n//#region src/types/providers.ts\n/**\n* EVM Contract Definition Provider keys and ordering\n* Avoid magic strings by using typed constants and a union type.\n*/\nconst EvmProviderKeys = {\n\tEtherscan: \"etherscan\",\n\tSourcify: \"sourcify\"\n};\nconst EVM_PROVIDER_ORDER_DEFAULT = [EvmProviderKeys.Etherscan, EvmProviderKeys.Sourcify];\nfunction isEvmProviderKey(value) {\n\treturn value === EvmProviderKeys.Etherscan || value === EvmProviderKeys.Sourcify;\n}\n\n//#endregion\n//#region ../adapter-runtime-utils/src/runtime-capability.ts\n/**\n* Disposal order for registered cleanup hooks.\n* Tests assert this sequence because downstream adapters rely on listeners and\n* subscriptions being removed before heavier resources are released.\n*/\nconst CLEANUP_STAGE_ORDER = [\n\t\"listener\",\n\t\"subscription\",\n\t\"general\",\n\t\"wallet\",\n\t\"rpc\"\n];\nconst runtimeCapabilityLifecycleSymbol = Symbol(\"runtimeCapabilityLifecycle\");\nfunction isPromiseLike(value) {\n\treturn typeof value === \"object\" && value !== null && \"then\" in value && typeof value.then === \"function\";\n}\nfunction safelyRunCleanup(cleanup) {\n\ttry {\n\t\tPromise.resolve(cleanup()).catch(() => void 0);\n\t} catch {}\n}\nfunction createRuntimeCapabilityLifecycle(capabilityName) {\n\tlet disposed = false;\n\tconst pending = /* @__PURE__ */ new Set();\n\tconst cleanups = {\n\t\tlistener: [],\n\t\tsubscription: [],\n\t\tgeneral: [],\n\t\twallet: [],\n\t\trpc: []\n\t};\n\treturn {\n\t\tisDisposed() {\n\t\t\treturn disposed;\n\t\t},\n\t\tdispose() {\n\t\t\tif (disposed) return;\n\t\t\tdisposed = true;\n\t\t\tconst disposalError = new RuntimeDisposedError(capabilityName);\n\t\t\tfor (const operation of [...pending]) operation.reject(disposalError);\n\t\t\tfor (const stage of CLEANUP_STAGE_ORDER) for (const cleanup of cleanups[stage]) safelyRunCleanup(cleanup);\n\t\t},\n\t\tregisterCleanup(stage, cleanup) {\n\t\t\tcleanups[stage].push(cleanup);\n\t\t},\n\t\ttrackPromise(promise) {\n\t\t\tif (disposed) return Promise.reject(new RuntimeDisposedError(capabilityName));\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tlet settled = false;\n\t\t\t\tconst operation = {\n\t\t\t\t\treject(error) {\n\t\t\t\t\t\tif (settled) return;\n\t\t\t\t\t\tsettled = true;\n\t\t\t\t\t\tpending.delete(operation);\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t},\n\t\t\t\t\tsettle() {\n\t\t\t\t\t\tif (settled) return;\n\t\t\t\t\t\tsettled = true;\n\t\t\t\t\t\tpending.delete(operation);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tpending.add(operation);\n\t\t\t\tpromise.then((result) => {\n\t\t\t\t\tif (settled) return;\n\t\t\t\t\toperation.settle();\n\t\t\t\t\tresolve(result);\n\t\t\t\t}, (error) => {\n\t\t\t\t\tif (settled) return;\n\t\t\t\t\toperation.settle();\n\t\t\t\t\treject(error);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t};\n}\nfunction createRuntimeCapabilityProxy(target, networkConfig, capabilityName, lifecycle) {\n\tconst capabilityTarget = target;\n\tObject.defineProperties(capabilityTarget, {\n\t\tnetworkConfig: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tget() {\n\t\t\t\tif (lifecycle.isDisposed()) throw new RuntimeDisposedError(capabilityName);\n\t\t\t\treturn networkConfig;\n\t\t\t}\n\t\t},\n\t\tdispose: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue() {\n\t\t\t\tlifecycle.dispose();\n\t\t\t}\n\t\t},\n\t\t[runtimeCapabilityLifecycleSymbol]: {\n\t\t\tconfigurable: false,\n\t\t\tenumerable: false,\n\t\t\tvalue: lifecycle\n\t\t}\n\t});\n\tlet capabilityProxy;\n\tcapabilityProxy = new Proxy(capabilityTarget, { get(currentTarget, property, receiver) {\n\t\tif (property === runtimeCapabilityLifecycleSymbol) return lifecycle;\n\t\tif (property === \"dispose\") return Reflect.get(currentTarget, property, receiver);\n\t\tconst value = Reflect.get(currentTarget, property, receiver);\n\t\tif (typeof value === \"function\") return (...args) => {\n\t\t\tif (lifecycle.isDisposed()) throw new RuntimeDisposedError(capabilityName);\n\t\t\tconst result = Reflect.apply(value, capabilityProxy, args);\n\t\t\treturn isPromiseLike(result) ? lifecycle.trackPromise(Promise.resolve(result)) : result;\n\t\t};\n\t\tif (lifecycle.isDisposed()) throw new RuntimeDisposedError(capabilityName);\n\t\treturn value;\n\t} });\n\treturn capabilityProxy;\n}\n/**\n* Creates a minimal runtime capability shell that can be extended with methods\n* while still enforcing disposal semantics and pending-promise rejection.\n*/\nfunction withRuntimeCapability$1(networkConfig, capabilityName = \"capability\") {\n\treturn createRuntimeCapabilityProxy({}, networkConfig, capabilityName, { ...createRuntimeCapabilityLifecycle(capabilityName) });\n}\n/**\n* Wraps an existing capability object with runtime disposal guards.\n* Optional cleanup hooks are registered on the same lifecycle so composed\n* services can tear down external resources alongside the capability.\n*/\nfunction guardRuntimeCapability$1(capability, networkConfig, capabilityName, onDispose, cleanupStage = \"general\") {\n\tconst lifecycle = createRuntimeCapabilityLifecycle(capabilityName);\n\tif (onDispose) lifecycle.registerCleanup(cleanupStage, onDispose);\n\treturn createRuntimeCapabilityProxy(capability, networkConfig, capabilityName, lifecycle);\n}\n/**\n* Registers cleanup work on a runtime capability lifecycle.\n* No-op when the capability was not created through the runtime lifecycle helpers.\n*/\nfunction registerRuntimeCapabilityCleanup$1(capability, cleanup, cleanupStage = \"general\") {\n\tcapability[runtimeCapabilityLifecycleSymbol]?.registerCleanup(cleanupStage, cleanup);\n}\n\n//#endregion\n//#region src/shared/completion.ts\n/**\n* Fail-closed wiring bug: `transactionOptions.completion` and SignAndBroadcast\n* `result.completion` disagree. Shared across capabilities — not\n* `IdentityOperationFailed` (IRS-domain).\n*\n* Because the write has already been submitted by the time the disagreement is detected, the\n* error carries whatever submission ids were available (`txHash` / `relayerTxId`). Without them\n* a caller sees a thrown error with no way to find the transaction it belongs to.\n*/\nvar WriteCompletionDisagreementError = class extends Error {\n\tcode = \"WRITE_COMPLETION_DISAGREEMENT\";\n\t/** Tx hash reported by the strategy, when known. */\n\ttxHash;\n\t/** Relayer submission id reported by the strategy, when known. */\n\trelayerTxId;\n\tconstructor(optionsCompletion, resultCompletion, ids = {}) {\n\t\tconst idSuffix = [ids.txHash !== void 0 ? ` txHash=${ids.txHash}` : \"\", ids.relayerTxId !== void 0 ? ` relayerTxId=${ids.relayerTxId}` : \"\"].join(\"\");\n\t\tsuper(`Write completion signals disagree: options=${String(optionsCompletion)} result=${String(resultCompletion)}${idSuffix}`);\n\t\tthis.optionsCompletion = optionsCompletion;\n\t\tthis.resultCompletion = resultCompletion;\n\t\tthis.name = \"WriteCompletionDisagreementError\";\n\t\tthis.txHash = ids.txHash;\n\t\tthis.relayerTxId = ids.relayerTxId;\n\t}\n};\nconst WRITE_COMPLETIONS = new Set([\"submitted\", \"confirmed\"]);\nfunction asWriteCompletion(value) {\n\tif (typeof value === \"string\" && WRITE_COMPLETIONS.has(value)) return value;\n}\n/**\n* Merge dual completion signals per locked truth table.\n*\n* @throws {WriteCompletionDisagreementError} when options and result disagree\n*         (either direction: confirmed↔submitted). // INV-9, INV-10\n*/\nfunction resolveWriteCompletion(input) {\n\tconst { optionsCompletion, resultCompletion, txHash, relayerTxId } = input;\n\tif (optionsCompletion !== void 0 && resultCompletion !== void 0 && optionsCompletion !== resultCompletion) throw new WriteCompletionDisagreementError(optionsCompletion, resultCompletion, {\n\t\t...txHash !== void 0 ? { txHash } : {},\n\t\t...relayerTxId !== void 0 ? { relayerTxId } : {}\n\t});\n\treturn optionsCompletion ?? resultCompletion ?? \"confirmed\";\n}\n/**\n* Read top-level `transactionOptions.completion` when executionConfig is relayer\n* and the value is `'submitted' | 'confirmed'`. Ignores nested plugin namespaces.\n* Non-relayer configs → undefined.\n*/\nfunction readOptionsCompletion(executionConfig) {\n\tif (executionConfig.method !== \"relayer\") return;\n\tconst options = executionConfig.transactionOptions;\n\tif (options === void 0 || typeof options !== \"object\" || options === null) return;\n\treturn asWriteCompletion(options.completion);\n}\n/**\n* Narrow unknown SignAndBroadcast.result into typed meta.\n* Accepts only object shapes; unknown keys ignored; invalid completion strings ignored\n* (treated as absent — do not invent 'submitted').\n*/\nfunction parseSignAndBroadcastResult(result) {\n\tif (typeof result !== \"object\" || result === null) return {};\n\tconst record = result;\n\tconst completion = asWriteCompletion(record.completion);\n\tconst relayerTxId = typeof record.relayerTxId === \"string\" && record.relayerTxId.length > 0 ? record.relayerTxId : void 0;\n\treturn {\n\t\t...completion !== void 0 ? { completion } : {},\n\t\t...relayerTxId !== void 0 ? { relayerTxId } : {}\n\t};\n}\n/**\n* Choose OperationResult.id: when completion === 'submitted' and relayerTxId is a\n* non-empty string, return relayerTxId; otherwise return txHash.\n*/\nfunction preferSubmissionId(params) {\n\tif (params.completion === \"submitted\" && params.relayerTxId !== void 0 && params.relayerTxId.length > 0) return params.relayerTxId;\n\treturn params.txHash;\n}\n\n//#endregion\n//#region src/capabilities/helpers.ts\n/**\n* Fail fast at the capability boundary on a malformed deployment address.\n*\n* RI factories accept deployment-specific contract addresses that are later cast to\n* `0x${string}` for viem reads/writes. Validating here turns misconfiguration into a clear\n* adapter-side error instead of an opaque downstream viem failure.\n*\n* @param label - Human-readable field name for the error message (e.g. `tokenAddress`).\n* @param address - The address to validate.\n*/\nfunction assertValidAddress(label, address) {\n\tif (!isValidEvmAddress(address)) throw new Error(`Invalid ${label}: '${address}' is not a valid EVM address.`);\n}\n/**\n* Adapt an injected {@link SignAndBroadcast} into the {@link CapabilityExecutor} that\n* services delegate to.\n*\n* Preserves strategy `result`, resolves dual-source completion (options ∪ result),\n* and prefers `relayerTxId` for submit-only `{ id }`. Does **not** invoke\n* `transactionOptions.onSubmitted` (strategy owns that hook — CONVENTION).\n*\n* Confirmed / default path returns `{ id: txHash, completion: 'confirmed' }`\n* (id matches today's `{ id: txHash }` when no submit-only signal).\n*\n* @throws {WriteCompletionDisagreementError} when options and result disagree\n*/\nfunction adaptSignAndBroadcast(signAndBroadcast) {\n\treturn async (txData, executionConfig, onStatusChange, runtimeApiKey) => {\n\t\tconst sab = await signAndBroadcast(txData, executionConfig, onStatusChange ?? (() => {}), runtimeApiKey);\n\t\tconst optionsCompletion = readOptionsCompletion(executionConfig);\n\t\tconst meta = parseSignAndBroadcastResult(sab.result);\n\t\tconst completion = resolveWriteCompletion({\n\t\t\toptionsCompletion,\n\t\t\tresultCompletion: meta.completion,\n\t\t\ttxHash: sab.txHash,\n\t\t\t...meta.relayerTxId !== void 0 ? { relayerTxId: meta.relayerTxId } : {}\n\t\t});\n\t\treturn {\n\t\t\tid: preferSubmissionId({\n\t\t\t\tcompletion,\n\t\t\t\ttxHash: sab.txHash,\n\t\t\t\trelayerTxId: meta.relayerTxId\n\t\t\t}),\n\t\t\tcompletion\n\t\t};\n\t};\n}\nfunction asTypedEvmNetworkConfig(config) {\n\tif (config.ecosystem !== \"evm\") throw new Error(`Expected an EVM network configuration, received ${config.ecosystem}.`);\n\treturn config;\n}\nfunction withRuntimeCapability(networkConfig, capabilityName = \"capability\") {\n\treturn withRuntimeCapability$1(networkConfig, capabilityName);\n}\nfunction guardRuntimeCapability(capability, networkConfig, capabilityName, onDispose, cleanupStage = \"general\") {\n\treturn guardRuntimeCapability$1(capability, networkConfig, capabilityName, onDispose, cleanupStage);\n}\nfunction registerRuntimeCapabilityCleanup(capability, cleanup, cleanupStage = \"general\") {\n\tregisterRuntimeCapabilityCleanup$1(capability, cleanup, cleanupStage);\n}\nfunction getEvmSupportedExecutionMethods() {\n\treturn Promise.resolve([\n\t\t{\n\t\t\ttype: \"eoa\",\n\t\t\tname: \"EOA (External Account)\",\n\t\t\tdescription: \"Execute using a standard wallet address.\"\n\t\t},\n\t\t{\n\t\t\ttype: \"relayer\",\n\t\t\tname: \"OpenZeppelin Relayer\",\n\t\t\tdescription: \"Execute via a OpenZeppelin open source transaction relayer service.\",\n\t\t\tdisabled: false\n\t\t},\n\t\t{\n\t\t\ttype: \"multisig\",\n\t\t\tname: \"Safe Multisig\",\n\t\t\tdescription: \"Execute via a Safe multisignature wallet.\",\n\t\t\tdisabled: true\n\t\t}\n\t]);\n}\nfunction getEvmUiLabels() {\n\treturn {\n\t\trelayerConfigTitle: \"Gas Configuration\",\n\t\trelayerConfigActiveDesc: \"Customize gas pricing strategy for transaction submission\",\n\t\trelayerConfigInactiveDesc: \"Using recommended gas configuration for reliable transactions\",\n\t\trelayerConfigPresetTitle: \"Fast Speed Preset Active\",\n\t\trelayerConfigPresetDesc: \"Transactions will use high priority gas pricing for quick inclusion\",\n\t\trelayerConfigCustomizeBtn: \"Customize Gas Settings\",\n\t\tdetailsTitle: \"Relayer Details\",\n\t\tnetwork: \"Network\",\n\t\trelayerId: \"Relayer ID\",\n\t\tactive: \"Active\",\n\t\tpaused: \"Paused\",\n\t\tsystemDisabled: \"System Disabled\",\n\t\tbalance: \"Balance\",\n\t\tnonce: \"Nonce\",\n\t\tpending: \"Pending Transactions\",\n\t\tlastTransaction: \"Last Transaction\"\n\t};\n}\nfunction getEvmContractDefinitionInputs() {\n\treturn [{\n\t\tid: \"contractAddress\",\n\t\tname: \"contractAddress\",\n\t\tlabel: \"Contract Address\",\n\t\ttype: \"blockchain-address\",\n\t\tvalidation: { required: true },\n\t\tplaceholder: \"0x1234...abcd\",\n\t\thelperText: \"Enter the deployed contract address. For verified contracts, the ABI will be fetched automatically from the block explorer.\"\n\t}, {\n\t\tid: \"contractDefinition\",\n\t\tname: \"contractDefinition\",\n\t\tlabel: \"Contract ABI (Optional)\",\n\t\ttype: \"code-editor\",\n\t\tvalidation: { required: false },\n\t\tplaceholder: \"[{\\\"inputs\\\":[],\\\"name\\\":\\\"myFunction\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"}]\",\n\t\thelperText: \"If the contract is not verified on the block explorer, paste the contract's ABI JSON here. You can find this in your contract's compilation artifacts or deployment files.\",\n\t\tcodeEditorProps: {\n\t\t\tlanguage: \"json\",\n\t\t\tplaceholder: \"Paste your contract ABI JSON here...\",\n\t\t\tmaxHeight: \"500px\",\n\t\t\tperformanceThreshold: 3e3\n\t\t}\n\t}];\n}\nfunction getEvmContractDefinitionProviders() {\n\treturn [{\n\t\tkey: EvmProviderKeys.Etherscan,\n\t\tlabel: \"Etherscan\"\n\t}, {\n\t\tkey: EvmProviderKeys.Sourcify,\n\t\tlabel: \"Sourcify\"\n\t}];\n}\n\n//#endregion\nexport { getEvmContractDefinitionProviders as a, guardRuntimeCapability as c, WriteCompletionDisagreementError as d, EVM_PROVIDER_ORDER_DEFAULT as f, getEvmContractDefinitionInputs as i, registerRuntimeCapabilityCleanup as l, isEvmProviderKey as m, asTypedEvmNetworkConfig as n, getEvmSupportedExecutionMethods as o, EvmProviderKeys as p, assertValidAddress as r, getEvmUiLabels as s, adaptSignAndBroadcast as t, withRuntimeCapability as u };\n//# sourceMappingURL=helpers-CYDHdjrw.mjs.map"],"mappings":"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"}