{"_id":"@deployoor/routescan","_rev":"2-131d10d6bc0b0e4ae0d18ec8d3800d43","name":"@deployoor/routescan","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@deployoor/routescan","version":"0.1.0","keywords":["ethereum","evm","routescan","snowtrace","verification","deployments","smart-contracts"],"author":{"name":"Valerio Leo"},"license":"MIT","_id":"@deployoor/routescan@0.1.0","maintainers":[{"name":"valerioleo","email":"sponges_95_wily@icloud.com"}],"homepage":"https://github.com/raycashxyz/deployoor/tree/main/packages/deployoor-routescan#readme","bugs":{"url":"https://github.com/raycashxyz/deployoor/issues"},"dist":{"shasum":"0ccae3f7f2823146b9db49a074bbe76ec6d367f8","tarball":"https://registry.npmjs.org/@deployoor/routescan/-/routescan-0.1.0.tgz","fileCount":3,"integrity":"sha512-0kXH3pdyq3oMAye5SYlgM9kKM2qplA7+IEARXfIK8KMtiLiygn/XTx+Kv+V5Z0Kh8QLX5PnsG943vfRLfW+39w==","signatures":[{"sig":"MEUCIQDS8LUvzoB9bSLxB4vIsHkOaBV3AEkXM2uwYxQ3fkaIaAIgFQQG1X/cpC0AJy82KiRwiNzOUEnqLSumG9T79QeT2mg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5694},"main":"./dist/index.cjs","type":"module","_from":"file:deployoor-routescan-0.1.0.tgz","types":"./dist/index.d.mts","module":"./dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"private":false,"scripts":{"test":"vitest run","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"valerioleo","email":"sponges_95_wily@icloud.com"},"_resolved":"/private/var/folders/n7/pq32kvk93nl2q7qrgczvq3zr0000gn/T/f6dabf8dd2fbcbcb4707f65e97763221/deployoor-routescan-0.1.0.tgz","_integrity":"sha512-0kXH3pdyq3oMAye5SYlgM9kKM2qplA7+IEARXfIK8KMtiLiygn/XTx+Kv+V5Z0Kh8QLX5PnsG943vfRLfW+39w==","repository":{"url":"git+https://github.com/raycashxyz/deployoor.git","type":"git","directory":"packages/deployoor-routescan"},"_npmVersion":"11.11.0","description":"Verify contracts on Routescan (Avalanche, Base, and every chain it indexes) when deployoor deploys them, or after the fact with `deployoor verify`.","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"viem":"2.46.0","unrun":"^0.3.1","tsdown":"^0.22.3","vitest":"^4.0.17","deployoor":"0.7.1","typescript":"^5.9.3","@types/node":"^22.15.3"},"peerDependencies":{"viem":"^2","deployoor":">=0.7.0 <1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/routescan_0.1.0_1787061323805_0.4872951122497504","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@deployoor/routescan","version":"0.1.1","private":false,"type":"module","sideEffects":false,"description":"Verify contracts on Routescan (Avalanche, Base, and every chain it indexes) when deployoor deploys them, or after the fact with `deployoor verify`.","keywords":["ethereum","evm","routescan","snowtrace","verification","deployments","smart-contracts"],"license":"MIT","author":{"name":"Valerio Leo"},"main":"./dist/index.cjs","module":"./dist/index.mjs","types":"./dist/index.d.mts","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"engines":{"node":">=18"},"dependencies":{"zod":"^4.4.3"},"peerDependencies":{"deployoor":">=0.7.0 <1.0.0","viem":"^2"},"devDependencies":{"@types/node":"^22.15.3","tsdown":"^0.22.3","typescript":"^5.9.3","unrun":"^0.3.1","vitest":"^4.0.17","viem":"2.46.0","deployoor":"0.7.1"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/raycashxyz/deployoor.git","directory":"packages/deployoor-routescan"},"homepage":"https://github.com/raycashxyz/deployoor/tree/main/packages/deployoor-routescan#readme","bugs":{"url":"https://github.com/raycashxyz/deployoor/issues"},"scripts":{"build":"tsdown","typecheck":"tsc --noEmit","test":"vitest run"},"_id":"@deployoor/routescan@0.1.1","_integrity":"sha512-i8pRyGYFzr0Feuy8GtUol30VuWzaOzsGrTLH8QnVPiky/F5XBIek9ADYvFM3dIl9LJofSuK7SxOFyTC2rGdn1w==","_resolved":"/tmp/9faef019b355278fa2a53dd25dc191b9/deployoor-routescan-0.1.1.tgz","_from":"file:deployoor-routescan-0.1.1.tgz","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-i8pRyGYFzr0Feuy8GtUol30VuWzaOzsGrTLH8QnVPiky/F5XBIek9ADYvFM3dIl9LJofSuK7SxOFyTC2rGdn1w==","shasum":"e733632bb5e7261cad97902c410c884d5d8445f4","tarball":"https://registry.npmjs.org/@deployoor/routescan/-/routescan-0.1.1.tgz","fileCount":11,"unpackedSize":59391,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@deployoor%2froutescan@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEKqj/EfC5CopWjKfg344MprL1fZNpjCW04IgdJdCuqbAiEAqCeQwSqp9XelIi9Yt+x9DQtAE+tJwoI8wtME67h6lQk="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7d29c255-e75a-4cf5-8e05-2f021548cb2a"}},"directories":{},"maintainers":[{"name":"valerioleo","email":"sponges_95_wily@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/routescan_0.1.1_1787062438087_0.6155385199298573"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-18T13:55:23.622Z","modified":"2026-08-18T14:13:58.781Z","0.1.0":"2026-08-18T13:55:23.936Z","0.1.1":"2026-08-18T14:13:58.214Z"},"bugs":{"url":"https://github.com/raycashxyz/deployoor/issues"},"author":{"name":"Valerio Leo"},"license":"MIT","homepage":"https://github.com/raycashxyz/deployoor/tree/main/packages/deployoor-routescan#readme","keywords":["ethereum","evm","routescan","snowtrace","verification","deployments","smart-contracts"],"repository":{"type":"git","url":"git+https://github.com/raycashxyz/deployoor.git","directory":"packages/deployoor-routescan"},"description":"Verify contracts on Routescan (Avalanche, Base, and every chain it indexes) when deployoor deploys them, or after the fact with `deployoor verify`.","maintainers":[{"name":"valerioleo","email":"sponges_95_wily@icloud.com"}],"readme":"# @deployoor/routescan\n\nVerify contracts on [Routescan](https://routescan.io) — the explorer behind Snowtrace and many\nAvalanche, Base and L2 chains — at deploy time, or after the fact with `deployoor verify`.\n\n```bash\nnpm i -D @deployoor/routescan\n```\n\n```ts\n// deployoor.config.ts\nimport { defineConfig } from \"deployoor\";\nimport { routescan } from \"@deployoor/routescan\";\n\n// mainnet vs testnet comes from the chain id; nothing to configure for a chain viem knows.\nexport default defineConfig({\n  plugins: [routescan({ apiKey: process.env.ROUTESCAN_API_KEY })], // apiKey optional\n});\n```\n\n## Options\n\n| Option           | Default              | What it does                                                |\n| ---------------- | -------------------- | ----------------------------------------------------------- |\n| `apiKey`         | none                 | Optional; verification is keyless, a key raises rate limits |\n| `network`        | from the chain id    | `\"mainnet\"` \\| `\"testnet\"` — override the derived index     |\n| `apiUrl`         | built from the chain | Replace the whole base URL                                  |\n| `pollIntervalMs` | `2000`               | Milliseconds between status polls                           |\n| `maxPolls`       | `20`                 | Bounds both the submit retry and the status poll            |\n\n## How the URL is built\n\n```text\nhttps://api.routescan.io/v2/network/{mainnet|testnet}/evm/{chainId}/etherscan/api\n```\n\nThe chain id is in the **path**, not a query parameter — unlike Etherscan V2, which needs it as one.\n\nRoutescan keeps mainnets and testnets in two separate indexes, and the segment is part of the URL, so\nthe wrong one answers about a chain the contract is not on: for a Sepolia address, `mainnet` returns an\nempty result that reads exactly like \"not verified\". The segment is derived from **viem's own chain\nmetadata** (`testnet: true`), which is the maintained list we would otherwise be copying — so every\nchain viem ships is right with no configuration. A chain viem does not know reads as `mainnet`; use\n`network` for those.\n\n## Notes from live use\n\nVerified against Sepolia. Two things worth knowing:\n\n**Routescan's queue is slower than Etherscan's.** The default budget (`maxPolls: 20` × 2 s = 40 s) was\nnot always enough; raise `maxPolls` if you see timeouts.\n\n**Its `checkverifystatus` and `getsourcecode` can disagree.** A submission reported\n`Pass - Verified` while `getsourcecode` still returned an empty result for the same address. The plugin\nreports what the status endpoint says, since that is the API's own answer about the job it was given.\n\n## What it verifies from\n\nBoth hooks send the exact standard-json input the deploy pinned to\n`deployments/sources/<hash>.json`, so nothing is recompiled and `deployoor verify` works long after\nthe source tree moved on. See [Verify contracts](https://deployoor.dev/guides/verify).\n\nMIT\n","readmeFilename":"README.md"}