{"_id":"@holdstation/worldchain-ethers-v5","_rev":"31-09f34a2633ea3d8087b722f9d0395889","name":"@holdstation/worldchain-ethers-v5","dist-tags":{"latest":"4.0.34"},"versions":{"4.0.4":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.4","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.4","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"bd896f4cf8e64f6e329bf1c370092582a8f9e238","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.4.tgz","fileCount":8,"integrity":"sha512-DB/JqUmGyJYQPzaVkSo8bxn705ezCnKKZy1RXKB+pV6N5xcXD5gI2ry9iikWN+Ii2iLv4nLRU29debYu9+oNqA==","signatures":[{"sig":"MEQCICnJw8nKeGtyJHpffmkEWwPhIQdpDW5AYXgcv1EBY+bVAiBucBkahNBWIvbd7mwVW8b6OyCqcVNks27GJnhcfWyDDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":724583},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"e7d5515fd3a28b39008be332cb0f7ad00e09eb3c","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.4_1746616218726_0.3616994468967276","host":"s3://npm-registry-packages-npm-production"}},"4.0.5":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.5","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.5","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"902ed597b6d82959756376e515b1b86868ee3cbd","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.5.tgz","fileCount":8,"integrity":"sha512-eCyqO1UXC9Kobs+QCNTT2OGFEdz9LQ9EZPbeaxPkdWg1vWWqqFKmTt1ZwC8qHLSFawzTRbat5nB6r3f4uC2QzQ==","signatures":[{"sig":"MEUCIQCJ4Rz+WZ5K8Y18huo06UIsJMKaFZCOKdpN+WhibVE6YwIgHjkxxYlpTTAZuFHFxJ+G2k2zfRv34Z6AsokvhzU60F8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":723959},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"9bb0159d25279af40db684e722dd00bbb5ee2263","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.5_1746676495676_0.5939379311180637","host":"s3://npm-registry-packages-npm-production"}},"4.0.6":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.6","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.6","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"46e18d4725cd078fb8a36a1b2091035fd331970f","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.6.tgz","fileCount":8,"integrity":"sha512-mw1CDeaL2CH1F+ug5jWw0UKEF/KiILCju8YyDdAI4ybOX5pDXKv9sxkmd6iqTWrE4WZinC22GRBV5fhN+cP6Qw==","signatures":[{"sig":"MEQCIH/BB+KIDI3hgrstuNncwllfNPR36sVmTYw5OvnkLW+rAiB50g4bg7cuVUqGp9WkwVvZ2TCtT5Re7LaEmiW7zyDv7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":723959},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"76a1e20ee2d03e674264ae1fb015ad848a57be04","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.6_1746690703647_0.8277122313218437","host":"s3://npm-registry-packages-npm-production"}},"4.0.7":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.7","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.7","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"8f5f09c15dd51ce97fd29766e4d266fb052784aa","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.7.tgz","fileCount":8,"integrity":"sha512-ACO5vKJbgKUhoyua1YAbwnhbGOAdj5enrUsj4/QHESR2npNIwo6gBgImfc3wZZIKG7k1ZxY+6QfiMGKQKAFJrw==","signatures":[{"sig":"MEYCIQCzXKi77lYKlG2A21ORGK94jO7Tqq/ETYSMBaU86Co7QwIhAM6WOn1UQrdByUGRnKWK0cb1KNeRzIAe177XL1iekvn+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":723914},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"36e008f77dbe0d8b4658e754ad8887acad818e1c","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.7_1746700173974_0.6578685553487815","host":"s3://npm-registry-packages-npm-production"}},"4.0.8":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.8","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.8","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"89e7aad543ea54c00e4f44e286b66601a40da331","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.8.tgz","fileCount":8,"integrity":"sha512-tUvU0Epl5KunW856WdceLFn8C30jj3X008m/8hMXKCt+WFKrXsAUPFL+oWUCubQHKWxySb2P0uDEB9TF56cTBQ==","signatures":[{"sig":"MEUCIGjAS1awFFOPT8ZXVk03FGt+p1K0IiqWVmNbJiUd0Uf9AiEA+YVYoiMOiJRPIN6rf2KmNs5HVLi/AXoyma1oQgapoRQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":723914},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"afc4418faea3085671b4c06cbe6ad5e65832f3e8","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.8_1746765677528_0.009386013408860583","host":"s3://npm-registry-packages-npm-production"}},"4.0.9":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.9","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.9","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"6dd16ebbf12efc700c1c5d20b84dde285ddca341","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.9.tgz","fileCount":8,"integrity":"sha512-5SGCtkaTo6es4s4+NSRjj7yTZ5+Vnx8RZ/mRGQhrc8gOXSEixl7gMVBL18wR6uZZ2hmta0ZMHnAYqUqYv+C6UQ==","signatures":[{"sig":"MEUCIQCPwazxgdhqgdLtiDyLzPBKcnnpJmhfnQoSIHVDYwRHkwIgHNoYP0gEwKe8Qsm7N+WGYo3s3a6UxP16j3S/waB7Y5M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":727952},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"1fa623ad9b0ed134745ebe540647fd3d02db1637","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.9_1747109772176_0.8752088191175831","host":"s3://npm-registry-packages-npm-production"}},"4.0.10":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.10","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.10","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"e2d58e1d57724d59216194e7b6098748dcfdf012","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.10.tgz","fileCount":8,"integrity":"sha512-94fBkw2myGkUv0ZcG+VwtNCCXQR/X8hXHmBFXJPy7ggMhpf7deUoDAK/3QIQ/u5AjZGM0q/egSN24HP6oEqQ+A==","signatures":[{"sig":"MEUCIQDW/ogJ5iMJooj2o8g/CTAkDveT0yIDz2J57qn1KjpTXgIgTvsbrwUM0oMkM3x3qFispBISXDAmINt+46OnxmDcfP4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":708386},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"13996f6708cc300e60a6516e54608ced538c7a9e","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.10_1747208261448_0.17951481021845028","host":"s3://npm-registry-packages-npm-production"}},"4.0.11":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.11","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.11","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"612d2722f7f008e0dff989dcee522d6772eb38a7","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.11.tgz","fileCount":8,"integrity":"sha512-f+k6hT01G0L3fFA3Dd0XJjx9gFukYma+3IEXoSj22uHShCt/E2ch7zmDcMQ5D35lS7baHYP6wzw2hrfIFXYPHA==","signatures":[{"sig":"MEUCIQD14BYsAyHTzSZ68roMHHwTvrgq+mzR3B5ETi+gnrmUEQIgJYjgMN2S8LuqKOgvGJkQO9iZ+9+DxMacaaOdt349p98=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":708386},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"e5f80d7c80f5630cd8041a1c1fe51805060a206a","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.11_1747214245098_0.08341600532497795","host":"s3://npm-registry-packages-npm-production"}},"4.0.12":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.12","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.12","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"fb490428db09c28371e37382a23cb309ff6e85f1","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.12.tgz","fileCount":8,"integrity":"sha512-4dUect8+p+G+1WwMSSHHxEa6/1KwexO5eLDpF+A33pK5fkio8x1Fp+R6e7t/TF6UoB/5qNHZFeeygnd5ChXqoA==","signatures":[{"sig":"MEYCIQCKaOGlfVJyVaev1eZcKVnar4U6x9ZKqqBvju0uEMUqrAIhAKMdqwYwsEFmp9ROQwrzjmeEpA2gJt+zf8NXIOL3J9gh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":707831},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"d16410e7b54322e1a172f2cd948aea1056791b45","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.12_1747216564964_0.7130838791837595","host":"s3://npm-registry-packages-npm-production"}},"4.0.13":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.13","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.13","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"8110ebfbfdbb8d454bc73bdc49dbccf5617c76e5","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.13.tgz","fileCount":8,"integrity":"sha512-YEG/LvIRD5Ztq6OhHW8HJpt96uYBKJcQQU2ucgDd8Zr8pcFLqjrOGtJCSep2CSR+TI2TqunBXQN96+uSAKIChw==","signatures":[{"sig":"MEYCIQC8LqkNP4xUxGjnaJiRPKaF9ZH7T7XfOk5wModkhdP0SAIhAMvKP0R0IqxaFyg7qI63P7arVJH0d4G/MF6sV8Ge+Y6K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":707839},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"0ae94a1823704ef6c5774da456530018cc4ac31e","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.13_1747217976443_0.7964028747207026","host":"s3://npm-registry-packages-npm-production"}},"4.0.14":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.14","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.14","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"e756265475c60ee2a9816aac651290a9d8968f55","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.14.tgz","fileCount":8,"integrity":"sha512-di41kuNyKBud4n49Tfx12ETZJy0YIew5DYsq/ie9UTDLkPRSCb9T1pW5ThZPKSUMSc8qN9zaFMXpmbYiOw5jqA==","signatures":[{"sig":"MEUCIQCMgTch8BMScTk3a26xfsB4G70reLIA6JfBux7bZktHDwIgIcv8SM5+xpm+8cGDXGlbVDzB/KZLJPuVDF77otwYZXQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":707847},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"cab98ccf67d565474164f23a74b4ad6b630a56e1","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.14_1747218569201_0.861037768870736","host":"s3://npm-registry-packages-npm-production"}},"4.0.15":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.15","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.15","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"19d5a4d213b75866551b167c38751e67132312fc","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.15.tgz","fileCount":8,"integrity":"sha512-ObFgq23fdO41a5LZiVB3OerfO/xh3jpO8Svcxqg6iWHZyLJdj+wZBMxcq2SAb0nTygJh1euC8qjFfrEfEGUEJQ==","signatures":[{"sig":"MEUCIAE/nniWLg5IT8/G6uGjuggDlkjs1J8aM/TilTeSnliGAiEA9TmzokwAbc+FejKRg8iYu84dZHlM7jT6yQ7ZHlwxh/E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673273},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"378e36f36ec26a68ad006a6b974bae6c5c17e47c","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.15_1747282628192_0.13816961515715231","host":"s3://npm-registry-packages-npm-production"}},"4.0.16":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.16","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.16","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"fe8dd28a11884be4877e7ef7440f3c84333f7a64","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.16.tgz","fileCount":8,"integrity":"sha512-uR8cI/0UL5oxwtebzJ+dYHqZvmjo/n9IiaqIuodxXRNFarkS7Z0Cx4VbXkO/l3CfuXtLW929pfo5JWL9ijO6TA==","signatures":[{"sig":"MEYCIQDWR1KzWVruMhvLKf1CHPqdBL5wjwtEQnC4yCQnwnI1VQIhAP2MXKXb3Mlyh0HQgE+F8YUSS8MTnfRgtMmGjUR/kmuJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673273},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"831b00cccee86939f73e3197f2416e114cac1dee","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.16_1747291414738_0.4776060464183953","host":"s3://npm-registry-packages-npm-production"}},"4.0.17":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.17","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.17","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"4960ba1072f3d0776220f0c73fa26bde55d94903","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.17.tgz","fileCount":8,"integrity":"sha512-hg09yKcS8vjPKgAcECoH7eLGWK2fJylzwvrRe4D+iBXv9sgkSfPSOMxKWidQsxQgUWHiB5YDkHzmyLw75jD6kQ==","signatures":[{"sig":"MEUCICe8aTQ0oWlzNjLKrO3+pG1iSU+8LLpM2EKXvRNagWYoAiEA0VIQITllXbct7RnnTv+TtkvxWGxE1ktDgIBsLMtykjo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673273},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"4283cf7b090d001ca7b2033ea5e3ae55bca42783","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.17_1747722916575_0.9850976485740812","host":"s3://npm-registry-packages-npm-production"}},"4.0.18":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.18","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.18","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"46caa9872089b767e1526f3fc586c5fa3c31e4fb","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.18.tgz","fileCount":8,"integrity":"sha512-Yvy5wF/4p0wAf4ZFQf7Np5AX1bcXmn+rLz1rRHFTgAsyt62z4kE3CRXGZzTULh/vt4jeNUO75C9siwYuiOa3gw==","signatures":[{"sig":"MEQCIGh410QwOxZ6eIg3sUvOPCySLGdPxvJi7SHBZ5ng2JfoAiA6c4gJ2SlCxx4Xueaofv3AaF6W8rNafcyx2ol1e0unLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673273},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"b0f1d1e497f1fda1b9c89da88f89b56877ef27d7","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.18_1747974378045_0.14413995170725924","host":"s3://npm-registry-packages-npm-production"}},"4.0.19":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.19","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.19","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"c141759886a7f23cf582f9b79403816b1e8c54cc","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.19.tgz","fileCount":8,"integrity":"sha512-4yHemiFxhwzY16vKFbgkvWjRH84aB7NBMij4o66WoOXNQuHOduMTvW3darW5c5wciDCOkAnUuj2klqC7WfumXg==","signatures":[{"sig":"MEUCIDMjVm7V/f/azyQEwpJGa6Mq0/UnArVLbgPyH2YVJFCfAiEAkG/sTKsqY5DLuguUkNDoM0TBAd3n8MNcl4rKNKMzIUg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673273},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"c8705101ab46f2af4b37324ef3c89ba7db82b36e","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.19_1747974849273_0.7918361128794518","host":"s3://npm-registry-packages-npm-production"}},"4.0.20":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.20","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.20","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"ef935684039c5f82502eca096f80d3995f39cdc9","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.20.tgz","fileCount":8,"integrity":"sha512-7zCmsTxNcMHXNk72k9YkkvHU+Hm2DvC2j7/i+3FWv01KZoXY1dMcHOA4EkdAJPGFEIft6t+Wf3vjpJXXoE6OTg==","signatures":[{"sig":"MEUCIBukmmMA/SXZB4LFn4kaMDaGqgZ60YgysiQy2gOUJ24NAiEAox7T5f/iRQz34F+IMFFVuKsGja1q7iZ0CtzVxDM/JbI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673273},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"439af395da277327a429a5d54526cd34dc550e72","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.20_1747975898923_0.3478174638168834","host":"s3://npm-registry-packages-npm-production"}},"4.0.21":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.21","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.21","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"e22a8741de9de1a6f228d73dc4b722ae797740d0","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.21.tgz","fileCount":8,"integrity":"sha512-FLEkq8gzMS0R0W+ma7Ck53WfrYt+jGIE6CgG074BTCLPTeM4hP7wbWluo7OneWQgPE0bBfbPUhW1I8tTY0yzCA==","signatures":[{"sig":"MEUCIQCvTW1/xFMKhprCbHWzJDikF9cP8VWZPc8cki1NzAYCbQIgXU7ELqLHmTXp+SibLIG4Vpw7IZ9fC7oGR9tboOj/dR8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673273},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"6d4bf7b63c1d77fe3653e1faa1f8df0f26ef8674","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.21_1750043953787_0.8613930564646703","host":"s3://npm-registry-packages-npm-production"}},"4.0.22":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.22","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.22","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"f1f44aa94629cbf0577ddb4f667f6515658b189b","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.22.tgz","fileCount":8,"integrity":"sha512-NoxDzpBvd6o2PmLnAYq+aOOvS0jT73NrJaOvMkhnG3tGdiRoLqs/W3DKNR62UqSCnUcoh//l8jkBxaU83VrUaQ==","signatures":[{"sig":"MEQCIF0+rH4e2cYuBC1vSIIALlHVy9ZxIpqywaew8VXEjr3+AiBp+s2j5uWe+stGsbfxhAW+8jK/mRKs8OHtTwc6thnL9g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673273},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"c217cd2bda95039c7901bfa4fdafa62f357c105f","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","actor":{"name":"holdstation","type":"user","email":"developer@holdstation.com"},"email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.22_1750395576483_0.039807167845256064","host":"s3://npm-registry-packages-npm-production"}},"4.0.23":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.23","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.23","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"4e38d8526d8bfc68d7bf89332f20263399e3c5c5","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.23.tgz","fileCount":8,"integrity":"sha512-ZIVXPdZqoBmDG7yxV7OOgQ1/XmFFR6h1pIhYAR0LrLw1kYTH1X5cLo/gQQ3fL/rj3elMWbRv4c3TtQFNhXRTPQ==","signatures":[{"sig":"MEYCIQCCwDa+XWzHPf24FBxKTyA6plf/XZhyx+jG1m6RkoEMaQIhAO0OYa31AZFHlrqX90Xm/uN/amFbDFDHgA11kjYUh3lZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673273},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"8ef271ef09666fbfd17851305e896ea437a0c96e","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","actor":{"name":"holdstation","type":"user","email":"developer@holdstation.com"},"email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.23_1751118875234_0.11065869197186373","host":"s3://npm-registry-packages-npm-production"}},"4.0.24":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.24","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.24","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"19c1ffa72340a533931e2b37639db5155480f47c","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.24.tgz","fileCount":8,"integrity":"sha512-uncs6UdsYCr8Ne3Tag9ImLAGEVfUIfG23PostPsaMvSDU7woqEIT9CN2V4FzptKOlTJdAEvijzDr75JST2mbVw==","signatures":[{"sig":"MEYCIQDz40NzPkBVLPhSW2Vr3zKlDAYE8mJHSLZZTuUtJvTMVQIhAIi9fqtEwkTqlke6llV6FSAUItQ7Fsk620RoTXGewc1I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673273},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"9caa6aba77ed58ad5e10c791487a9930ae2f83d2","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","actor":{"name":"holdstation","type":"user","email":"developer@holdstation.com"},"email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.24_1751358527849_0.15965974202313937","host":"s3://npm-registry-packages-npm-production"}},"4.0.25":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.25","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.25","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"fe647821249f71c43cea2237b5a0babf39bef703","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.25.tgz","fileCount":8,"integrity":"sha512-bfEdB6KQObttGS1DkeN/YuOrDSBeMVIwqW+cLS5ldqp142Q9ZgWngpMd4gB0yk29HUtUO92UZxB3/7mg3j1aCw==","signatures":[{"sig":"MEQCIA3F99Tm9eRdKE49RZnUSK45ZsYFdCd0C45hg/D6ZF8QAiB6LgGiJI+BIxiOAQZFPLWcr2+prbKS0iylF+PNfEY2tQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673273},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"6d01af69bb21435730399806304ed12e16f5ef88","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","actor":{"name":"holdstation","type":"user","email":"developer@holdstation.com"},"email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.25_1751359298374_0.3428932878951174","host":"s3://npm-registry-packages-npm-production"}},"4.0.26":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.26","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.26","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"425d5b0bdd6591d3e268942d6b47eece21216a6f","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.26.tgz","fileCount":8,"integrity":"sha512-udKXF10WsnYl5ARD3NM6ZC6pP8iOYZJW6DC37PPZMu64+QRbqBg0Rf6L679twFXsHxDrEbcO/tPa+jrAdOXdCw==","signatures":[{"sig":"MEQCIEwwHNjv/pwkSKqzxnJMBggcUKltVxrDakI/urO4h79uAiABQEJNXQlkFa15RCVEggEM0gpCOSnwtHvdFxhmo4dxIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673273},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"6e6cbaa752ecd7b3c21073480a418ff86ff4d04c","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","actor":{"name":"holdstation","type":"user","email":"developer@holdstation.com"},"email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.26_1751361210342_0.03659981560784975","host":"s3://npm-registry-packages-npm-production"}},"4.0.27":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.27","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.27","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"92821f7ba8c5ec2c7f230efbe8f0022fdfa2f13a","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.27.tgz","fileCount":8,"integrity":"sha512-e49iZiVaVtyyCXwDoatnEWtdfK7unNu304dKxWKDoqQZ4cEWKs+nh3iZf/+DXx77fvJ9tCZERDxjqa1yJ/RUjA==","signatures":[{"sig":"MEUCIQCoDZ2ozWVEmpCli3e+qEDosqwkYEWyjoIZOQIAN8scSwIgOVbRK8TdJQlY+lP/QIehCjP2m1CQqiJpwJ6cPVNT7nQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673273},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"7134621f029918e999e321e227188331ae994ce3","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.27_1752217432303_0.2081451391221545","host":"s3://npm-registry-packages-npm-production"}},"4.0.28":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.28","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.28","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"08d04444c8a4bff0e1fe4523630a9e7447870407","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.28.tgz","fileCount":8,"integrity":"sha512-jmZd2m4mdgehqwlFqd4YAyf56o8Ej+QrSF8H2WwXAA2rTlbkpXEWYuSyiZic5V5li10hnaaP8BaESX7FeqY0jQ==","signatures":[{"sig":"MEQCICr7VbShwdc+OxbeuvYQ5MG0QUEpYOVxJe2ESqLvz1J8AiB7F5wiXLS0A29oBvrEuUj160se7kIKrIv7rprFMkvB7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673273},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"1ca59506d8528bb9519ce0545c6182e67a8a1d02","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.28_1752218137359_0.07351202783088207","host":"s3://npm-registry-packages-npm-production"}},"4.0.29":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.29","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.29","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"547f5ce84cc67efcb8ce8d76556ec8e8d5fe8d82","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.29.tgz","fileCount":8,"integrity":"sha512-6NBLao7qKAzqdI1+1/RY4vA3rHEojisZTApxvAAkZXs3sYQYlKro9wm6vl/8RlCEV5zX+tD5ld6HPQro713icQ==","signatures":[{"sig":"MEQCIBo77g0YaoKFMbnAT/Elru56VqvT3v223Jxw0DvRGylKAiAy1guzhPVHA+RZV6US+rS3eT8lcBycRvYRXLRDQpU5pg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673273},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"c53bda6b8eccf8a3d54af25f16e7aaa005952ecd","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.29_1752218563146_0.37916286341826","host":"s3://npm-registry-packages-npm-production"}},"4.0.30":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.30","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.30","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"3e7855c93b21d4f7968639dc07cf1e6325868fa5","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.30.tgz","fileCount":8,"integrity":"sha512-gs2UPBQNHfc0ei+EUw62m9VOwbyLwOt1EntApne+pIawHrKUtKQN8T9lMWLcmoitIvuDywAp6T/cZJtQp49GjA==","signatures":[{"sig":"MEQCIFV+2rXU65ONLlUuJbo5tn27itlSCL9HHStY1TG5ox8JAiAGKI6ZiZ/tWQ2tCw/nJvHlqSyPZ7BLSagWEh1HH0tRiw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673273},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"4e6e63732ffc16c3f16cc877e1e89e96bed11d1d","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.30_1757910984252_0.7350476330118074","host":"s3://npm-registry-packages-npm-production"}},"4.0.31":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.31","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.31","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"676deb818f03d3ee6ccfc7bcd037212ee113c23f","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.31.tgz","fileCount":8,"integrity":"sha512-2tcuKd9FXC7enpFFK4RbxB3XxsO7M9kqQmvC+IonezWU7KNQCNEUFvA4C1aJk7ir3kZilUjmqVWczYRZ6sS4ow==","signatures":[{"sig":"MEYCIQC/0C8sFl8Mg9X6be0AyaRRxNu45oripEC1rrBhWHqUHAIhAN+PrD8IvPBaD2VG4+FX8wedc+ROgcyYPD2xPp8Ucypq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673273},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"b831dd946da140510954d85b2ec6fa27deb78933","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.31_1759137221577_0.8893498388214749","host":"s3://npm-registry-packages-npm-production"}},"4.0.32":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.32","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.32","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"8043816cd9df99b2290e20bc3be31f3705e0c11b","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.32.tgz","fileCount":8,"integrity":"sha512-9u6DCvX/XA9gG9ChUzwIehnbB/srFx4hosKz2Hc7YFawj2JjcoVZVO6lizdq9t1fWOrQObZOO2McofxuBVpI3w==","signatures":[{"sig":"MEQCIH3dSa29pwJ+H7S6jJsp8HhdGBEHgT8eakbz9fG8sGK2AiBq8ftpweatEKjGvkUo0YO4HOLIILWoI3lB7I3oKUIgFw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673273},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"5b74d90da5fe147e96845caaea3f3c3a5d0c2794","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.32_1763105332039_0.7521046777210334","host":"s3://npm-registry-packages-npm-production"}},"4.0.33":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.33","author":"","license":"MIT","_id":"@holdstation/worldchain-ethers-v5@4.0.33","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"homepage":"https://holdstation.com","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"dist":{"shasum":"5df78a473da766b5fb7ee58cd7a0f357b71f39c9","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.33.tgz","fileCount":8,"integrity":"sha512-+7FE7w+rg3ZKwb7YEkxy4vkNZql6CUM7o/Wcp6CH3+47rxNE4nAmJOJ3O37uTWgv4wFcsbyPrlJlwKWCcm2aEQ==","signatures":[{"sig":"MEUCIQDv6GaqfxjhO27TJpIhlCU5sizFPPCZVSoKVv27g9Tx5AIgX0SlIEn/wxPXbHVLUpbD/+bZxTzVzD4rXKk1+1H0A2E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673273},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"b0e69ca95a3679435aa84490b11bc2eb4a739138","scripts":{"dev":"tsup --watch","build":"rimraf dist && tsup --minify"},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"repository":{"url":"git+https://github.com/holdstation/worldchain-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","directories":{},"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"peerDependencies":{"ethers":"^5.8.0","@holdstation/worldchain-sdk":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/worldchain-ethers-v5_4.0.33_1763106023866_0.1554088217620464","host":"s3://npm-registry-packages-npm-production"}},"4.0.34":{"name":"@holdstation/worldchain-ethers-v5","version":"4.0.34","description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","author":"","license":"MIT","homepage":"https://holdstation.com","repository":{"type":"git","url":"git+https://github.com/holdstation/worldchain-sdk.git"},"main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","publishConfig":{"access":"public"},"scripts":{"build":"rimraf dist && tsup --minify","dev":"tsup --watch"},"peerDependencies":{"@holdstation/worldchain-sdk":"^4.0.0","ethers":"^5.8.0"},"devDependencies":{"@holdstation/worldchain-sdk":"^4.0.0","ethers":"^5.8.0"},"_id":"@holdstation/worldchain-ethers-v5@4.0.34","gitHead":"e1d5d81a097706e7a1b9101a0069c69e21cc5324","bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"_nodeVersion":"20.19.5","_npmVersion":"10.8.2","dist":{"integrity":"sha512-t6mlGaQdx23npk5nxcXIiklJ4U3Ch26zAhCuF/b9R1Qg4CllBhSFKy2dFRNMjWltR8BVE/Dt1xB8owKTmhH4fg==","shasum":"fe5032c7929b708933244b1455d1e6eeceb1fe24","tarball":"https://registry.npmjs.org/@holdstation/worldchain-ethers-v5/-/worldchain-ethers-v5-4.0.34.tgz","fileCount":8,"unpackedSize":91222,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDfJGFqgZoH6/MV2bajrz2PX9LLaNPAqA1SBwdCpuH9dgIhAJhHN+tYE6o9ATa+y6ZtOOWH6bXemv54nq5HFxU7DLxM"}]},"_npmUser":{"name":"holdstation","email":"developer@holdstation.com"},"directories":{},"maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/worldchain-ethers-v5_4.0.34_1763108956657_0.6477421852714171"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-07T11:10:18.588Z","modified":"2025-11-14T08:29:17.029Z","4.0.4":"2025-05-07T11:10:19.065Z","4.0.5":"2025-05-08T03:54:56.008Z","4.0.6":"2025-05-08T07:51:43.900Z","4.0.7":"2025-05-08T10:29:34.177Z","4.0.8":"2025-05-09T04:41:17.769Z","4.0.9":"2025-05-13T04:16:12.371Z","4.0.10":"2025-05-14T07:37:41.815Z","4.0.11":"2025-05-14T09:17:25.314Z","4.0.12":"2025-05-14T09:56:05.186Z","4.0.13":"2025-05-14T10:19:36.690Z","4.0.14":"2025-05-14T10:29:29.424Z","4.0.15":"2025-05-15T04:17:08.467Z","4.0.16":"2025-05-15T06:43:34.985Z","4.0.17":"2025-05-20T06:35:16.776Z","4.0.18":"2025-05-23T04:26:18.274Z","4.0.19":"2025-05-23T04:34:09.502Z","4.0.20":"2025-05-23T04:51:39.197Z","4.0.21":"2025-06-16T03:19:13.999Z","4.0.22":"2025-06-20T04:59:36.669Z","4.0.23":"2025-06-28T13:54:35.445Z","4.0.24":"2025-07-01T08:28:48.076Z","4.0.25":"2025-07-01T08:41:38.577Z","4.0.26":"2025-07-01T09:13:30.557Z","4.0.27":"2025-07-11T07:03:52.566Z","4.0.28":"2025-07-11T07:15:37.582Z","4.0.29":"2025-07-11T07:22:43.459Z","4.0.30":"2025-09-15T04:36:24.457Z","4.0.31":"2025-09-29T09:13:41.778Z","4.0.32":"2025-11-14T07:28:52.252Z","4.0.33":"2025-11-14T07:40:24.056Z","4.0.34":"2025-11-14T08:29:16.852Z"},"bugs":{"url":"https://github.com/holdstation/worldchain-sdk/issues"},"license":"MIT","homepage":"https://holdstation.com","repository":{"type":"git","url":"git+https://github.com/holdstation/worldchain-sdk.git"},"description":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core","maintainers":[{"name":"holdstation","email":"developer@holdstation.com"}],"readme":"lamlv2305: $#folder:packages help me config yarn workspace, so i want #file:multicall3.ts  can import interface from package @holdstation/worldchain-sdk at #folder:core \n\nGitHub Copilot: To configure Yarn workspaces so that your package in ether-v5 can import interfaces from `@holdstation/worldchain-sdk` in core, follow these steps:\n\n1. **Create a root package.json** (if you don't have one) at worldchain-sdk with a `workspaces` field:\n\n````json\n{\n  \"private\": true,\n  \"workspaces\": [\n    \"packages/*\"\n  ]\n}\n````\n\n2. **Update `@holdstation/worldchain-sdk` package name**  \nYour package.json already has `\"name\": \"@holdstation/worldchain-sdk\"`, which is correct.\n\n3. **Add dependency in `ether-v5`**  \nIn package.json, add `@holdstation/worldchain-sdk` as a dependency:\n\n````json\n{\n  // ...existing code...\n  \"dependencies\": {\n    \"@holdstation/worldchain-sdk\": \"*\"\n    // ...other dependencies...\n  }\n  // ...existing code...\n}\n````\n\n4. **Install dependencies**  \nFrom your monorepo root, run:\n```sh\nyarn install\n```\n\n5. **Import interfaces**  \nNow, in your code (like in packages/ether-v5/src/multicall3.ts), you can import from `@holdstation/worldchain-sdk` as you are already doing.\n\n---\n\n**Summary:**  \n- Ensure the root package.json has a `workspaces` field.\n- Reference `@holdstation/worldchain-sdk` in your dependent package's package.json.\n- Run `yarn install` at the root.\n- Use imports as normal.\n\nLet me know if you need help with a specific step!\n\nlamlv2305: do i need to build core before run ?\n\nGitHub Copilot: Yes, you typically need to build `@holdstation/worldchain-sdk` before running or building `@holdstation/worldchain-ethers-v5`, especially if `core` is written in TypeScript or needs a build step to generate output files (like `dist/` or `lib/`).\n\n**Why?**  \nWhen you import from `@holdstation/worldchain-sdk`, your code expects the compiled output (e.g., `.js` and `.d.ts` files) to be present. If you haven't built `core`, those files may not exist, causing import errors.\n\n**Best practice:**  \n- Build `core` first.\n- Then build or run `ether-v5`.\n\n**Tip:**  \nYou can automate this with a root-level script using [Yarn workspaces](https://classic.yarnpkg.com/en/docs/workspaces/) or [Lerna](https://lerna.js.org/), or use [yarn workspaces run](https://classic.yarnpkg.com/en/docs/cli/workspaces/) to build all packages in the correct order:\n\n```sh\nyarn workspaces run build\n```\n\nThis will run the `build` script in all your packages, respecting dependency order.\n\nlamlv2305: how to let this package using @holdstation/worldchain-sdk\n\nI'm using yarn workspace\n\nGitHub Copilot: To use `@holdstation/worldchain-sdk` in your `@holdstation/worldchain-ethers-v5` package with Yarn workspaces, follow these steps:\n\n1. **Monorepo structure**  \nYour folders should look like:\n```\n/worldchain-sdk/\n  package.json         // <-- root, with \"workspaces\"\n  /packages/\n    /core/             // <-- @holdstation/worldchain-sdk\n      package.json\n    /ether-v5/         // <-- @holdstation/worldchain-ethers-v5\n      package.json\n```\n\n2. **Root package.json**  \nMake sure your root package.json has:\n````json\n{\n  \"private\": true,\n  \"workspaces\": [\n    \"packages/*\"\n  ]\n}\n````\n\n3. **Dependency in `ether-v5`**  \nYour package.json already has:\n```json\n\"dependencies\": {\n  \"@holdstation/worldchain-sdk\": \"*\",\n  \"ethers\": \"^5.8.0\"\n}\n```\nThis is correct.\n\n4. **Install dependencies**  \nFrom the root of your monorepo, run:\n```sh\nyarn install\n```\nYarn will link `@holdstation/worldchain-sdk` from core into node_modules of `ether-v5`.\n\n5. **Build order**  \nIf `core` needs to be built (e.g., TypeScript), build it first:\n```sh\ncd packages/core\nyarn build\n```\nThen build `ether-v5`:\n```sh\ncd ../ether-v5\nyarn build\n```\nOr, from the root, run:\n```sh\nyarn workspaces run build\n```\nThis will build all packages in dependency order.\n\n6. **Import in code**  \nNow you can import from `@holdstation/worldchain-sdk` in your TypeScript files:\n```typescript\nimport { SomeInterface } from \"@holdstation/worldchain-sdk\";\n```\n\n---\n\n**Summary:**  \n- Use Yarn workspaces in the root.\n- Add `@holdstation/worldchain-sdk` as a dependency.\n- Run `yarn install` at the root.\n- Build `core` before `ether-v5`.\n- Import as normal in your code.\n\nLet me know if you need help with a specific step!\n\nlamlv2305:   decodeFunctionResult(functionFragment: string, data: string): Result {\n    const iface = new ethers.utils.Interface([functionFragment]);\n    return iface.decodeFunctionResult(functionFragment, data);\n  }\n\n  does it correct ?\n\nGitHub Copilot: Your implementation is **almost correct** for simple use cases, but it has a subtle issue:\n\n- `ethers.utils.Interface([functionFragment])` expects an ABI fragment (like a function signature), but when you call `decodeFunctionResult(functionFragment, data)`, the first argument should be the **function name** (not the full fragment/signature).\n\n**If `functionFragment` is a full signature (e.g., `\"function balanceOf(address) view returns (uint256)\"`),** you should extract the function name (e.g., `\"balanceOf\"`) when calling `decodeFunctionResult`.\n\n**Example fix:**\n````typescript\ndecodeFunctionResult(functionFragment: string, data: string): Result {\n  const iface = new ethers.utils.Interface([functionFragment]);\n  // Extract function name from the fragment\n  const functionName = iface.fragments[0].name;\n  return iface.decodeFunctionResult(functionName, data);\n}\n````\n\n**Summary:**  \n- If you pass a full function fragment, extract the function name for decoding.\n- If you already pass just the function name, your original code is fine.\n\n**Recommendation:**  \nUse the fix above for robustness.\n\nlamlv2305: review encodeFunctionData \n\nGitHub Copilot: Your `encodeFunctionData` implementation works if `functionFragment` is a full function fragment (e.g., `\"function balanceOf(address) view returns (uint256)\"`).  \nHowever, `iface.encodeFunctionData` expects the **function name** (e.g., `\"balanceOf\"`) as the first argument, not the full fragment.\n\n**Current code:**\n````typescript\nencodeFunctionData(functionFragment: string, values?: any[]): string {\n  const iface = new ethers.utils.Interface([functionFragment]);\n  return iface.encodeFunctionData(functionFragment, values);\n}\n````\n\n**Issue:**  \nIf you pass the full fragment as both the ABI and the function name, it will throw an error.\n\n**Recommended fix:**  \nExtract the function name from the fragment, similar to your `decodeFunctionResult`:\n\n````typescript\nencodeFunctionData(functionFragment: string, values?: any[]): string {\n  const iface = new ethers.utils.Interface([functionFragment]);\n  const functionName = iface.fragments[0].name;\n  return iface.encodeFunctionData(functionName, values);\n}\n````\n\n**Summary:**  \n- Extract the function name from the fragment before calling `encodeFunctionData`.\n- This makes your method robust for full function fragments.\n\nlamlv2305: make `encodeFunctionData` for viem please \n\nGitHub Copilot: ````typescript\nimport { encodeFunctionData as viemEncodeFunctionData, parseAbi } from 'viem'\n\nexport class ViemClient implements Client {\n  // ...existing code...\n\n  encodeFunctionData(functionFragment: string, values?: any[]): string {\n    const abi = parseAbi([functionFragment]);\n    const functionName = abi[0].name;\n    return viemEncodeFunctionData({\n      abi,\n      functionName,\n      args: values ?? [],\n    });\n  }\n\n  // ...existing code...\n}\n````\n\n**Notes:**\n- This uses `parseAbi` to parse the function fragment and extract the function name.\n- Uses `viem`'s `encodeFunctionData` utility for encoding.\n- Assumes `functionFragment` is a full function signature (e.g., `\"function balanceOf(address) view returns (uint256)\"`).\n\nlamlv2305: you are liar\n\nProperty 'name' does not exist on type 'never'\n\nArgument of type '{ abi: never; functionName: any; args: any[]; }' is not assignable to parameter of type 'never'.ts(2345)\n\nGitHub Copilot: Thank you for pointing out the error. The issue is that `parseAbi([functionFragment])` returns `never[]` if the input is not a valid ABI fragment or if the types are not inferred correctly.\n\n**How to fix:**\n\nYou should use the correct ABI type for `parseAbi` and ensure the fragment is a valid function signature.  \nHere’s a robust way to implement `encodeFunctionData` for Viem:\n\n````typescript\nimport { AbiFunction, parseAbi, encodeFunctionData as viemEncodeFunctionData } from 'viem'\n\nencodeFunctionData(functionFragment: string, values?: any[]): string {\n  // parseAbi returns Abi[], so we cast it to AbiFunction[]\n  const abi = parseAbi([functionFragment]) as AbiFunction[];\n  if (!abi.length || !abi[0].name) {\n    throw new Error('Invalid function fragment');\n  }\n  const functionName = abi[0].name;\n  return viemEncodeFunctionData({\n    abi,\n    functionName,\n    args: values ?? [],\n  });\n}\n````\n\n**Key points:**\n- Cast the result of `parseAbi` to `AbiFunction[]`.\n- Check that the ABI and function name exist.\n- Now TypeScript will recognize the `name` property and the types will match.\n\nLet me know if you need further help!\n\nlamlv2305: how about decode ?\n\nGitHub Copilot: Here’s how you can implement `decodeFunctionResult` for Viem using `parseAbi` and `decodeFunctionResult` from `viem`:\n\n````typescript\nimport { AbiFunction, parseAbi, decodeFunctionResult as viemDecodeFunctionResult } from 'viem'\n\ndecodeFunctionResult(abi: string[], functionFragment: string, data: string): Result {\n  const parsedAbi = parseAbi(abi) as AbiFunction[];\n  if (!parsedAbi.length || !parsedAbi[0].name) {\n    throw new Error('Invalid function fragment');\n  }\n  const functionName = parsedAbi[0].name;\n  return viemDecodeFunctionResult({\n    abi: parsedAbi,\n    functionName,\n    data,\n  });\n}\n````\n\n**Notes:**\n- This assumes `Result` matches the return type of `viemDecodeFunctionResult`.\n- If your `Result` type is different, you may need to adapt the return value accordingly.\n- Always ensure the ABI and function name are valid before decoding.\n\nlamlv2305: can u convert to interface Result extends ReadonlyArray<any> {\n    readonly [key: string]: any;\n}\n\nGitHub Copilot: Certainly! Here’s how you can convert your `Result` type to a TypeScript interface:\n\n````typescript\nexport interface Result extends ReadonlyArray<any> {\n    readonly [key: string]: any;\n}\n````\n\n**Usage:**  \n- This interface allows `Result` to behave like an array, but also have additional named properties (like ethers.js call results).\n- You can now import and use `Result` as an interface in your TypeScript code.\n\nIf you want to replace the existing type declaration, just swap `interface` for `type` in your code as shown above.\n\nlamlv2305: Type 'unknown' must have a '[Symbol.iterator]()' method that returns an iterator.ts(2488)\n\nGitHub Copilot: The error occurs because Viem's `readContract` return types are not properly typed as iterables for destructuring. Let's fix the `aggregate` method:\n\n````typescript\nimport { Aggregate, Aggregate3, Multicall3, abi, config } from '@holdstation/worldchain-sdk'\nimport { createPublicClient, parseAbi } from 'viem'\n\nexport class ViemMulticall3 implements Multicall3 {\n  private readonly address: `0x${string}`\n\n  constructor(private publicClient: ReturnType<typeof createPublicClient>) {\n    this.address = config.multicall3Address as `0x${string}`\n  }\n\n  async aggregate(calls: Aggregate['request'][]): Promise<Aggregate['response']> {\n    const result = await this.publicClient.readContract({\n      address: this.address,\n      abi: parseAbi(abi.MULTICALL3_ABI),\n      functionName: 'aggregate',\n      args: [calls],\n    });\n    \n    // Cast the result to the expected tuple type\n    const resultArray = result as [bigint, { returnData: string }[]];\n    const blockNumber = resultArray[0];\n    const returnStructs = resultArray[1];\n\n    return [blockNumber, returnStructs.map((c) => c.returnData)];\n  }\n\n  async aggregate3(calls: Aggregate3['request'][]): Promise<Aggregate3['response'][]> {\n    const results = await this.publicClient.readContract({\n      address: this.address,\n      abi: parseAbi(abi.MULTICALL3_ABI),\n      functionName: 'aggregate3',\n      args: [calls],\n    }) as { success: boolean, returnData: string }[];\n\n    return results.map((item) => ({\n      blockNumber: 0n, // Multicall3 aggregate3 usually does not return blockNumber\n      returnData: item.returnData,\n      success: item.success,\n      error: item.success ? undefined : 'Call failed',\n    }));\n  }\n}\n````\n\n**The key changes:**\n1. Don't use array destructuring directly on the result\n2. Cast the result to the expected type\n3. Access the tuple elements by index\n4. Then extract and map the data as needed\n\nThis ensures TypeScript knows the shape of the data and can verify the operations are valid.\n\nlamlv2305:   async aggregate3(calls: Aggregate3[\"request\"][]): Promise<Aggregate3[\"response\"][]> {\n    const [block, data] = await this.contract.aggregate3(calls);\n\n    return data.map((item: any) => {\n      return {\n        blockNumber: block,\n        returnData: item.returnData,\n        success: item.success,\n        error: item.error,\n      };\n    });\n  }\n\n  is this true for multicall3, i think they do not return block\n\nGitHub Copilot: You're correct. For `aggregate3` in Multicall3, the contract doesn't return a block number - it only returns an array of result objects.\n\nLet's fix your implementation:\n\n````typescript\nasync aggregate3(calls: Aggregate3[\"request\"][]): Promise<Aggregate3[\"response\"][]> {\n  // Multicall3.aggregate3 only returns the results array, not a block number\n  const results = await this.contract.aggregate3(calls);\n\n  return results.map((item: any) => {\n    return {\n      blockNumber: 0, // No block number from aggregate3\n      returnData: item.returnData,\n      success: item.success,\n      error: item.success ? undefined : \"Call failed\", // Only include error if success is false\n    };\n  });\n}\n````\n\n**Important changes:**\n1. `aggregate3` returns only the results array, not a tuple with block number\n2. We've added a default block number of `0`\n3. Added logic to only include error when success is false\n\nYou might want to get the current block number separately if needed in your implementation.\n\nlamlv2305: why i got error when pass publicClient to `new ViemMulticall3(publicClient)`\n\nGitHub Copilot: The error occurs because the `ViemMulticall3` constructor expects a specific type for `publicClient`, but you might be passing a slightly different type. This is likely due to how the `createPublicClient` function is typed in Viem.\n\nHere are a few ways to fix it:\n\n1. **Fix the constructor type declaration:**\n\n````typescript\nimport { type PublicClient } from 'viem'\n\nexport class ViemMulticall3 implements Multicall3 {\n  private readonly address: `0x${string}`\n\n  constructor(private publicClient: PublicClient) {\n    this.address = config.multicall3Address as `0x${string}`\n  }\n  \n  // ...rest of the code\n}\n````\n\n2. **Add a type cast in the test:**\n\n````typescript\nimport { type PublicClient } from 'viem'\n\nit('call balance on chain', async () => {\n  const multicall = new ViemMulticall3(publicClient as PublicClient)\n})\n````\n\nThe issue is likely that your constructor is using `ReturnType<typeof createPublicClient>`, but you're creating the client with specific options like `batch` and `cacheTime` which might be narrowing the type.\n\nUsing the `PublicClient` type directly (rather than `ReturnType<typeof createPublicClient>`) is generally more reliable for this use case.\n\nlamlv2305: Index signature in type 'Result' only permits reading.\n\nGitHub Copilot: The error occurs because you're trying to modify the `Result` type, but its index signature is defined as `readonly`. Let's fix the `toResult` method:\n\n````typescript\nimport { Result } from '@holdstation/worldchain-sdk'\nimport { Abi, decodeFunctionResult, encodeFunctionData as viemEncode } from 'viem'\n\nexport class ViemCodec implements AbiCodec {\n  constructor(private abi: Abi) {}\n\n  encodeFunctionData(fnName: string, args: unknown[] = []): string {\n    return viemEncode({ abi: this.abi, functionName: fnName, args })\n  }\n\n  decodeFunctionData(fnName: string, data: string): Result {\n    const fn = this.abi.find((f) => f.type === 'function' && f.name === fnName)\n    if (!fn || !('outputs' in fn)) {\n      throw new Error(`Function ${fnName} not found in ABI`)\n    }\n\n    const { result } = decodeFunctionResult({\n      abi: this.abi,\n      functionName: fnName as any,\n      data: data as `0x${string}`,\n    })\n\n    const keys = fn.outputs?.map((o) => o.name || '') ?? []\n    return this.toResult(result as any[], keys)\n  }\n\n  private toResult(values: any[], keys: string[]): Result {\n    // Create a new object with both array-like and named properties\n    const resultObj: Record<string | number, any> = {}\n    \n    // Add array indices\n    values.forEach((val, i) => {\n      resultObj[i] = val\n    })\n    \n    // Add named properties\n    keys.forEach((key, i) => {\n      if (key) { // Only add if key name exists\n        resultObj[key] = values[i]\n      }\n    })\n    \n    // Add length property\n    resultObj.length = values.length\n    \n    // Use Object.assign to cast to Result\n    return Object.assign(values.slice(), resultObj) as unknown as Result;\n  }\n}\n````\n\n**Key changes:**\n1. Instead of modifying the array directly, we:\n   - Create a copy of the array using `slice()`\n   - Use `Object.assign` to add the named properties\n   - Cast the result to `Result`\n\nThis approach creates a new array with the desired properties, avoiding the issue with the readonly index signature.\n\nlamlv2305: Property 'result' does not exist on type 'unknown'.\n\nGitHub Copilot: The error occurs because the return value of `decodeFunctionResult` in Viem doesn't have a guarantee that it contains a `result` property. Let's fix the `decodeFunctionData` method:\n\n````typescript\nimport { AbiCodec, Result } from '@holdstation/worldchain-sdk'\nimport { Abi, decodeFunctionResult, encodeFunctionData as viemEncode } from 'viem'\n\nexport class ViemCodec implements AbiCodec {\n  constructor(private abi: Abi) {}\n\n  encodeFunctionData(fnName: string, args: unknown[] = []): string {\n    return viemEncode({ abi: this.abi, functionName: fnName, args })\n  }\n\n  decodeFunctionData(fnName: string, data: string): Result {\n    const fn = this.abi.find((f) => f.type === 'function' && f.name === fnName)\n    if (!fn || !('outputs' in fn)) {\n      throw new Error(`Function ${fnName} not found in ABI`)\n    }\n\n    const decoded = decodeFunctionResult({\n      abi: this.abi,\n      functionName: fnName as any,\n      data: data as `0x${string}`,\n    })\n\n    // Viem doesn't return {result}, it returns the result directly\n    const values = decoded as any[]\n    const keys = fn.outputs?.map((o) => o.name || '') ?? []\n    return this.toResult(values, keys)\n  }\n\n  private toResult(values: any[], keys: string[]): Result {\n    // Create a new object with both array-like and named properties\n    const resultObj: Record<string | number, any> = {}\n\n    // Add array indices\n    values.forEach((val, i) => {\n      resultObj[i] = val\n    })\n\n    // Add named properties\n    keys.forEach((key, i) => {\n      if (key) {\n        // Only add if key name exists\n        resultObj[key] = values[i]\n      }\n    })\n\n    // Add length property\n    resultObj.length = values.length\n\n    // Use Object.assign to cast to Result\n    return Object.assign(values.slice(), resultObj) as unknown as Result\n  }\n}\n````\n\n**Key changes:**\n1. Removed the destructuring of `{ result }` from `decodeFunctionResult`\n2. Cast the return value directly to `any[]`\n3. Use that as your values array\n\nViem's `decodeFunctionResult` returns the decoded value directly, not an object with a `result` property.\n\nlamlv2305:  However, Jest was able to find:\n        './react.d.ts'\n\n    You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].\n\n    See https://jestjs.io/docs/configuration#modulefileextensions-arraystring\n\n    > 1 | 'use strict';var ethers=require('ethers'),asyncMutex=require('async-mutex'),idb=require('idb'),minikitJs=require('@worldcoin/minikit-js'),D=require('bignumber.js');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var D__default=/*#__PURE__*/_interopDefault(D);var L=Object.defineProperty;var F=(l,e)=>{for(var t in e)L(l,t,{get:e[t],enumerable:true});};var I={};F(I,{DEX_ABI:()=>f,MULTICALL3_ABI:()=>R,erc20:()=>d,uniswapQuoterV2ABI:()=>N,uniswapRouterV2ABI:()=>W,uniswapRouterV3ABI:()=>Q,viewQuoterv3ABI:()=>X});var f=[{type:\"receive\",stateMutability:\"payable\"},{type:\"function\",name:\"fillQuoteEthToToken\",inputs:[{name:\"buyTokenAddress\",type:\"address\",internalType:\"address\"},{name:\"target\",type:\"address\",internalType:\"address payable\"},{name:\"swapCallData\",type:\"bytes\",internalType:\"bytes\"},{name:\"f\n\n    when i run jest, and fail, they log whole my library source code, how to prevent it /\n\nGitHub Copilot: The issue is that Jest is failing to import modules and then showing your bundled source code in the error. To prevent Jest from showing your source code when tests fail, you can configure Jest to provide cleaner error messages.\n\nHere's how to solve the issues:\n\n1. **Fix the immediate import error**\n\nJest can't find the modules because you need to update your `jest.config.js` file.\n\n````javascript\nmodule.exports = {\n  // Transform TypeScript files\n  transform: {\n    '^.+\\\\.(ts|tsx)$': 'ts-jest',\n  },\n  // Tell Jest to look for test files with these extensions\n  moduleFileExtensions: ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'],\n  // Prevent verbose error reporting\n  verbose: false,\n  // Customize test reporters to reduce output\n  reporters: [\n    'default',\n    ['jest-silent-reporter', { useDots: true, showWarnings: true }]\n  ],\n  // Limit stack trace detail\n  testEnvironment: 'node',\n  // Reduce console output\n  silent: false,\n  // Don't print full error details\n  noStackTrace: true,\n  // Don't output full source when tests fail\n  testFailureExitCode: 1\n};\n````\n\n2. **Install the silent reporter**\n\n```bash\nyarn add --dev jest-silent-reporter\n```\n\n3. **Fix the import in your test file**\n\nMake sure file extensions match exactly and the file exists. For example, check if `mutilcall3.ts` should be `multicall3.ts`:\n\n````typescript\n// Fix import path if needed\nimport { ViemMulticall3 } from './multicall3'; // or './mutilcall3' if that's correct\n````\n\n4. **Run Jest with minimal output**\n\n```bash\nyarn jest --silent\n```\n\nThese changes should help reduce the verbose error output and prevent your entire source code from being displayed when tests fail.\n\nlamlv2305:   ● Test suite failed to run\n\n    Cannot find module 'react' from 'node_modules/zustand/index.js'\n\n    Require stack:\n      node_modules/zustand/index.js\n      node_modules/@worldcoin/idkit-core/build/index.cjs\n      node_modules/@worldcoin/minikit-js/build/index.cjs\n      packages/core/dist/index.js\n      packages/viem/src/multicall3.test.ts\n\n\n    However, Jest was able to find:\n        './react.d.ts'\n\n    You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].\n\n    See https://jestjs.io/docs/configuration#modulefileextensions-arraystring\n\n     why i got that error\n\nGitHub Copilot: The error shows that Jest is trying to load React when running your tests, even though your test shouldn't need React. This is happening because of dependencies in your import chain:\n\n```\nmulticall3.test.ts → core/dist/index.js → @worldcoin/minikit-js → @worldcoin/idkit-core → zustand → react\n```\n\nWhen Jest tries to resolve the React module in zustand, it can't find it because:\n\n1. React is not installed in your project\n2. The test environment is set up for Node.js, not for React\n\n## Here's how to fix it:\n\n1. **Install React as a dev dependency**\n   ```bash\n   yarn add --dev react react-dom\n   ```\n\n2. **Create a mock for React in your Jest config**\n   ```javascript\n   // filepath: /Volumes/hs/work/worldchain-sdk/jest.config.js\n   module.exports = {\n     // ... other config\n     moduleNameMapper: {\n       '^react$': '<rootDir>/node_modules/react',\n       '^react-dom$': '<rootDir>/node_modules/react-dom'\n     },\n     // For Node.js environment\n     testEnvironment: 'node',\n   }\n   ```\n\n3. **Alternatively, mock the dependencies**\n   ```javascript\n   // filepath: /Volumes/hs/work/worldchain-sdk/jest.config.js\n   module.exports = {\n     // ... other config\n     moduleNameMapper: {\n       '@worldcoin/minikit-js': '<rootDir>/__mocks__/minikit-js.js',\n     }\n   }\n   ```\n\n4. **Create the mock file**\n   ```javascript\n   // filepath: /Volumes/hs/work/worldchain-sdk/__mocks__/minikit-js.js\n   // Mock only what's needed by your tests\n   module.exports = {}\n   ```\n\nChoose the approach that makes the most sense for your project. Option 1 adds React, while Option 3+4 mocks the dependency that's causing the issue.\n\nlamlv2305:   TypeError: abi.filter is not a function\n\nGitHub Copilot: This error suggests that in your code, something is expecting `abi` to be an array (so it can call `filter` on it), but it's actually another type.\n\nThe issue is likely in your `ViemMulticall3` class when you're using `parseAbi(abi.MULTICALL3_ABI)`. \n\nLet's fix it:\n\n````typescript\nimport { Aggregate, Aggregate3, Multicall3, abi, config } from '@holdstation/worldchain-sdk'\nimport { parseAbi, type PublicClient } from 'viem'\n\nexport class ViemMulticall3 implements Multicall3 {\n  private readonly address: `0x${string}`\n  private readonly parsedAbi: any\n\n  constructor(private publicClient: PublicClient) {\n    this.address = config.multicall3Address as `0x${string}`\n    // Check what type is abi.MULTICALL3_ABI\n    if (Array.isArray(abi.MULTICALL3_ABI)) {\n      // It's already an array, so use it directly\n      this.parsedAbi = abi.MULTICALL3_ABI\n    } else {\n      // It's a string or other format, so parse it\n      this.parsedAbi = parseAbi(abi.MULTICALL3_ABI)\n    }\n  }\n\n  async aggregate(calls: Aggregate['request'][]): Promise<Aggregate['response']> {\n    const result = await this.publicClient.readContract({\n      address: this.address,\n      abi: this.parsedAbi,\n      functionName: 'aggregate',\n      args: [calls],\n    })\n\n    // Cast the result to the expected tuple type\n    const resultArray = result as [bigint, { returnData: string }[]]\n    const blockNumber = Number(resultArray[0])\n    const returnStructs = resultArray[1]\n\n    return [blockNumber, returnStructs.map((c) => c.returnData)]\n  }\n\n  async aggregate3(calls: Aggregate3[\"request\"][]): Promise<Aggregate3[\"response\"][]> {\n    const results = await this.publicClient.readContract({\n      address: this.address,\n      abi: this.parsedAbi, \n      functionName: 'aggregate3',\n      args: [calls],\n    }) as { success: boolean; returnData: string }[]\n\n    return results.map((item) => ({\n      blockNumber: 0n, // No block number from aggregate3\n      returnData: item.returnData,\n      success: item.success,\n      error: item.success ? undefined : \"Call failed\"\n    }));\n  }\n}\n````\n\n**Key changes:**\n1. Parse the ABI only once in the constructor\n2. Check if `abi.MULTICALL3_ABI` is already an array before parsing\n3. Use the parsed ABI in both methods\n\nThis should fix the \"abi.filter is not a function\" error.\n\nlamlv2305: i made mistake, i want to function similar with `decodeFunctionResult` of ethers@5.8.0, not `decodeFunctionData`\n\nGitHub Copilot: You're right - the function you implemented as `decodeFunctionData` should actually be named `decodeFunctionResult` to match ethers.js v5.8.0 naming.\n\nHere's the correct implementation:\n\n````typescript\nimport { AbiCodec, Result } from '@holdstation/worldchain-sdk'\nimport { Abi, decodeFunctionResult as viemDecodeFunctionResult, encodeFunctionData as viemEncode } from 'viem'\n\nexport class ViemCodec implements AbiCodec {\n  constructor(private abi: Abi) {}\n\n  encodeFunctionData(fnName: string, args: unknown[] = []): string {\n    return viemEncode({ abi: this.abi, functionName: fnName, args })\n  }\n\n  decodeFunctionResult(fnName: string, data: string): Result {\n    const fn = this.abi.find((f) => f.type === 'function' && f.name === fnName)\n    if (!fn || !('outputs' in fn)) {\n      throw new Error(`Function ${fnName} not found in ABI`)\n    }\n\n    const decoded = viemDecodeFunctionResult({\n      abi: this.abi,\n      functionName: fnName as any,\n      data: data as `0x${string}`,\n    })\n\n    // Viem doesn't return {result}, it returns the result directly\n    const values = decoded as any[]\n    const keys = fn.outputs?.map((o) => o.name || '') ?? []\n    return this.toResult(values, keys)\n  }\n\n  private toResult(values: any[], keys: string[]): Result {\n    // Create a new object with both array-like and named properties\n    const resultObj: Record<string | number, any> = {}\n\n    // Add array indices\n    values.forEach((val, i) => {\n      resultObj[i] = val\n    })\n\n    // Add named properties\n    keys.forEach((key, i) => {\n      if (key) {\n        // Only add if key name exists\n        resultObj[key] = values[i]\n      }\n    })\n\n    // Add length property\n    resultObj.length = values.length\n\n    // Use Object.assign to cast to Result\n    return Object.assign(values.slice(), resultObj) as unknown as Result\n  }\n}\n````\n\n**Key changes:**\n1. Changed the method name from `decodeFunctionData` to `decodeFunctionResult`\n2. Renamed the imported function from viem to `viemDecodeFunctionResult` for clarity\n3. Kept the implementation logic the same since it was already using `decodeFunctionResult` from viem\n\nThis matches ethers.js v5.8.0's interface more closely, where:\n- `encodeFunctionData` encodes function calls with arguments\n- `decodeFunctionResult` decodes the returned data from function calls\n\nlamlv2305: update my publish.yml to work with new yarn workspaces.\n\nI want to build whole packages. If any fail, please stop, after that, publish these packages to npm\n\nGitHub Copilot: Here's an updated GitHub workflow for publishing your Yarn workspace packages:\n\n````yaml\nname: Publish to npm\n\non:\n  push:\n    tags:\n      - 'v*.*.*'  # Trigger only on version tags like v1.2.3\n\njobs:\n  publish:\n    name: Publish npm packages\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v4\n\n      - name: Use Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: '20'  # Using LTS version\n          registry-url: 'https://registry.npmjs.org'\n\n      - name: Install dependencies\n        run: yarn install --frozen-lockfile\n\n      - name: Build packages\n        run: yarn workspaces run build\n        # This will build all packages in the workspace in the correct dependency order\n        # If any package build fails, the whole workflow will fail\n\n      - name: Publish packages\n        run: |\n          echo \"//registry.npmjs.org/:_authToken=${NPM_TOKEN}\" > .npmrc\n          # Loop through each package in packages directory\n          for dir in packages/*; do\n            if [ -f \"$dir/package.json\" ]; then\n              echo \"Publishing $dir\"\n              cd $dir\n              # Check if the package is private\n              IS_PRIVATE=$(node -p \"require('./package.json').private\")\n              if [ \"$IS_PRIVATE\" != \"true\" ]; then\n                npm publish --access public\n                echo \"✅ Published $dir\"\n              else\n                echo \"⏭️ Skipping private package $dir\"\n              fi\n              cd ../../\n            fi\n          done\n        env:\n          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}\n````\n\n**Key improvements:**\n\n1. **Uses Node.js LTS** (v20) instead of the unstable Node 23\n\n2. **Builds all workspace packages in dependency order** using `yarn workspaces run build`\n   - If any package build fails, the workflow will stop\n\n3. **Intelligently publishes all non-private packages** by:\n   - Looping through each package directory\n   - Checking if the package is private\n   - Publishing only non-private packages\n   - Using `--access public` for scoped packages\n\n4. **Better organization** with separate steps for building and publishing\n\nThis workflow ensures all your packages are built together, dependencies are respected, and only publishable packages are sent to npm.\n\nlamlv2305: hexZeroPad for ethers@v6\n\nGitHub Copilot: The `hexZeroPad` method in your `EthersClient` needs to be updated for ethers.js v6. In v6, the utility functions have been reorganized, and `hexZeroPad` is now accessed differently than in v5.\n\nHere's the updated implementation for ethers.js v6:\n\n````typescript\nimport { AbiCodec, Client, FilterLogs, logger, OnchainTransaction, Result } from \"@holdstation/worldchain-sdk\";\nimport { ethers } from \"ethers\";\nimport { EthersCodec } from \"./codec\";\n\nexport class EthersClient implements Client {\n  // ...existing code...\n\n  hexZeroPad(value: string, length: number): string {\n    // In ethers v6, hexZeroPad is now in the ethers.zeroPadValue function\n    // The signature has changed to take a BytesLike and return a \"0x\"-prefixed string\n    let hexValue = value;\n    \n    // Make sure the value has '0x' prefix\n    if (!hexValue.startsWith('0x')) {\n      hexValue = '0x' + hexValue;\n    }\n    \n    return ethers.zeroPadValue(hexValue, length);\n  }\n\n  // ...rest of the class...\n}\n````\n\n**Key changes:**\n1. `ethers.hexZeroPad` has been replaced with `ethers.zeroPadValue`\n2. The method now ensures that the value is properly prefixed with '0x'\n3. The function still accepts the same parameters (value and length)\n\nThis updated version is compatible with ethers.js v6 while maintaining the same functionality.\n\nlamlv2305: i have that script to bump version of package.json, however, they have devDependencies and peerDependencies still need to update to align with each other. \n\nModify it please \n\nGitHub Copilot: Here's an improved version of your bump script that also updates internal dependencies and peer dependencies to keep versions aligned:\n\n````javascript\nconst fs = require(\"fs\");\nconst path = require(\"path\");\n\nconst bump = (version, type) => {\n  const [major, minor, patch] = version.split(\".\").map(Number);\n  if (type === \"major\") return `${major + 1}.0.0`;\n  if (type === \"minor\") return `${major}.${minor + 1}.0`;\n  return `${major}.${minor}.${patch + 1}`;\n};\n\nconst packagesDir = path.join(__dirname, \"../packages\");\nconst type = process.argv[2] || \"patch\";\n\n// Step 1: Read all package.json files and their current versions\nconst packages = {};\nfs.readdirSync(packagesDir).forEach((pkgName) => {\n  const pkgPath = path.join(packagesDir, pkgName);\n  const stat = fs.statSync(pkgPath);\n\n  // Skip non-directories and hidden files\n  if (!stat.isDirectory() || pkgName.startsWith(\".\")) return;\n\n  const pkgJsonPath = path.join(pkgPath, \"package.json\");\n  if (!fs.existsSync(pkgJsonPath)) return;\n\n  const pkg = JSON.parse(fs.readFileSync(pkgJsonPath, \"utf-8\"));\n  packages[pkg.name] = {\n    path: pkgJsonPath,\n    currentVersion: pkg.version,\n    newVersion: bump(pkg.version, type),\n    json: pkg\n  };\n});\n\n// Step 2: Update versions in each package.json\nObject.keys(packages).forEach((packageName) => {\n  const pkg = packages[packageName];\n  const pkgJson = pkg.json;\n  \n  // Update the package's own version\n  pkgJson.version = pkg.newVersion;\n  \n  // Update dependencies that reference other packages in our workspace\n  const dependencyTypes = [\"dependencies\", \"devDependencies\", \"peerDependencies\"];\n  \n  dependencyTypes.forEach(depType => {\n    if (!pkgJson[depType]) return;\n    \n    Object.keys(pkgJson[depType]).forEach(dependency => {\n      // If this is one of our packages, update its version\n      if (packages[dependency]) {\n        pkgJson[depType][dependency] = `^${packages[dependency].newVersion}`;\n      }\n    });\n  });\n  \n  // Write updated package.json back to file\n  fs.writeFileSync(pkg.path, JSON.stringify(pkgJson, null, 2) + \"\\n\");\n  console.log(`✅ Bumped ${packageName} from ${pkg.currentVersion} to ${pkg.newVersion}`);\n});\n\n// Log a summary\nconsole.log(\"\\n📦 Summary of version bumps:\");\nObject.keys(packages).forEach(name => {\n  console.log(`  ${name}: ${packages[name].currentVersion} → ${packages[name].newVersion}`);\n});\n````\n\n**Key improvements:**\n\n1. **Two-step process**:\n   - First reads all package information\n   - Then updates all versions with knowledge of all new versions\n\n2. **Updates dependencies**:\n   - Checks `dependencies`, `devDependencies`, and `peerDependencies`\n   - Updates any references to internal packages with their new versions\n\n3. **Better output formatting**:\n   - Shows the version change from old to new\n   - Adds a summary at the end of all packages that were bumped\n   - Preserves newlines at end of package.json files\n\n4. **More maintainable**:\n   - Organizes data in a packages object for easier referencing\n   - Reuses code for different dependency types\n\nThis script maintains your original functionality while ensuring all internal package references stay in sync during version bumps.\n\nlamlv2305: if (!fs.existsSync(pkgJsonPath)) return;\n\nupdate styles please, never use inline return please \n\nGitHub Copilot: Here's the updated bump script with improved coding style, avoiding inline returns and with better formatting:\n\n````javascript\nconst fs = require(\"fs\");\nconst path = require(\"path\");\n\n/**\n * Bumps a semantic version based on type (major, minor, patch)\n * @param {string} version - Current version in format \"x.y.z\"\n * @param {string} type - \"major\", \"minor\", or \"patch\" \n * @returns {string} Bumped version\n */\nconst bump = (version, type) => {\n  const [major, minor, patch] = version.split(\".\").map(Number);\n  \n  if (type === \"major\") {\n    return `${major + 1}.0.0`;\n  }\n  \n  if (type === \"minor\") {\n    return `${major}.${minor + 1}.0`;\n  }\n  \n  return `${major}.${minor}.${patch + 1}`;\n};\n\n// Step 1: Read all package.json files and their current versions\nconst packagesDir = path.join(__dirname, \"../packages\");\nconst type = process.argv[2] || \"patch\";\nconst packages = {};\n\nfs.readdirSync(packagesDir).forEach((pkgName) => {\n  const pkgPath = path.join(packagesDir, pkgName);\n  const stat = fs.statSync(pkgPath);\n\n  // Skip non-directories and hidden files\n  if (!stat.isDirectory() || pkgName.startsWith(\".\")) {\n    return;\n  }\n\n  const pkgJsonPath = path.join(pkgPath, \"package.json\");\n  \n  if (!fs.existsSync(pkgJsonPath)) {\n    return;\n  }\n\n  const pkg = JSON.parse(fs.readFileSync(pkgJsonPath, \"utf-8\"));\n  packages[pkg.name] = {\n    path: pkgJsonPath,\n    currentVersion: pkg.version,\n    newVersion: bump(pkg.version, type),\n    json: pkg\n  };\n});\n\n// Step 2: Update versions in each package.json\nObject.keys(packages).forEach((packageName) => {\n  const pkg = packages[packageName];\n  const pkgJson = pkg.json;\n  \n  // Update the package's own version\n  pkgJson.version = pkg.newVersion;\n  \n  // Update dependencies that reference other packages in our workspace\n  const dependencyTypes = [\"dependencies\", \"devDependencies\", \"peerDependencies\"];\n  \n  dependencyTypes.forEach(depType => {\n    if (!pkgJson[depType]) {\n      return;\n    }\n    \n    Object.keys(pkgJson[depType]).forEach(dependency => {\n      // If this is one of our packages, update its version\n      if (packages[dependency]) {\n        pkgJson[depType][dependency] = `^${packages[dependency].newVersion}`;\n      }\n    });\n  });\n  \n  // Write updated package.json back to file\n  fs.writeFileSync(pkg.path, JSON.stringify(pkgJson, null, 2) + \"\\n\");\n  console.log(`✅ Bumped ${packageName} from ${pkg.currentVersion} to ${pkg.newVersion}`);\n});\n\n// Log a summary\nconsole.log(\"\\n📦 Summary of version bumps:\");\nObject.keys(packages).forEach(name => {\n  console.log(`  ${name}: ${packages[name].currentVersion} → ${packages[name].newVersion}`);\n});\n````\n\n**Style improvements:**\n1. Used block-style returns with curly braces instead of inline returns\n2. Added JSDoc comments for the bump function\n3. Split the process into clear steps with comments\n4. Added newlines for better code readability\n5. Consistent spacing and formatting\n6. Added explicit returns for all conditional branches\n7. Preserved the functionality of updating dependent package versions\n\nThe code now follows a more consistent style while maintaining the same functionality.\n\nlamlv2305: give me test suite example for monorepo.\n\nthe test case for #folder:ether-v5 #folder:ether-v6 #folder:viem must be the same, they are the diffirent intergrate with third party, so input and output of them must be exactly the same cuz we return raw js object\n\nGitHub Copilot: # Test Suite Example for Worldchain SDK Monorepo\n\nHere's a comprehensive test suite structure for your monorepo that ensures consistent behavior across all packages (`ethers-v5`, `ethers-v6`, and `viem`).\n\n## Shared Test Suite Structure\n\nFirst, let's create a shared test folder with common test cases:\n\n````typescript\nimport { Client, Multicall3, AbiCodec, TokenProvider } from '@holdstation/worldchain-sdk'\n\nexport interface TestProvider {\n  name: string;\n  getClient: () => Client;\n  getMulticall3: () => Multicall3;\n  getAbiCodec: (abi: any) => AbiCodec;\n}\n\nexport const ERC20_ABI = [\n  'function balanceOf(address owner) view returns (uint256)',\n  'function decimals() view returns (uint8)',\n  'function symbol() view returns (string)',\n  'function name() view returns (string)',\n]\n\nexport const TEST_ADDRESS = '0x79A02482A880bCE3F13e09Da970dC34db4CD24d1' // Some token\nexport const TEST_USER_ADDRESS = '0xEd10C200aFc35AF91A45E8BE53cd5a299F93F32F' // Some user address\n\nexport function runTests(provider: TestProvider) {\n  describe(`${provider.name} integration tests`, () => {\n    let client: Client\n    let multicall3: Multicall3\n    let codec: AbiCodec\n\n    beforeAll(() => {\n      client = provider.getClient()\n      multicall3 = provider.getMulticall3()\n      codec = provider.getAbiCodec(ERC20_ABI)\n    })\n\n    describe('Client', () => {\n      test('should report chain id', async () => {\n        const chainId = client.getChainId()\n        expect(chainId).toBeGreaterThan(0)\n      })\n\n      test('should check address validity', () => {\n        expect(client.isValidAddress(TEST_ADDRESS)).toBe(true)\n        expect(client.isValidAddress('0xinvalid')).toBe(false)\n      })\n\n      test('should get block number', async () => {\n        const blockNumber = await client.getBlockNumber()\n        expect(blockNumber).toBeGreaterThan(0)\n      })\n\n      test('should pad hex values', () => {\n        const padded = client.hexZeroPad('0x1', 32)\n        expect(padded.length).toBe(66) // 0x + 64 characters\n        expect(padded.startsWith('0x')).toBe(true)\n      })\n    })\n\n    describe('AbiCodec', () => {\n      test('should encode function data', () => {\n        const data = codec.encodeFunctionData('balanceOf', [TEST_USER_ADDRESS])\n        expect(data).toMatch(/^0x/)\n      })\n\n      test('should decode function result', () => {\n        // Mock result from balanceOf call\n        const mockData = '0x0000000000000000000000000000000000000000000000000de0b6b3a7640000' // 1 ETH\n        const result = codec.decodeFunctionResult('balanceOf', mockData)\n        \n        // All implementations should return the same structure\n        expect(result.length).toBe(1)\n        expect(result[0].toString()).toBe('1000000000000000000')\n      })\n    })\n\n    describe('Multicall3', () => {\n      test('should perform aggregate call', async () => {\n        const calls = [\n          {\n            target: TEST_ADDRESS,\n            callData: codec.encodeFunctionData('balanceOf', [TEST_USER_ADDRESS])\n          },\n          {\n            target: TEST_ADDRESS,\n            callData: codec.encodeFunctionData('decimals', [])\n          }\n        ]\n\n        const result = await multicall3.aggregate(calls)\n        expect(Array.isArray(result)).toBe(true)\n        expect(result.length).toBe(2)\n        expect(result[0]).toBeGreaterThan(0) // Block number\n        expect(result[1].length).toBe(2) // Two results\n      })\n\n      test('should perform aggregate3 call', async () => {\n        const calls = [\n          {\n            target: TEST_ADDRESS,\n            callData: codec.encodeFunctionData('balanceOf', [TEST_USER_ADDRESS]),\n            allowFailure: true\n          },\n          {\n            target: TEST_ADDRESS,\n            callData: codec.encodeFunctionData('decimals', []),\n            allowFailure: true\n          }\n        ]\n\n        const result = await multicall3.aggregate3(calls)\n        expect(Array.isArray(result)).toBe(true)\n        expect(result.length).toBe(2)\n        expect(result[0].success).toBe(true)\n        expect(result[1].success).toBe(true)\n      })\n    })\n\n    describe('TokenProvider', () => {\n      let tokenProvider: TokenProvider\n\n      beforeAll(() => {\n        tokenProvider = new TokenProvider({ client, multicall3 })\n      })\n\n      test('should fetch token details', async () => {\n        const tokenInfo = await tokenProvider.details(TEST_ADDRESS)\n        expect(tokenInfo.address).toBe(TEST_ADDRESS.toLowerCase())\n        expect(tokenInfo.name).toBeTruthy()\n        expect(tokenInfo.symbol).toBeTruthy()\n        expect(tokenInfo.decimals).toBeGreaterThan(0)\n      })\n    })\n  })\n}\n````\n\n## Implementation for Each Package\n\nNow, create a test file for each package:\n\n### Ethers v5 Tests\n\n````typescript\nimport { ethers } from 'ethers'\nimport { EthersClient } from '../src/client'\nimport { EthersCodec } from '../src/codec'\nimport { EthersMulticall3 } from '../src/multicall3'\nimport { runTests, TestProvider, ERC20_ABI } from '../../../tests/shared'\n\nconst RPC_URL = 'https://worldchain-mainnet.g.alchemy.com/public'\n\nconst provider: TestProvider = {\n  name: 'ethers-v5',\n  getClient: () => {\n    const ethersProvider = new ethers.providers.JsonRpcProvider(RPC_URL)\n    return new EthersClient(ethersProvider)\n  },\n  getMulticall3: () => {\n    const ethersProvider = new ethers.providers.JsonRpcProvider(RPC_URL)\n    return new EthersMulticall3(ethersProvider)\n  },\n  getAbiCodec: (abi) => {\n    return new EthersCodec(abi)\n  }\n}\n\nrunTests(provider)\n````\n\n### Ethers v6 Tests\n\n````typescript\nimport { ethers } from 'ethers'\nimport { EthersClient } from '../src/client'\nimport { EthersCodec } from '../src/codec'\nimport { EthersMulticall3 } from '../src/multicall3'\nimport { runTests, TestProvider, ERC20_ABI } from '../../../tests/shared'\n\nconst RPC_URL = 'https://worldchain-mainnet.g.alchemy.com/public'\n\nconst provider: TestProvider = {\n  name: 'ethers-v6',\n  getClient: () => {\n    const ethersProvider = new ethers.JsonRpcProvider(RPC_URL)\n    return new EthersClient(ethersProvider)\n  },\n  getMulticall3: () => {\n    const ethersProvider = new ethers.JsonRpcProvider(RPC_URL)\n    return new EthersMulticall3(ethersProvider)\n  },\n  getAbiCodec: (abi) => {\n    return new EthersCodec(abi)\n  }\n}\n\nrunTests(provider)\n````\n\n### Viem Tests\n\n````typescript\nimport { createPublicClient, http } from 'viem'\nimport { worldchain } from 'viem/chains'\nimport { ViemClient } from '../src/client'\nimport { ViemCodec } from '../src/codec'\nimport { ViemMulticall3 } from '../src/mutilcall3'\nimport { runTests, TestProvider, ERC20_ABI } from '../../../tests/shared'\n\nconst RPC_URL = 'https://worldchain-mainnet.g.alchemy.com/public'\n\nconst provider: TestProvider = {\n  name: 'viem',\n  getClient: () => {\n    const publicClient = createPublicClient({\n      chain: worldchain,\n      transport: http(RPC_URL),\n      batch: { multicall: true }\n    })\n    return new ViemClient(publicClient)\n  },\n  getMulticall3: () => {\n    const publicClient = createPublicClient({\n      chain: worldchain,\n      transport: http(RPC_URL),\n      batch: { multicall: true }\n    })\n    return new ViemMulticall3(publicClient)\n  },\n  getAbiCodec: (abi) => {\n    return new ViemCodec(abi)\n  }\n}\n\nrunTests(provider)\n````\n\n## Jest Configuration\n\nCreate a Jest config to ensure tests run correctly:\n\n````javascript\nmodule.exports = {\n  preset: 'ts-jest',\n  testEnvironment: 'node',\n  testMatch: ['**/tests/**/*.test.ts'],\n  transform: {\n    '^.+\\\\.tsx?$': ['ts-jest', { \n      tsconfig: './tsconfig.json',\n      isolatedModules: true\n    }]\n  },\n  moduleNameMapper: {\n    '^react$': '<rootDir>/node_modules/react',\n    '^react-dom$': '<rootDir>/node_modules/react-dom'\n  },\n  testTimeout: 30000, // Increased timeout for blockchain calls\n  setupFilesAfterEnv: ['./jest.setup.js']\n}\n````\n\n````javascript\n// Silence console.log during tests\nconsole.log = jest.fn();\n// But keep errors\nconsole.error = console.error;\n````\n\n## Running Tests\n\nAdd these scripts to your root package.json:\n\n````json\n{\n  \"scripts\": {\n    \"test\": \"jest\",\n    \"test:ethers-v5\": \"jest packages/ethers-v5\",\n    \"test:ethers-v6\": \"jest packages/ethers-v6\",\n    \"test:viem\": \"jest packages/viem\"\n  }\n}\n````\n\nThis structure ensures:\n1. All implementations are tested against the same test cases\n2. All packages must return the same data structures\n3. Tests are run against a real blockchain for integration testing\n4. You can test individual packages or all at once\n\nlamlv2305: can i split `describe` to multiple files \n\nGitHub Copilot: Yes, you can split your `describe` blocks into multiple files for better organization and maintainability. This approach is especially useful for large test suites in a monorepo.\n\nHere's how you can restructure the tests:\n\n## 1. Create separate test files for each component\n\n````typescript\nimport { Client } from '@holdstation/worldchain-sdk'\nimport { TestProvider, TEST_ADDRESS } from './common'\n\nexport function runClientTests(provider: TestProvider) {\n  describe(`${provider.name} Client tests`, () => {\n    let client: Client\n\n    beforeAll(() => {\n      client = provider.getClient()\n    })\n\n    test('should report chain id', () => {\n      const chainId = client.getChainId()\n      expect(chainId).toBeGreaterThan(0)\n    })\n\n    test('should check address validity', () => {\n      expect(client.isValidAddress(TEST_ADDRESS)).toBe(true)\n      expect(client.isValidAddress('0xinvalid')).toBe(false)\n    })\n\n    test('should get block number', async () => {\n      const blockNumber = await client.getBlockNumber()\n      expect(blockNumber).toBeGreaterThan(0)\n    })\n\n    test('should pad hex values', () => {\n      const padded = client.hexZeroPad('0x1', 32)\n      expect(padded.length).toBe(66) // 0x + 64 characters\n      expect(padded.startsWith('0x')).toBe(true)\n    })\n  })\n}\n````\n\n````typescript\nimport { AbiCodec } from '@holdstation/worldchain-sdk'\nimport { TestProvider, ERC20_ABI, TEST_USER_ADDRESS } from './common'\n\nexport function runCodecTests(provider: TestProvider) {\n  describe(`${provider.name} AbiCodec tests`, () => {\n    let codec: AbiCodec\n\n    beforeAll(() => {\n      codec = provider.getAbiCodec(ERC20_ABI)\n    })\n\n    test('should encode function data', () => {\n      const data = codec.encodeFunctionData('balanceOf', [TEST_USER_ADDRESS])\n      expect(data).toMatch(/^0x/)\n    })\n\n    test('should decode function result', () => {\n      // Mock result from balanceOf call\n      const mockData = '0x0000000000000000000000000000000000000000000000000de0b6b3a7640000' // 1 ETH\n      const result = codec.decodeFunctionResult('balanceOf', mockData)\n      \n      // All implementations should return the same structure\n      expect(result.length).toBe(1)\n      expect(result[0].toString()).toBe('1000000000000000000')\n    })\n  })\n}\n````\n\n````typescript\nimport { Multicall3, AbiCodec } from '@holdstation/worldchain-sdk'\nimport { TestProvider, ERC20_ABI, TEST_ADDRESS, TEST_USER_ADDRESS } from './common'\n\nexport function runMulticall3Tests(provider: TestProvider) {\n  describe(`${provider.name} Multicall3 tests`, () => {\n    let multicall3: Multicall3\n    let codec: AbiCodec\n\n    beforeAll(() => {\n      multicall3 = provider.getMulticall3()\n      codec = provider.getAbiCodec(ERC20_ABI)\n    })\n\n    test('should perform aggregate call', async () => {\n      const calls = [\n        {\n          target: TEST_ADDRESS,\n          callData: codec.encodeFunctionData('balanceOf', [TEST_USER_ADDRESS])\n        },\n        {\n          target: TEST_ADDRESS,\n          callData: codec.encodeFunctionData('decimals', [])\n        }\n      ]\n\n      const result = await multicall3.aggregate(calls)\n      expect(Array.isArray(result)).toBe(true)\n      expect(result.length).toBe(2)\n      expect(result[0]).toBeGreaterThan(0) // Block number\n      expect(result[1].length).toBe(2) // Two results\n    })\n\n    test('should perform aggregate3 call', async () => {\n      const calls = [\n        {\n          target: TEST_ADDRESS,\n          callData: codec.encodeFunctionData('balanceOf', [TEST_USER_ADDRESS]),\n          allowFailure: true\n        },\n        {\n          target: TEST_ADDRESS,\n          callData: codec.encodeFunctionData('decimals', []),\n          allowFailure: true\n        }\n      ]\n\n      const result = await multicall3.aggregate3(calls)\n      expect(Array.isArray(result)).toBe(true)\n      expect(result.length).toBe(2)\n      expect(result[0].success).toBe(true)\n      expect(result[1].success).toBe(true)\n    })\n  })\n}\n````\n\n## 2. Create a common file for shared constants and interfaces\n\n````typescript\nimport { Client, Multicall3, AbiCodec } from '@holdstation/worldchain-sdk'\n\nexport interface TestProvider {\n  name: string;\n  getClient: () => Client;\n  getMulticall3: () => Multicall3;\n  getAbiCodec: (abi: any) => AbiCodec;\n}\n\nexport const ERC20_ABI = [\n  'function balanceOf(address owner) view returns (uint256)',\n  'function decimals() view returns (uint8)',\n  'function symbol// filepath: /Volumes/hs/work/worldchain-sdk/tests/shared/common.ts\nimport { Client, Multicall3, AbiCodec } from '@holdstation/worldchain-sdk'\n\nexport interface TestProvider {\n  name: string;\n  getClient: () => Client;\n  getMulticall3: () => Multicall3;\n  getAbiCodec: (abi: any) => AbiCodec;\n}\n\nexport const ERC20_ABI = [\n  'function balanceOf(address owner) view returns (uint256)',\n  'function decimals() view returns (uint8)',\n  'function symbol\n\nlamlv2305: can i split `describe` to multiple files \n\nGitHub Copilot: Yes, you can definitely split your `describe` blocks into multiple files to make your test suite more modular and maintainable. Here's how to structure it:\n\n## 1. Split the Shared Tests by Feature\n\nCreate separate test files for each feature:\n\n````typescript\nimport { Client } from '@holdstation/worldchain-sdk'\nimport { TestProvider, TEST_ADDRESS } from './setup'\n\nexport function runClientTests(provider: TestProvider) {\n  describe(`${provider.name}: Client`, () => {\n    let client: Client\n    \n    beforeAll(() => {\n      client = provider.getClient()\n    })\n    \n    test('should report chain id', async () => {\n      const chainId = client.getChainId()\n      expect(chainId).toBeGreaterThan(0)\n    })\n\n    test('should check address validity', () => {\n      expect(client.isValidAddress(TEST_ADDRESS)).toBe(true)\n      expect(client.isValidAddress('0xinvalid')).toBe(false)\n    })\n\n    test('should get block number', async () => {\n      const blockNumber = await client.getBlockNumber()\n      expect(blockNumber).toBeGreaterThan(0)\n    })\n\n    test('should pad hex values', () => {\n      const padded = client.hexZeroPad('0x1', 32)\n      expect(padded.length).toBe(66) // 0x + 64 characters\n      expect(padded.startsWith('0x')).toBe(true)\n    })\n  })\n}\n````\n\n````typescript\nimport { AbiCodec } from '@holdstation/worldchain-sdk'\nimport { TestProvider, TEST_USER_ADDRESS, ERC20_ABI } from './setup'\n\nexport function runCodecTests(provider: TestProvider) {\n  describe(`${provider.name}: AbiCodec`, () => {\n    let codec: AbiCodec\n    \n    beforeAll(() => {\n      codec = provider.getAbiCodec(ERC20_ABI)\n    })\n    \n    test('should encode function data', () => {\n      const data = codec.encodeFunctionData('balanceOf', [TEST_USER_ADDRESS])\n      expect(data).toMatch(/^0x/)\n    })\n\n    test('should decode function result', () => {\n      // Mock result from balanceOf call\n      const mockData = '0x0000000000000000000000000000000000000000000000000de0b6b3a7640000' // 1 ETH\n      const result = codec.decodeFunctionResult('balanceOf', mockData)\n      \n      // All implementations should return the same structure\n      expect(result.length).toBe(1)\n      expect(result[0].toString()).toBe('1000000000000000000')\n    })\n  })\n}\n````\n\n````typescript\nimport { Multicall3, AbiCodec } from '@holdstation/worldchain-sdk'\nimport { TestProvider, TEST_ADDRESS, TEST_USER_ADDRESS, ERC20_ABI } from './setup'\n\nexport function runMulticallTests(provider: TestProvider) {\n  describe(`${provider.name}: Multicall3`, () => {\n    let multicall3: Multicall3\n    let codec: AbiCodec\n    \n    beforeAll(() => {\n      multicall3 = provider.getMulticall3()\n      codec = provider.getAbiCodec(ERC20_ABI)\n    })\n    \n    test('should perform aggregate call', async () => {\n      const calls = [\n        {\n          target: TEST_ADDRESS,\n          callData: codec.encodeFunctionData('balanceOf', [TEST_USER_ADDRESS])\n        },\n        {\n          target: TEST_ADDRESS,\n          callData: codec.encodeFunctionData('decimals', [])\n        }\n      ]\n\n      const result = await multicall3.aggregate(calls)\n      expect(Array.isArray(result)).toBe(true)\n      expect(result.length).toBe(2)\n      expect(result[0]).toBeGreaterThan(0) // Block number\n      expect(result[1].length).toBe(2) // Two results\n    })\n\n    test('should perform aggregate3 call', async () => {\n      const calls = [\n        {\n          target: TEST_ADDRESS,\n          callData: codec.encodeFunctionData('balanceOf', [TEST_USER_ADDRESS]),\n          allowFailure: true\n        },\n        {\n          target: TEST_ADDRESS,\n          callData: codec.encodeFunctionData('decimals', []),\n          allowFailure: true\n        }\n      ]\n\n      const result = await multicall3.aggregate3(calls)\n      expect(Array.isArray(result)).toBe(true)\n      expect(result.length).toBe(2)\n      expect(result[0].success).toBe(true)\n      expect(result[1].success).toBe(true)\n    })\n  })\n}\n````\n\n## 2. Create a Common Setup File \n\n```typescript\nimport { Client, Multicall3, AbiCodec } from '@holdstation/worldchain-sdk'\n\nexport interface TestProvider {\n  name: string;\n  getClient: () => Client;\n  getMulticall3: () => Multicall3;\n  getAbiCodec: (abi: any) => AbiCodec;\n}\n\nexport const ERC20_ABI = [\n  'function balanceOf(address owner) view returns (uint256)',\n  'function decimals() view returns (uint8)',\n  'function symbol() view returns (string)',\n  'function name() view returns (string)',\n]\n\nexport const TEST_ADDRESS = '0x79A02482A880bCE3F13e09Da970dC34db4CD24d1' // Some token\nexport const TEST_USER_ADDRESS = '0xEd10C200aFc35AF91A45E8BE53cd5a299F93F32F' // Some user address\n```\n\n## 3. Create an Integration File\n\n```typescript\nimport { TestProvider } from './setup'\nimport { runClientTests } from './client.test'\nimport { runCodecTests } from './codec.test'\nimport { runMulticallTests } from './multicall3.test'\n\nexport function runAllTests(provider: TestProvider) {\n  describe(`${provider.name} integration tests`, () => {\n    runClientTests(provider)\n    runCodecTests(provider)\n    runMulticallTests(provider)\n  })\n}\n\nexport * from './setup'\n```\n\n## 4. Use in Individual Packages\n\n```typescript\nimport { ethers } from 'ethers'\nimport { EthersClient } from '../src/client'\nimport { EthersCodec } from '../src/codec'\nimport { EthersMulticall3 } from '../src/multicall3'\nimport { runAllTests, TestProvider, ERC20_ABI } from '../../../tests/shared'\n\nconst RPC_URL = 'https://worldchain-mainnet.g.alchemy.com/public'\n\nconst provider: TestProvider = {\n  name: 'ethers-v6',\n  getClient: () => {\n    const ethersProvider = new ethers.JsonRpcProvider(RPC_URL)\n    return new EthersClient(ethersProvider)\n  },\n  getMulticall3: () => {\n    const ethersProvider = new ethers.JsonRpcProvider(RPC_URL)\n    return new EthersMulticall3(ethersProvider)\n  },\n  getAbiCodec: (abi) => {\n    return new EthersCodec(abi)\n  }\n}\n\nrunAllTests(provider)\n```\n\n## Benefits of This Approach\n\n1. **Modularity**: Each feature has its own test file\n2. **Selective Testing**: You can choose to run only specific test suites\n3. **Maintainability**: Easier to add/modify tests for specific features\n4. **Clarity**: Tests are organized by feature rather than by implementation\n5. **Reuse**: The same test cases run across all implementations\n\nThis approach still ensures all implementations are tested against the same test cases, but with much better organization.\n\nlamlv2305: give me tree of folder structure to implement these tests.\n\nI want to have a separate folder `<root>/tests` for whole integrate test suite. Then another package can easily re-use it \n\nGitHub Copilot: \n\nlamlv2305: give me tree of folder structure to implement these tests.\n\nI want to have a separate folder `<root>/tests` for whole integrate test suite. Then another package can easily re-use it \n\nGitHub Copilot: # Monorepo Test Structure\n\nHere's a recommended folder structure for implementing the shared test suite in your monorepo:\n\n```\n/worldchain-sdk/\n├── .github/\n│   └── workflows/\n│       └── publish.yml\n├── package.json  (root workspace)\n├── tsconfig.json (root config)\n├── jest.config.js\n├── jest.setup.js\n│\n├── packages/\n│   ├── core/\n│   │   ├── src/\n│   │   ├── dist/\n│   │   └── package.json\n│   │\n│   ├── ethers-v5/\n│   │   ├── src/\n│   │   ├── tests/\n│   │   │   └── integration.test.ts  (imports from /tests/shared)\n│   │   ├── dist/\n│   │   └── package.json\n│   │\n│   ├── ethers-v6/\n│   │   ├── src/\n│   │   ├── tests/\n│   │   │   └── integration.test.ts  (imports from /tests/shared)\n│   │   ├── dist/\n│   │   └── package.json\n│   │\n│   └── viem/\n│       ├── src/\n│       ├── tests/\n│       │   └── integration.test.ts  (imports from /tests/shared)\n│       ├── dist/\n│       └── package.json\n│\n└── tests/  (shared test suite)\n    ├── shared/\n    │   ├── index.ts  (main entry point)\n    │   ├── setup.ts  (shared test config)\n    │   ├── client.test.ts\n    │   ├── codec.test.ts\n    │   ├── multicall3.test.ts\n    │   └── constants.ts  (test addresses, ABIs, etc.)\n    │\n    ├── helpers/\n    │   ├── rpc-provider.ts\n    │   └── mock-data.ts\n    │\n    └── fixtures/\n        └── abis/\n            ├── erc20.ts\n            └── multicall3.ts\n```\n\n## Key Components\n\n1. **Root tests Folder**\n   - Contains all shared tests that can be imported by any package\n   - Completely package-independent\n\n2. **Shared Test Suite**\n   - `/tests/shared/index.ts` - Main entry point exporting all test runners\n   - `/tests/shared/setup.ts` - Common test setup code (interfaces, providers)\n   - Individual test files for each feature\n\n3. **Package-Specific Tests**\n   - Each package has its own tests folder\n   - `integration.test.ts` imports the shared test suite\n   - Configures package-specific implementations as test providers\n\n4. **Test Helpers & Fixtures**\n   - Common utilities, mock data, and test fixtures\n   - RPC providers, ABIs, and contract addresses\n\n## Implementation Details\n\n### 1. Setting up imports in the root package.json\n\n```json\n{\n  \"devDependencies\": {\n    \"jest\": \"^29.7.0\",\n    \"ts-jest\": \"^29.1.1\"\n  },\n  \"scripts\": {\n    \"test\": \"jest\",\n    \"test:ethers-v5\": \"jest packages/ethers-v5\",\n    \"test:ethers-v6\": \"jest packages/ethers-v6\",\n    \"test:viem\": \"jest packages/viem\"\n  }\n}\n```\n\n### 2. Package integration test example\n\n```typescript\n// packages/ethers-v6/tests/integration.test.ts\nimport { runAllTests } from '../../../tests/shared';\nimport { createEthersV6Provider } from '../../../tests/helpers/rpc-provider';\n\nconst provider = createEthersV6Provider();\nrunAllTests(provider);\n```\n\n### 3. Helper for RPC provider\n\n```typescript\n// tests/helpers/rpc-provider.ts\nimport { ethers as ethersV5 } from 'ethers-v5';\nimport { ethers as ethersV6 } from 'ethers';\nimport { createPublicClient, http } from 'viem';\nimport { worldchain } from 'viem/chains';\nimport { TestProvider } from '../shared/setup';\nimport { EthersClient as EthersV5Client } from '../../packages/ethers-v5/src';\nimport { EthersClient as EthersV6Client } from '../../packages/ethers-v6/src';\nimport { ViemClient } from '../../packages/viem/src';\n\nconst RPC_URL = 'https://worldchain-mainnet.g.alchemy.com/public';\n\nexport function createEthersV5Provider(): TestProvider {\n  return {\n    name: 'ethers-v5',\n    getClient: () => {\n      const provider = new ethersV5.providers.JsonRpcProvider(RPC_URL);\n      return new EthersV5Client(provider);\n    },\n    // ... other implementations\n  };\n}\n\n// Similar functions for ethers-v6 and viem\n```\n\nThis structure keeps your tests modular, reusable, and maintainable while ensuring consistent behavior across all implementations.\n\nlamlv2305: Rewrite README.MD for me based on styles of https://github.com/dethcrypto/TypeChain/blob/master/README.md\n\n\n\n\nGitHub Copilot: # Worldchain SDK\n\n> 🔗 TypeScript-powered library for interacting with Worldchain blockchain with multiple provider options\n\n[![NPM](https://img.shields.io/npm/v/@holdstation/worldchain-sdk.svg)](https://www.npmjs.com/package/@holdstation/worldchain-sdk)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## Features\n\n- 🛠 **Multiple Provider Integration**: Choose between ethers.js v5/v6 or viem\n- 🔄 **Unified API**: Same interface regardless of the underlying provider\n- 📦 **Tree-shakable**: Import only what you need\n- 🔒 **Type-safe**: Full TypeScript support with complete typings\n- 🚀 **Multicall Support**: Batch multiple calls for efficient interactions\n- 🧩 **Modular Design**: Core functionality is provider-agnostic\n\n## Installation\n\n```bash\n# Core package only\nnpm install @holdstation/worldchain-sdk\n\n# With ethers.js v5 support\nnpm in","readmeFilename":"README.MD"}