{"_id":"@okxweb3/x402-evm","_rev":"8-bb6f4d67b9bf3fe1622f3d77ad287c5a","name":"@okxweb3/x402-evm","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@okxweb3/x402-evm","version":"0.1.0","keywords":["x402","payment","protocol","evm"],"author":{"name":"okfe"},"license":"Apache-2.0","_id":"@okxweb3/x402-evm@0.1.0","maintainers":[{"name":"xiao.xu","email":"xiao.xu@okg.com"},{"name":"moxixii","email":"fengwenxuan2006@126.com"},{"name":"martynyan","email":"minmin.yan@okg.com"},{"name":"toringona","email":"toringona@163.com"},{"name":"linus.wang","email":"linus.wang.i77@gmail.com"},{"name":"debuggor","email":"luckdebuggor@gmail.com"},{"name":"jjay98","email":"manjie.chen@okg.com"},{"name":"shisilu","email":"yi.lu1@okg.com"}],"dist":{"shasum":"3d447797fb12df1ad0e7a9ee8f4051d10cfb5e86","tarball":"https://registry.npmjs.org/@okxweb3/x402-evm/-/x402-evm-0.1.0.tgz","fileCount":80,"integrity":"sha512-cv7/8x5qeC8IrSXs2MOR/WgCumibA18jC4GA94o9TEbDaTYqHaSoEqrKffpBtjdS/9IbeLnJUr7xFTpOZR5GLA==","signatures":[{"sig":"MEUCIQDDzvQ1kTO8s970loCSXsOdCD4IyQC8SUu7oo8uX6xCAwIgKgc7nKBkRUbYqN4pRTWCNycFiAK6RmLoOsktq7WnqSc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1332007},"main":"./dist/cjs/index.js","_from":"file:okxweb3-x402-evm-0.1.0.tgz","types":"./dist/cjs/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"import":{"types":"./dist/esm/index.d.mts","default":"./dist/esm/index.mjs"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}},"./exact/client":{"import":{"types":"./dist/esm/exact/client/index.d.mts","default":"./dist/esm/exact/client/index.mjs"},"require":{"types":"./dist/cjs/exact/client/index.d.ts","default":"./dist/cjs/exact/client/index.js"}},"./exact/server":{"import":{"types":"./dist/esm/exact/server/index.d.mts","default":"./dist/esm/exact/server/index.mjs"},"require":{"types":"./dist/cjs/exact/server/index.d.ts","default":"./dist/cjs/exact/server/index.js"}},"./deferred/client":{"import":{"types":"./dist/esm/deferred/client/index.d.mts","default":"./dist/esm/deferred/client/index.mjs"},"require":{"types":"./dist/cjs/deferred/client/index.d.ts","default":"./dist/cjs/deferred/client/index.js"}},"./deferred/server":{"import":{"types":"./dist/esm/deferred/server/index.d.mts","default":"./dist/esm/deferred/server/index.mjs"},"require":{"types":"./dist/cjs/deferred/server/index.d.ts","default":"./dist/cjs/deferred/server/index.js"}},"./exact/facilitator":{"import":{"types":"./dist/esm/exact/facilitator/index.d.mts","default":"./dist/esm/exact/facilitator/index.mjs"},"require":{"types":"./dist/cjs/exact/facilitator/index.d.ts","default":"./dist/cjs/exact/facilitator/index.js"}}},"scripts":{"lint":"eslint . --ext .ts --fix","test":"vitest run","build":"tsup","start":"tsx --env-file=.env index.ts","watch":"tsc --watch","format":"prettier -c .prettierrc --write \"**/*.{ts,js,cjs,json,md}\"","lint:check":"eslint . --ext .ts","test:watch":"vitest","format:check":"prettier -c .prettierrc --check \"**/*.{ts,js,cjs,json,md}\"","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"jjay98","email":"manjie.chen@okg.com"},"_resolved":"/private/var/folders/md/njxj8v7j17g1gxr5pn0sxn280000gp/T/e5f9c9cf70b2e18c70714faf34927bad/okxweb3-x402-evm-0.1.0.tgz","_integrity":"sha512-cv7/8x5qeC8IrSXs2MOR/WgCumibA18jC4GA94o9TEbDaTYqHaSoEqrKffpBtjdS/9IbeLnJUr7xFTpOZR5GLA==","_npmVersion":"10.9.2","description":"x402 Payment Protocol EVM Implementation","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"^3.24.2","viem":"^2.39.3","@okxweb3/x402-core":"~0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","tsup":"^8.4.0","vite":"^6.2.6","eslint":"^9.24.0","vitest":"^3.0.5","prettier":"3.5.2","@eslint/js":"^9.24.0","typescript":"^5.7.3","@types/node":"^22.13.4","eslint-plugin-jsdoc":"^50.6.9","vite-tsconfig-paths":"^5.1.4","eslint-plugin-import":"^2.31.0","eslint-plugin-prettier":"^5.2.6","@typescript-eslint/parser":"^8.29.1","@typescript-eslint/eslint-plugin":"^8.29.1"},"_npmOperationalInternal":{"tmp":"tmp/x402-evm_0.1.0_1775564985060_0.13786088160247112","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@okxweb3/x402-evm","version":"0.1.1","keywords":["x402","payment","protocol","evm"],"author":{"name":"okfe"},"license":"Apache-2.0","_id":"@okxweb3/x402-evm@0.1.1","maintainers":[{"name":"xiao.xu","email":"xiao.xu@okg.com"},{"name":"moxixii","email":"fengwenxuan2006@126.com"},{"name":"martynyan","email":"minmin.yan@okg.com"},{"name":"toringona","email":"toringona@163.com"},{"name":"linus.wang","email":"linus.wang.i77@gmail.com"},{"name":"debuggor","email":"luckdebuggor@gmail.com"},{"name":"jjay98","email":"manjie.chen@okg.com"},{"name":"shisilu","email":"yi.lu1@okg.com"}],"dist":{"shasum":"ff7222273e286517765d3788aabddae4ee611921","tarball":"https://registry.npmjs.org/@okxweb3/x402-evm/-/x402-evm-0.1.1.tgz","fileCount":82,"integrity":"sha512-yqsvDCeAxWDjztFI/jf/nncOVuuUV9vmwyTNSKwqdg0XIZu56dbURxkwJGBhbspw59r+HWxFo4m2A4rXd9w2Gw==","signatures":[{"sig":"MEYCIQCF/AR9C1mnjm8zX5UBFkeKP4fynIUs9rAWkEnr6nzAFgIhAKkgL1dPSyHScM1cjYtIZrDrUPUxf5Y7jwGvSbtnWqcZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1340764},"main":"./dist/cjs/index.js","_from":"file:okxweb3-x402-evm-0.1.1.tgz","types":"./dist/cjs/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"import":{"types":"./dist/esm/index.d.mts","default":"./dist/esm/index.mjs"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}},"./exact/client":{"import":{"types":"./dist/esm/exact/client/index.d.mts","default":"./dist/esm/exact/client/index.mjs"},"require":{"types":"./dist/cjs/exact/client/index.d.ts","default":"./dist/cjs/exact/client/index.js"}},"./exact/server":{"import":{"types":"./dist/esm/exact/server/index.d.mts","default":"./dist/esm/exact/server/index.mjs"},"require":{"types":"./dist/cjs/exact/server/index.d.ts","default":"./dist/cjs/exact/server/index.js"}},"./deferred/client":{"import":{"types":"./dist/esm/deferred/client/index.d.mts","default":"./dist/esm/deferred/client/index.mjs"},"require":{"types":"./dist/cjs/deferred/client/index.d.ts","default":"./dist/cjs/deferred/client/index.js"}},"./deferred/server":{"import":{"types":"./dist/esm/deferred/server/index.d.mts","default":"./dist/esm/deferred/server/index.mjs"},"require":{"types":"./dist/cjs/deferred/server/index.d.ts","default":"./dist/cjs/deferred/server/index.js"}},"./exact/facilitator":{"import":{"types":"./dist/esm/exact/facilitator/index.d.mts","default":"./dist/esm/exact/facilitator/index.mjs"},"require":{"types":"./dist/cjs/exact/facilitator/index.d.ts","default":"./dist/cjs/exact/facilitator/index.js"}}},"scripts":{"lint":"eslint . --ext .ts --fix","build":"tsup","start":"tsx --env-file=.env index.ts","watch":"tsc --watch","format":"prettier -c .prettierrc --write \"**/*.{ts,js,cjs,json,md}\"","lint:check":"eslint . --ext .ts","format:check":"prettier -c .prettierrc --check \"**/*.{ts,js,cjs,json,md}\""},"_npmUser":{"name":"jjay98","email":"manjie.chen@okg.com"},"_resolved":"/private/var/folders/md/njxj8v7j17g1gxr5pn0sxn280000gp/T/a0d027388cd84160620fb01ffacdb566/okxweb3-x402-evm-0.1.1.tgz","_integrity":"sha512-yqsvDCeAxWDjztFI/jf/nncOVuuUV9vmwyTNSKwqdg0XIZu56dbURxkwJGBhbspw59r+HWxFo4m2A4rXd9w2Gw==","_npmVersion":"10.9.2","description":"x402 Payment Protocol EVM Implementation","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"^3.24.2","viem":"^2.39.3","@okxweb3/x402-core":"~0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","tsup":"^8.4.0","eslint":"^9.24.0","prettier":"3.5.2","@eslint/js":"^9.24.0","typescript":"^5.7.3","@types/node":"^22.13.4","eslint-plugin-jsdoc":"^50.6.9","eslint-plugin-import":"^2.31.0","eslint-plugin-prettier":"^5.2.6","@typescript-eslint/parser":"^8.29.1","@typescript-eslint/eslint-plugin":"^8.29.1"},"_npmOperationalInternal":{"tmp":"tmp/x402-evm_0.1.1_1779420838508_0.615905136324475","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@okxweb3/x402-evm","version":"0.2.0","keywords":["x402","payment","protocol","evm"],"author":{"name":"okfe"},"license":"Apache-2.0","_id":"@okxweb3/x402-evm@0.2.0","maintainers":[{"name":"xiao.xu","email":"xiao.xu@okg.com"},{"name":"moxixii","email":"fengwenxuan2006@126.com"},{"name":"martynyan","email":"minmin.yan@okg.com"},{"name":"toringona","email":"toringona@163.com"},{"name":"linus.wang","email":"linus.wang.i77@gmail.com"},{"name":"debuggor","email":"luckdebuggor@gmail.com"},{"name":"jjay98","email":"manjie.chen@okg.com"},{"name":"shisilu","email":"yi.lu1@okg.com"}],"dist":{"shasum":"4c6f00e4bd523867bda1814ae94cda0b3d2efe5a","tarball":"https://registry.npmjs.org/@okxweb3/x402-evm/-/x402-evm-0.2.0.tgz","fileCount":80,"integrity":"sha512-bmQOujNbWogEv56/TG65/mSpFF2DuYSa4a7jo0iNdxSHnB1IqegPU4mIuM/02oMpPjYNRpJNIsPZkZ79QkL1JA==","signatures":[{"sig":"MEQCIAzCtFFm7NQQT/GZE3xPVoj5p7CW7AvCvllzPwO/2wzGAiAr2xThFjhtCmoeMgV+drr5LPtlGEWIbftlz+Z9UyF5EA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1336595},"main":"./dist/cjs/index.js","types":"./dist/cjs/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"import":{"types":"./dist/esm/index.d.mts","default":"./dist/esm/index.mjs"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}},"./upto/client":{"import":{"types":"./dist/esm/upto/client/index.d.mts","default":"./dist/esm/upto/client/index.mjs"},"require":{"types":"./dist/cjs/upto/client/index.d.ts","default":"./dist/cjs/upto/client/index.js"}},"./upto/server":{"import":{"types":"./dist/esm/upto/server/index.d.mts","default":"./dist/esm/upto/server/index.mjs"},"require":{"types":"./dist/cjs/upto/server/index.d.ts","default":"./dist/cjs/upto/server/index.js"}},"./exact/client":{"import":{"types":"./dist/esm/exact/client/index.d.mts","default":"./dist/esm/exact/client/index.mjs"},"require":{"types":"./dist/cjs/exact/client/index.d.ts","default":"./dist/cjs/exact/client/index.js"}},"./exact/server":{"import":{"types":"./dist/esm/exact/server/index.d.mts","default":"./dist/esm/exact/server/index.mjs"},"require":{"types":"./dist/cjs/exact/server/index.d.ts","default":"./dist/cjs/exact/server/index.js"}},"./deferred/client":{"import":{"types":"./dist/esm/deferred/client/index.d.mts","default":"./dist/esm/deferred/client/index.mjs"},"require":{"types":"./dist/cjs/deferred/client/index.d.ts","default":"./dist/cjs/deferred/client/index.js"}},"./deferred/server":{"import":{"types":"./dist/esm/deferred/server/index.d.mts","default":"./dist/esm/deferred/server/index.mjs"},"require":{"types":"./dist/cjs/deferred/server/index.d.ts","default":"./dist/cjs/deferred/server/index.js"}},"./upto/facilitator":{"import":{"types":"./dist/esm/upto/facilitator/index.d.mts","default":"./dist/esm/upto/facilitator/index.mjs"},"require":{"types":"./dist/cjs/upto/facilitator/index.d.ts","default":"./dist/cjs/upto/facilitator/index.js"}},"./exact/facilitator":{"import":{"types":"./dist/esm/exact/facilitator/index.d.mts","default":"./dist/esm/exact/facilitator/index.mjs"},"require":{"types":"./dist/cjs/exact/facilitator/index.d.ts","default":"./dist/cjs/exact/facilitator/index.js"}}},"gitHead":"47fa7ee834429ff352dd876f01bba547d27dafe8","scripts":{"lint":"eslint . --ext .ts --fix","build":"tsup","start":"tsx --env-file=.env index.ts","watch":"tsc --watch","format":"prettier -c .prettierrc --write \"**/*.{ts,js,cjs,json,md}\"","lint:check":"eslint . --ext .ts","format:check":"prettier -c .prettierrc --check \"**/*.{ts,js,cjs,json,md}\""},"_npmUser":{"name":"jjay98","email":"manjie.chen@okg.com"},"deprecated":"Broken: workspace:~ leaked into deps. Use 0.2.1+.","_npmVersion":"10.9.2","description":"x402 Payment Protocol EVM Implementation","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"^3.24.2","viem":"^2.39.3","@okxweb3/x402-core":"workspace:~"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","tsup":"^8.4.0","eslint":"^9.24.0","prettier":"3.5.2","@eslint/js":"^9.24.0","typescript":"^5.7.3","@types/node":"^22.13.4","eslint-plugin-jsdoc":"^50.6.9","eslint-plugin-import":"^2.31.0","eslint-plugin-prettier":"^5.2.6","@typescript-eslint/parser":"^8.29.1","@typescript-eslint/eslint-plugin":"^8.29.1"},"_npmOperationalInternal":{"tmp":"tmp/x402-evm_0.2.0_1779951210715_0.29463779184646843","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@okxweb3/x402-evm","version":"0.2.1","keywords":["x402","payment","protocol","evm"],"author":{"name":"okfe"},"license":"Apache-2.0","_id":"@okxweb3/x402-evm@0.2.1","maintainers":[{"name":"xiao.xu","email":"xiao.xu@okg.com"},{"name":"moxixii","email":"fengwenxuan2006@126.com"},{"name":"martynyan","email":"minmin.yan@okg.com"},{"name":"toringona","email":"toringona@163.com"},{"name":"linus.wang","email":"linus.wang.i77@gmail.com"},{"name":"debuggor","email":"luckdebuggor@gmail.com"},{"name":"jjay98","email":"manjie.chen@okg.com"},{"name":"shisilu","email":"yi.lu1@okg.com"}],"dist":{"shasum":"525f742266b8adce6258ddef18996d9c20df75c8","tarball":"https://registry.npmjs.org/@okxweb3/x402-evm/-/x402-evm-0.2.1.tgz","fileCount":80,"integrity":"sha512-wdkMaoQS3dy06vQQB+a6PzBoBb5nIXTZKEYLYzmq+xtRjc+F/QzQ9dBM2+FnI31TDwN/CdI1teaPWwrcy/7LxA==","signatures":[{"sig":"MEUCIQD2o6ILaNW2ahSJNQBuklyUY/RMD6YseZAuCnZuSC8QOwIgckN1bd3+A7bO+L9cZdFJoAYid8P+sQpZg+2VJKwVYXo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1336589},"main":"./dist/cjs/index.js","_from":"file:okxweb3-x402-evm-0.2.1.tgz","types":"./dist/cjs/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"import":{"types":"./dist/esm/index.d.mts","default":"./dist/esm/index.mjs"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}},"./upto/client":{"import":{"types":"./dist/esm/upto/client/index.d.mts","default":"./dist/esm/upto/client/index.mjs"},"require":{"types":"./dist/cjs/upto/client/index.d.ts","default":"./dist/cjs/upto/client/index.js"}},"./upto/server":{"import":{"types":"./dist/esm/upto/server/index.d.mts","default":"./dist/esm/upto/server/index.mjs"},"require":{"types":"./dist/cjs/upto/server/index.d.ts","default":"./dist/cjs/upto/server/index.js"}},"./exact/client":{"import":{"types":"./dist/esm/exact/client/index.d.mts","default":"./dist/esm/exact/client/index.mjs"},"require":{"types":"./dist/cjs/exact/client/index.d.ts","default":"./dist/cjs/exact/client/index.js"}},"./exact/server":{"import":{"types":"./dist/esm/exact/server/index.d.mts","default":"./dist/esm/exact/server/index.mjs"},"require":{"types":"./dist/cjs/exact/server/index.d.ts","default":"./dist/cjs/exact/server/index.js"}},"./deferred/client":{"import":{"types":"./dist/esm/deferred/client/index.d.mts","default":"./dist/esm/deferred/client/index.mjs"},"require":{"types":"./dist/cjs/deferred/client/index.d.ts","default":"./dist/cjs/deferred/client/index.js"}},"./deferred/server":{"import":{"types":"./dist/esm/deferred/server/index.d.mts","default":"./dist/esm/deferred/server/index.mjs"},"require":{"types":"./dist/cjs/deferred/server/index.d.ts","default":"./dist/cjs/deferred/server/index.js"}},"./upto/facilitator":{"import":{"types":"./dist/esm/upto/facilitator/index.d.mts","default":"./dist/esm/upto/facilitator/index.mjs"},"require":{"types":"./dist/cjs/upto/facilitator/index.d.ts","default":"./dist/cjs/upto/facilitator/index.js"}},"./exact/facilitator":{"import":{"types":"./dist/esm/exact/facilitator/index.d.mts","default":"./dist/esm/exact/facilitator/index.mjs"},"require":{"types":"./dist/cjs/exact/facilitator/index.d.ts","default":"./dist/cjs/exact/facilitator/index.js"}}},"scripts":{"lint":"eslint . --ext .ts --fix","build":"tsup","start":"tsx --env-file=.env index.ts","watch":"tsc --watch","format":"prettier -c .prettierrc --write \"**/*.{ts,js,cjs,json,md}\"","lint:check":"eslint . --ext .ts","format:check":"prettier -c .prettierrc --check \"**/*.{ts,js,cjs,json,md}\""},"_npmUser":{"name":"jjay98","email":"manjie.chen@okg.com"},"_resolved":"/private/var/folders/md/njxj8v7j17g1gxr5pn0sxn280000gp/T/8ab5623e8085eb35258fee8908e1d8d4/okxweb3-x402-evm-0.2.1.tgz","_integrity":"sha512-wdkMaoQS3dy06vQQB+a6PzBoBb5nIXTZKEYLYzmq+xtRjc+F/QzQ9dBM2+FnI31TDwN/CdI1teaPWwrcy/7LxA==","_npmVersion":"10.9.2","description":"x402 Payment Protocol EVM Implementation","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"^3.24.2","viem":"^2.39.3","@okxweb3/x402-core":"~0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","tsup":"^8.4.0","eslint":"^9.24.0","prettier":"3.5.2","@eslint/js":"^9.24.0","typescript":"^5.7.3","@types/node":"^22.13.4","eslint-plugin-jsdoc":"^50.6.9","eslint-plugin-import":"^2.31.0","eslint-plugin-prettier":"^5.2.6","@typescript-eslint/parser":"^8.29.1","@typescript-eslint/eslint-plugin":"^8.29.1"},"_npmOperationalInternal":{"tmp":"tmp/x402-evm_0.2.1_1779951598401_0.9515513319575737","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-04-07T12:29:44.977Z","modified":"2026-08-04T01:40:46.742Z","0.1.0":"2026-04-07T12:29:45.382Z","0.1.1":"2026-05-22T03:33:58.675Z","0.2.0":"2026-05-28T06:53:30.958Z","0.2.1":"2026-05-28T06:59:58.616Z"},"author":{"name":"okfe"},"license":"Apache-2.0","keywords":["x402","payment","protocol","evm"],"description":"x402 Payment Protocol EVM Implementation","maintainers":[{"email":"ops.pkg@okg.com","name":"npm-okx"}],"readme":"# @okxweb3/x402-evm\n\nEVM implementation of the x402 payment protocol for X Layer. Supports EIP-3009 `transferWithAuthorization`, Permit2-based metered billing (`upto`), and aggregated deferred payment schemes.\n\n## Installation\n\n```bash\nnpm install @okxweb3/x402-evm\n```\n\n## Supported Chain\n\n| Chain | CAIP-2 ID | Default Stablecoin | Transfer Method |\n| --- | --- | --- | --- |\n| **X Layer** | `eip155:196` | USDT0 | EIP-3009 |\n\n## Supported Schemes\n\n- **exact** — Standard payment. The exact amount is transferred on-chain via EIP-3009 `transferWithAuthorization`.\n- **upto** — Cap-style metered billing. The buyer signs a Permit2 `PermitWitnessTransferFrom` for a **maximum** amount; at settlement time the route handler decides the actual charge (≤ cap). The witness binds the facilitator address, so only the authorized facilitator can settle. Settled via the on-chain `x402UptoPermit2Proxy` (`0x4020e7393B728A3939659E5732F87fdd8e680002`).\n- **aggr_deferred** — Aggregated deferred payment using session keys. The facilitator batches multiple payments on-chain for high-throughput scenarios.\n\n## Exports\n\n### Main entry (`@okxweb3/x402-evm`)\n\n- `ExactEvmScheme` — Client-side Exact scheme (EIP-3009 or Permit2, picked from the seller's `accepts[].extra.assetTransferMethod`)\n- `UptoEvmScheme` — Client-side Upto scheme (Permit2 cap-style billing)\n- `AggrDeferredEvmClientScheme` / `AggrDeferredEvmServerScheme` — Aggregated deferred payment scheme\n- `toClientEvmSigner(account)` / `toFacilitatorEvmSigner(wallet)` — Convert viem objects to x402 signers\n- Type guards: `isEIP3009Payload`, `isPermit2Payload`, `isUptoPermit2Payload`\n\n### Subpath exports\n\n| Path | Description |\n| --- | --- |\n| `@okxweb3/x402-evm/exact/client` | Client-side Exact scheme (signs EIP-3009 or Permit2) |\n| `@okxweb3/x402-evm/exact/server` | Server-side Exact scheme (builds payment requirements) |\n| `@okxweb3/x402-evm/exact/facilitator` | Facilitator Exact scheme (verifies & settles payments) |\n| `@okxweb3/x402-evm/upto/client` | Client-side Upto scheme (signs the Permit2 cap) |\n| `@okxweb3/x402-evm/upto/server` | Server-side Upto scheme (builds metered payment requirements) |\n| `@okxweb3/x402-evm/upto/facilitator` | Facilitator Upto scheme (verifies the cap & settles the actual amount) |\n| `@okxweb3/x402-evm/deferred/client` | Deferred payment client scheme |\n| `@okxweb3/x402-evm/deferred/server` | Deferred payment server scheme |\n\n## Usage\n\n### Client-side (signing payments)\n\n```typescript\nimport { x402Client } from \"@okxweb3/x402-core/client\";\nimport { ExactEvmScheme, toClientEvmSigner } from \"@okxweb3/x402-evm\";\nimport { privateKeyToAccount } from \"viem/accounts\";\n\nconst account = privateKeyToAccount(\"0x...\");\nconst signer = toClientEvmSigner(account);\n\nconst client = new x402Client()\n  .register(\"eip155:196\", new ExactEvmScheme(signer));\n```\n\n### Server-side (building payment requirements)\n\n```typescript\nimport { ExactEvmScheme } from \"@okxweb3/x402-evm/exact/server\";\n\nconst evmServer = new ExactEvmScheme();\n```\n\n### Facilitator (verifying & settling payments)\n\n```typescript\nimport { ExactEvmScheme } from \"@okxweb3/x402-evm/exact/facilitator\";\nimport { toFacilitatorEvmSigner } from \"@okxweb3/x402-evm\";\n\nconst facilitator = new ExactEvmScheme(toFacilitatorEvmSigner(walletClient));\n```\n\n### Upto scheme (metered billing)\n\nServer registers the upto scheme and decides the actual charge per request via `setSettlementOverrides`:\n\n```typescript\nimport { UptoEvmScheme } from \"@okxweb3/x402-evm/upto/server\";\nimport { paymentMiddleware, setSettlementOverrides, x402ResourceServer } from \"@okxweb3/x402-express\";\n\nconst resourceServer = new x402ResourceServer(facilitatorClient)\n  .register(\"eip155:196\", new UptoEvmScheme());\n\napp.use(paymentMiddleware({\n  \"POST /summarize\": {\n    accepts: {\n      scheme: \"upto\",\n      network: \"eip155:196\",\n      payTo: SELLER_ADDRESS,\n      price: \"$1.00\",          // signed cap\n    },\n    description: \"Summarizer — billed by input size, capped at $1.00\",\n    mimeType: \"application/json\",\n  },\n}, resourceServer));\n\napp.post(\"/summarize\", (req, res) => {\n  // Decide the actual charge based on the request; must be ≤ the signed cap.\n  setSettlementOverrides(res, { amount: actualAtomicUnits });\n  res.json({ /* ... */ });\n});\n```\n\nClient (and facilitator) wire up the same way as Exact, using `UptoEvmScheme` from `@okxweb3/x402-evm/upto/client` and `/upto/facilitator`.\n\n## Asset Transfer Method\n\nTokens on X Layer use **EIP-3009** (`transferWithAuthorization`) by default, which provides gasless, single-signature token transfers. The default stablecoin is USDT0.\n\nFor the **upto** scheme — and for the `exact` sub-mode that opts into `extra.assetTransferMethod: \"permit2\"` — settlement runs through the canonical **Permit2** contract (`0x000000000022D473030F116dDEE9F6B43aC78BA3`, same address on every EVM chain) plus an x402 settle proxy. The buyer MUST perform a one-time `IERC20.approve(PERMIT2_ADDRESS, MAX_UINT256)` for the token before signing; after that, every subsequent payment is off-chain signatures only.\n\n| Path | On-chain proxy (settle target) | Witness fields |\n| --- | --- | --- |\n| `exact` (EIP-3009)                   | n/a — direct EIP-3009 call on the token | n/a |\n| `exact` + `assetTransferMethod=permit2` | `0x402085c248EeA27D92E8b30b2C58ed07f9E20001` | `(to, validAfter)` |\n| `upto`                                | `0x4020e7393B728A3939659E5732F87fdd8e680002` | `(to, facilitator, validAfter)` |\n\nThe upto witness binds the facilitator address: a leaked cap-signature can only be settled by the exact facilitator the buyer named.\n\n## Related Packages\n\n- `@okxweb3/x402-core` — Core protocol types and client\n","readmeFilename":"README.md"}