@aastar/sdk 0.16.6 → 0.16.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (662) hide show
  1. package/.github/workflows/gas-analytics-daily.yml +52 -0
  2. package/CHANGELOG.md +43 -0
  3. package/README.md +39 -139
  4. package/backup/run_sdk_regression.sh +135 -0
  5. package/config.anvil.json +1 -1
  6. package/config.sepolia.json +19 -1
  7. package/docs/API_REFERENCE.md +9 -169
  8. package/docs/L4_Manual_Test_CheatSheet.md +22 -65
  9. package/docs/Reputation-to-Credit_Mapping_Whitepaper.md +242 -0
  10. package/docs/TESTER_GUIDE_GASLESS.md +23 -277
  11. package/docs/api/@aastar/account/README.md +15 -0
  12. package/docs/api/@aastar/account/classes/UserOpClient.md +87 -0
  13. package/docs/api/@aastar/account/functions/createEOAWalletClient.md +21 -0
  14. package/docs/api/@aastar/account/functions/getUserOpHash.md +23 -0
  15. package/docs/api/@aastar/account/functions/packUserOpLimits.md +19 -0
  16. package/docs/api/@aastar/account/functions/toSimpleSmartAccount.md +83 -0
  17. package/docs/api/@aastar/account/type-aliases/EOAWalletClient.md +37 -0
  18. package/docs/api/@aastar/account/type-aliases/SimpleSmartAccount.md +39 -0
  19. package/docs/api/@aastar/core/README.md +211 -0
  20. package/docs/api/@aastar/core/classes/BLSSigner.md +147 -0
  21. package/docs/api/@aastar/core/classes/BaseClient.md +9657 -0
  22. package/docs/api/@aastar/core/classes/ContractConfigManager.md +25 -0
  23. package/docs/api/@aastar/core/classes/RequirementChecker.md +1837 -0
  24. package/docs/api/@aastar/core/classes/SepoliaFaucetAPI.md +13661 -0
  25. package/docs/api/@aastar/core/classes/StateValidator.md +133 -0
  26. package/docs/api/@aastar/core/enumerations/EntryPointVersion.md +17 -0
  27. package/docs/api/@aastar/core/enumerations/NodeType.md +33 -0
  28. package/docs/api/@aastar/core/enumerations/RolePermissionLevel.md +43 -0
  29. package/docs/api/@aastar/core/functions/accountActions.md +2720 -0
  30. package/docs/api/@aastar/core/functions/accountFactoryActions.md +2720 -0
  31. package/docs/api/@aastar/core/functions/aggregatorActions.md +2720 -0
  32. package/docs/api/@aastar/core/functions/createAAStarPublicClient.md +3105 -0
  33. package/docs/api/@aastar/core/functions/dvtActions.md +2720 -0
  34. package/docs/api/@aastar/core/functions/entryPointActions.md +2724 -0
  35. package/docs/api/@aastar/core/functions/gTokenActions.md +2714 -0
  36. package/docs/api/@aastar/core/functions/gTokenExtendedActions.md +2720 -0
  37. package/docs/api/@aastar/core/functions/getAddressUrl.md +32 -0
  38. package/docs/api/@aastar/core/functions/getAllCommunityConfigs.md +9 -0
  39. package/docs/api/@aastar/core/functions/getAllV2Contracts.md +20 -0
  40. package/docs/api/@aastar/core/functions/getBlockExplorer.md +26 -0
  41. package/docs/api/@aastar/core/functions/getChainId.md +26 -0
  42. package/docs/api/@aastar/core/functions/getCommunities.md +76 -0
  43. package/docs/api/@aastar/core/functions/getCommunity.md +32 -0
  44. package/docs/api/@aastar/core/functions/getCommunityConfig.md +15 -0
  45. package/docs/api/@aastar/core/functions/getContract.md +37 -0
  46. package/docs/api/@aastar/core/functions/getContractNetworks.md +18 -0
  47. package/docs/api/@aastar/core/functions/getContracts.md +194 -0
  48. package/docs/api/@aastar/core/functions/getCoreContracts.md +71 -0
  49. package/docs/api/@aastar/core/functions/getDeploymentDate.md +32 -0
  50. package/docs/api/@aastar/core/functions/getEntryPoint.md +25 -0
  51. package/docs/api/@aastar/core/functions/getNetwork.md +26 -0
  52. package/docs/api/@aastar/core/functions/getPaymasterV4_1.md +25 -0
  53. package/docs/api/@aastar/core/functions/getRoleName.md +15 -0
  54. package/docs/api/@aastar/core/functions/getRpcUrl.md +25 -0
  55. package/docs/api/@aastar/core/functions/getSimpleAccountFactory.md +25 -0
  56. package/docs/api/@aastar/core/functions/getSuperPaymasterV2.md +25 -0
  57. package/docs/api/@aastar/core/functions/getTestAccounts.md +30 -0
  58. package/docs/api/@aastar/core/functions/getTestTokenContracts.md +38 -0
  59. package/docs/api/@aastar/core/functions/getTokenContracts.md +31 -0
  60. package/docs/api/@aastar/core/functions/getTxUrl.md +32 -0
  61. package/docs/api/@aastar/core/functions/getV2ContractByAddress.md +28 -0
  62. package/docs/api/@aastar/core/functions/getV2ContractByName.md +28 -0
  63. package/docs/api/@aastar/core/functions/getV2ContractsByDate.md +26 -0
  64. package/docs/api/@aastar/core/functions/isContractNetworkSupported.md +27 -0
  65. package/docs/api/@aastar/core/functions/isRegisteredCommunity.md +15 -0
  66. package/docs/api/@aastar/core/functions/isV2Contract.md +27 -0
  67. package/docs/api/@aastar/core/functions/paymasterActions.md +2720 -0
  68. package/docs/api/@aastar/core/functions/paymasterFactoryActions.md +2720 -0
  69. package/docs/api/@aastar/core/functions/registryActions.md +2720 -0
  70. package/docs/api/@aastar/core/functions/reputationActions.md +2720 -0
  71. package/docs/api/@aastar/core/functions/sbtActions.md +2720 -0
  72. package/docs/api/@aastar/core/functions/stakingActions.md +2720 -0
  73. package/docs/api/@aastar/core/functions/superPaymasterActions.md +2720 -0
  74. package/docs/api/@aastar/core/functions/tokenActions.md +2714 -0
  75. package/docs/api/@aastar/core/functions/xPNTsFactoryActions.md +2720 -0
  76. package/docs/api/@aastar/core/interfaces/AccountBalance.md +41 -0
  77. package/docs/api/@aastar/core/interfaces/BalanceValidationParams.md +51 -0
  78. package/docs/api/@aastar/core/interfaces/ClientConfig.md +4841 -0
  79. package/docs/api/@aastar/core/interfaces/CommunityConfig.md +81 -0
  80. package/docs/api/@aastar/core/interfaces/ContractVersion.md +63 -0
  81. package/docs/api/@aastar/core/interfaces/DeploymentValidationParams.md +39 -0
  82. package/docs/api/@aastar/core/interfaces/RoleConfig.md +83 -0
  83. package/docs/api/@aastar/core/interfaces/RoleRequirement.md +43 -0
  84. package/docs/api/@aastar/core/interfaces/RoleValidationParams.md +55 -0
  85. package/docs/api/@aastar/core/interfaces/SuperPaymasterConfig.md +57 -0
  86. package/docs/api/@aastar/core/interfaces/TokenBalanceValidationParams.md +63 -0
  87. package/docs/api/@aastar/core/interfaces/TransactionOptions.md +24 -0
  88. package/docs/api/@aastar/core/interfaces/ValidationParams.md +25 -0
  89. package/docs/api/@aastar/core/interfaces/ValidationResult.md +25 -0
  90. package/docs/api/@aastar/core/type-aliases/AccountActions.md +151 -0
  91. package/docs/api/@aastar/core/type-aliases/AccountFactoryActions.md +55 -0
  92. package/docs/api/@aastar/core/type-aliases/AggregatorActions.md +471 -0
  93. package/docs/api/@aastar/core/type-aliases/BusinessResult.md +12 -0
  94. package/docs/api/@aastar/core/type-aliases/ContractCategory.md +5 -0
  95. package/docs/api/@aastar/core/type-aliases/ContractNetwork.md +5 -0
  96. package/docs/api/@aastar/core/type-aliases/DVTActions.md +319 -0
  97. package/docs/api/@aastar/core/type-aliases/EntryPointActions.md +103 -0
  98. package/docs/api/@aastar/core/type-aliases/GTokenExtendedActions.md +239 -0
  99. package/docs/api/@aastar/core/type-aliases/NetworkContracts.md +5 -0
  100. package/docs/api/@aastar/core/type-aliases/PaymasterActions.md +1087 -0
  101. package/docs/api/@aastar/core/type-aliases/PaymasterFactoryActions.md +263 -0
  102. package/docs/api/@aastar/core/type-aliases/RegistryActions.md +1543 -0
  103. package/docs/api/@aastar/core/type-aliases/ReputationActions.md +811 -0
  104. package/docs/api/@aastar/core/type-aliases/SBTActions.md +1199 -0
  105. package/docs/api/@aastar/core/type-aliases/StakingActions.md +703 -0
  106. package/docs/api/@aastar/core/type-aliases/SuperPaymasterActions.md +1311 -0
  107. package/docs/api/@aastar/core/type-aliases/SupportedNetwork.md +3 -0
  108. package/docs/api/@aastar/core/type-aliases/TokenActions.md +1227 -0
  109. package/docs/api/@aastar/core/type-aliases/XPNTsFactoryActions.md +395 -0
  110. package/docs/api/@aastar/core/variables/AASTAR_COMMUNITY.md +8 -0
  111. package/docs/api/@aastar/core/variables/ALL_ADDRESSES.md +75 -0
  112. package/docs/api/@aastar/core/variables/ALL_ROLES.md +5 -0
  113. package/docs/api/@aastar/core/variables/APNTS_ADDRESS.md +3 -0
  114. package/docs/api/@aastar/core/variables/BLSAggregatorABI.md +3 -0
  115. package/docs/api/@aastar/core/variables/BLSAggregatorArtifact.md +13 -0
  116. package/docs/api/@aastar/core/variables/BLSHelpers.md +101 -0
  117. package/docs/api/@aastar/core/variables/BLSValidatorABI.md +3 -0
  118. package/docs/api/@aastar/core/variables/BLSValidatorArtifact.md +13 -0
  119. package/docs/api/@aastar/core/variables/BLS_AGGREGATOR_ADDRESS.md +3 -0
  120. package/docs/api/@aastar/core/variables/BLS_VALIDATOR_ADDRESS.md +3 -0
  121. package/docs/api/@aastar/core/variables/BPS_DENOMINATOR.md +5 -0
  122. package/docs/api/@aastar/core/variables/BRANDING.md +67 -0
  123. package/docs/api/@aastar/core/variables/BREAD_COMMUNITY.md +8 -0
  124. package/docs/api/@aastar/core/variables/CHAIN_MAINNET.md +3 -0
  125. package/docs/api/@aastar/core/variables/CHAIN_SEPOLIA.md +5 -0
  126. package/docs/api/@aastar/core/variables/COMMUNITIES.md +5 -0
  127. package/docs/api/@aastar/core/variables/COMMUNITY_OWNERS.md +15 -0
  128. package/docs/api/@aastar/core/variables/CONTRACTS.md +179 -0
  129. package/docs/api/@aastar/core/variables/CONTRACT_METADATA.md +67 -0
  130. package/docs/api/@aastar/core/variables/CONTRACT_SRC_HASH.md +5 -0
  131. package/docs/api/@aastar/core/variables/CORE_ADDRESSES.md +51 -0
  132. package/docs/api/@aastar/core/variables/DEFAULT_ADMIN_ROLE.md +17 -0
  133. package/docs/api/@aastar/core/variables/DEFAULT_APNTS_PRICE_USD.md +5 -0
  134. package/docs/api/@aastar/core/variables/DEFAULT_CALL_GAS_LIMIT.md +3 -0
  135. package/docs/api/@aastar/core/variables/DEFAULT_GAS_TOKEN_MINT_AMOUNT.md +5 -0
  136. package/docs/api/@aastar/core/variables/DEFAULT_PRE_VERIFICATION_GAS.md +3 -0
  137. package/docs/api/@aastar/core/variables/DEFAULT_TIMEOUT_MS.md +5 -0
  138. package/docs/api/@aastar/core/variables/DEFAULT_TOKEN_NAME.md +3 -0
  139. package/docs/api/@aastar/core/variables/DEFAULT_TOKEN_SYMBOL.md +5 -0
  140. package/docs/api/@aastar/core/variables/DEFAULT_USDT_MINT_AMOUNT.md +5 -0
  141. package/docs/api/@aastar/core/variables/DEFAULT_VERIFICATION_GAS_LIMIT.md +5 -0
  142. package/docs/api/@aastar/core/variables/DVTValidatorABI.md +3 -0
  143. package/docs/api/@aastar/core/variables/DVTValidatorArtifact.md +13 -0
  144. package/docs/api/@aastar/core/variables/DVT_VALIDATOR_ADDRESS.md +3 -0
  145. package/docs/api/@aastar/core/variables/ENTRY_POINT_0_8_ADDRESS.md +3 -0
  146. package/docs/api/@aastar/core/variables/ENTRY_POINT_0_9_ADDRESS.md +3 -0
  147. package/docs/api/@aastar/core/variables/ENTRY_POINT_ADDRESS.md +3 -0
  148. package/docs/api/@aastar/core/variables/EntryPointABI.md +3 -0
  149. package/docs/api/@aastar/core/variables/EntryPointArtifact.md +13 -0
  150. package/docs/api/@aastar/core/variables/FAUCET_API_URL.md +5 -0
  151. package/docs/api/@aastar/core/variables/GTOKEN_ADDRESS.md +3 -0
  152. package/docs/api/@aastar/core/variables/GTOKEN_STAKING_ADDRESS.md +3 -0
  153. package/docs/api/@aastar/core/variables/GTokenABI.md +3 -0
  154. package/docs/api/@aastar/core/variables/GTokenArtifact.md +13 -0
  155. package/docs/api/@aastar/core/variables/GTokenStakingABI.md +3 -0
  156. package/docs/api/@aastar/core/variables/GTokenStakingArtifact.md +13 -0
  157. package/docs/api/@aastar/core/variables/INITIAL_ROLE_STAKES.md +13 -0
  158. package/docs/api/@aastar/core/variables/LINKS.md +33 -0
  159. package/docs/api/@aastar/core/variables/MAX_SERVICE_FEE.md +5 -0
  160. package/docs/api/@aastar/core/variables/MONITORING_ADDRESSES.md +15 -0
  161. package/docs/api/@aastar/core/variables/MySBTABI.md +3 -0
  162. package/docs/api/@aastar/core/variables/MySBTArtifact.md +13 -0
  163. package/docs/api/@aastar/core/variables/NETWORKS.md +79 -0
  164. package/docs/api/@aastar/core/variables/NODE_STAKE_AMOUNTS.md +31 -0
  165. package/docs/api/@aastar/core/variables/OFFICIAL_ADDRESSES.md +11 -0
  166. package/docs/api/@aastar/core/variables/PAYMASTER_ADDRESSES.md +15 -0
  167. package/docs/api/@aastar/core/variables/PAYMASTER_FACTORY_ADDRESS.md +3 -0
  168. package/docs/api/@aastar/core/variables/PAYMASTER_V4_IMPL_ADDRESS.md +3 -0
  169. package/docs/api/@aastar/core/variables/PaymasterABI.md +3 -0
  170. package/docs/api/@aastar/core/variables/PaymasterArtifact.md +13 -0
  171. package/docs/api/@aastar/core/variables/PaymasterFactoryABI.md +3 -0
  172. package/docs/api/@aastar/core/variables/PaymasterFactoryArtifact.md +13 -0
  173. package/docs/api/@aastar/core/variables/PaymasterV4ABI.md +3 -0
  174. package/docs/api/@aastar/core/variables/PaymasterV4Artifact.md +13 -0
  175. package/docs/api/@aastar/core/variables/REGISTRY_ADDRESS.md +3 -0
  176. package/docs/api/@aastar/core/variables/REPUTATION_SYSTEM_ADDRESS.md +3 -0
  177. package/docs/api/@aastar/core/variables/ROLE_ANODE.md +29 -0
  178. package/docs/api/@aastar/core/variables/ROLE_COMMUNITY.md +29 -0
  179. package/docs/api/@aastar/core/variables/ROLE_DVT.md +29 -0
  180. package/docs/api/@aastar/core/variables/ROLE_ENDUSER.md +33 -0
  181. package/docs/api/@aastar/core/variables/ROLE_KMS.md +29 -0
  182. package/docs/api/@aastar/core/variables/ROLE_NAMES.md +3 -0
  183. package/docs/api/@aastar/core/variables/ROLE_PAYMASTER_AOA.md +29 -0
  184. package/docs/api/@aastar/core/variables/ROLE_PAYMASTER_SUPER.md +33 -0
  185. package/docs/api/@aastar/core/variables/ROLE_PERMISSION_LEVELS.md +3 -0
  186. package/docs/api/@aastar/core/variables/RegistryABI.md +3 -0
  187. package/docs/api/@aastar/core/variables/RegistryArtifact.md +13 -0
  188. package/docs/api/@aastar/core/variables/ReputationSystemABI.md +3 -0
  189. package/docs/api/@aastar/core/variables/ReputationSystemArtifact.md +13 -0
  190. package/docs/api/@aastar/core/variables/SBT_ADDRESS.md +3 -0
  191. package/docs/api/@aastar/core/variables/SEPOLIA_CONTRACTS.md +175 -0
  192. package/docs/api/@aastar/core/variables/SEPOLIA_V2_VERSIONS.md +67 -0
  193. package/docs/api/@aastar/core/variables/SERVICE_FEE_RATE.md +5 -0
  194. package/docs/api/@aastar/core/variables/SUPER_PAYMASTER_ADDRESS.md +3 -0
  195. package/docs/api/@aastar/core/variables/SimpleAccountABI.md +3 -0
  196. package/docs/api/@aastar/core/variables/SimpleAccountArtifact.md +13 -0
  197. package/docs/api/@aastar/core/variables/SimpleAccountFactoryABI.md +3 -0
  198. package/docs/api/@aastar/core/variables/SimpleAccountFactoryArtifact.md +13 -0
  199. package/docs/api/@aastar/core/variables/SuperPaymasterABI.md +3 -0
  200. package/docs/api/@aastar/core/variables/SuperPaymasterArtifact.md +13 -0
  201. package/docs/api/@aastar/core/variables/TEST_ACCOUNT_ADDRESSES.md +11 -0
  202. package/docs/api/@aastar/core/variables/TEST_ACCOUNT_POOL_SIZE.md +5 -0
  203. package/docs/api/@aastar/core/variables/TEST_COMMUNITIES.md +19 -0
  204. package/docs/api/@aastar/core/variables/TEST_TOKEN_ADDRESSES.md +19 -0
  205. package/docs/api/@aastar/core/variables/TOKEN_ADDRESSES.md +11 -0
  206. package/docs/api/@aastar/core/variables/V2_SUMMARY.md +39 -0
  207. package/docs/api/@aastar/core/variables/XPNTS_FACTORY_ADDRESS.md +3 -0
  208. package/docs/api/@aastar/core/variables/xPNTsFactoryABI.md +3 -0
  209. package/docs/api/@aastar/core/variables/xPNTsFactoryArtifact.md +13 -0
  210. package/docs/api/@aastar/core/variables/xPNTsTokenABI.md +3 -0
  211. package/docs/api/@aastar/core/variables/xPNTsTokenArtifact.md +13 -0
  212. package/docs/api/@aastar/paymaster/README.md +23 -0
  213. package/docs/api/@aastar/paymaster/classes/PaymasterClient.md +388 -0
  214. package/docs/api/@aastar/paymaster/classes/PaymasterOperator.md +451 -0
  215. package/docs/api/@aastar/paymaster/classes/SuperPaymasterAdminClient.md +189 -0
  216. package/docs/api/@aastar/paymaster/classes/SuperPaymasterClient.md +55 -0
  217. package/docs/api/@aastar/paymaster/functions/buildPaymasterData.md +34 -0
  218. package/docs/api/@aastar/paymaster/functions/buildSuperPaymasterData.md +30 -0
  219. package/docs/api/@aastar/paymaster/functions/checkEligibility.md +28 -0
  220. package/docs/api/@aastar/paymaster/functions/formatUserOpV07.md +15 -0
  221. package/docs/api/@aastar/paymaster/functions/getPaymasterV4Middleware.md +32 -0
  222. package/docs/api/@aastar/paymaster/functions/getSuperPaymasterMiddleware.md +32 -0
  223. package/docs/api/@aastar/paymaster/functions/getUserOpHashV07.md +21 -0
  224. package/docs/api/@aastar/paymaster/type-aliases/GaslessReadinessReport.md +55 -0
  225. package/docs/api/@aastar/paymaster/type-aliases/GaslessTransactionConfig.md +59 -0
  226. package/docs/api/@aastar/paymaster/type-aliases/PaymasterConfig.md +43 -0
  227. package/docs/api/@aastar/paymaster/type-aliases/PaymasterV4MiddlewareConfig.md +35 -0
  228. package/docs/api/@aastar/tokens/README.md +3 -0
  229. package/docs/api/@aastar/tokens/classes/FinanceClient.md +10385 -0
  230. package/docs/api/README.md +4 -8
  231. package/env.template +3 -5
  232. package/examples/l1-api-demo.ts +196 -107
  233. package/examples/l2-clients-demo.ts +70 -73
  234. package/examples/l3-community-launch.ts +49 -0
  235. package/examples/l3-user-onboarding.ts +36 -54
  236. package/examples/prepare-gasless.ts +1 -1
  237. package/examples/simple-gasless-demo.ts +55 -26
  238. package/examples/simple-superpaymaster-demo.ts +2 -2
  239. package/ext/aastar-shared-config/generate-comparison-table.sh +0 -0
  240. package/ext/aastar-shared-config/sync-abis.sh +0 -0
  241. package/ext/aastar-shared-config/sync-versions.mjs +0 -0
  242. package/ext/aastar-shared-config/verify-all.sh +0 -0
  243. package/ext/aastar-shared-config/verify-contracts.sh +0 -0
  244. package/l4-setup.sh +1 -11
  245. package/lib/shared-config/generate-comparison-table.sh +0 -0
  246. package/lib/shared-config/sync-abis.sh +0 -0
  247. package/lib/shared-config/sync-versions.mjs +0 -0
  248. package/lib/shared-config/verify-all.sh +0 -0
  249. package/lib/shared-config/verify-contracts.sh +0 -0
  250. package/package.json +36 -32
  251. package/packages/account/__tests__/index.test.ts +9 -0
  252. package/packages/account/node_modules/.bin/tsc +21 -0
  253. package/packages/account/node_modules/.bin/tsserver +21 -0
  254. package/packages/account/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  255. package/packages/account/package.json +3 -5
  256. package/packages/account/src/eoa.ts +2 -4
  257. package/packages/account/tsconfig.json +2 -1
  258. package/packages/analytics/README.md +68 -0
  259. package/packages/analytics/__tests__/index.test.ts +25 -0
  260. package/packages/analytics/data/attribution_dataset.csv +29 -0
  261. package/packages/analytics/data/complete_dataset.csv +29 -0
  262. package/packages/analytics/data/eth_price_cache.json +4 -0
  263. package/packages/analytics/data/full_dataset.csv +11 -0
  264. package/packages/analytics/data/full_dataset.json +134 -0
  265. package/packages/analytics/data/parsed_transactions.csv +29 -0
  266. package/packages/analytics/node_modules/.bin/tsc +21 -0
  267. package/packages/analytics/node_modules/.bin/tsserver +21 -0
  268. package/packages/analytics/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  269. package/packages/analytics/package.json +2 -5
  270. package/packages/analytics/reports/full/attribution_analysis_20260119.md +42 -0
  271. package/packages/analytics/reports/full/attribution_analysis_fresh_20260119.md +67 -0
  272. package/packages/analytics/reports/full/competitive_analysis_20260119.md +103 -0
  273. package/packages/analytics/reports/full/comprehensive_analysis_20260119.md +107 -0
  274. package/packages/analytics/reports/full/comprehensive_analysis_v4_1_20260119.md +74 -0
  275. package/packages/analytics/reports/full/economic_audit_v4_2_20260119.md +74 -0
  276. package/packages/analytics/reports/full/profit_audit_v4_3_20260119.md +74 -0
  277. package/packages/analytics/reports/full/profit_audit_v4_4_20260119.md +74 -0
  278. package/packages/analytics/reports/full/profit_audit_v4_5_20260119.md +74 -0
  279. package/packages/analytics/reports/full/profit_audit_v4_6_20260119.md +74 -0
  280. package/packages/analytics/reports/full/profit_audit_v4_final_20260119.md +74 -0
  281. package/packages/analytics/reports/full/profit_audit_v4_final_v2_20260119.md +74 -0
  282. package/packages/analytics/reports/full/profit_audit_v4_final_v3_20260119.md +74 -0
  283. package/packages/analytics/reports/full/profit_audit_v4_final_v4_20260119.md +75 -0
  284. package/packages/analytics/reports/full/profit_audit_v4_final_v5_20260119.md +76 -0
  285. package/packages/analytics/reports/full/two_layer_analysis_20260119.md +81 -0
  286. package/packages/analytics/reports/full/two_layer_analysis_academic_20260119.md +81 -0
  287. package/packages/analytics/reports/full/two_layer_analysis_dynamic_20260119.md +81 -0
  288. package/packages/analytics/reports/full/two_layer_analysis_final_20260119.md +81 -0
  289. package/packages/analytics/reports/full/two_layer_analysis_final_fixed_20260119.md +81 -0
  290. package/packages/analytics/reports/full/two_layer_analysis_fixed_20260119.md +52 -0
  291. package/packages/analytics/reports/full/two_layer_analysis_normalized_20260119.md +81 -0
  292. package/packages/analytics/reports/full/tx_0xc30cfcbb.md +39 -0
  293. package/packages/analytics/src/analyzers/AttributionAnalyzer.ts +124 -0
  294. package/packages/analytics/src/analyzers/ComparisonAnalyzer.ts +89 -0
  295. package/packages/analytics/src/analyzers/TransactionAnalyzer.ts +111 -0
  296. package/packages/analytics/src/analyzers/TrendAnalyzer.ts +107 -0
  297. package/packages/analytics/src/cli-analyze-tx.ts +45 -0
  298. package/packages/analytics/src/cli.ts +39 -0
  299. package/packages/analytics/src/core/BenchmarkLoader.ts +163 -0
  300. package/packages/analytics/src/core/CostCalculator.ts +202 -0
  301. package/packages/analytics/src/core/DataCollector.ts +245 -0
  302. package/packages/analytics/src/gas-analyzer-v4.ts +118 -0
  303. package/packages/analytics/src/gas-analyzer.ts +184 -0
  304. package/packages/analytics/src/test-logparser.ts +63 -0
  305. package/packages/analytics/src/utils/EventDecoder.ts +152 -0
  306. package/packages/analytics/src/utils/LogParser.ts +220 -0
  307. package/packages/analytics/src/utils/PriceOracle.ts +117 -0
  308. package/packages/analytics/test/AttributionAnalyzer.test.ts +42 -0
  309. package/packages/analytics/test/CostCalculator.test.ts +75 -0
  310. package/packages/analytics/tsconfig.json +2 -1
  311. package/packages/community/__tests__/index.test.ts +9 -0
  312. package/packages/community/node_modules/.bin/tsc +21 -0
  313. package/packages/community/node_modules/.bin/tsserver +21 -0
  314. package/packages/community/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  315. package/packages/community/package.json +27 -0
  316. package/packages/community/src/index.ts +326 -0
  317. package/packages/community/tsconfig.json +8 -0
  318. package/packages/core/__tests__/actions/account-comprehensive.test.ts +92 -0
  319. package/packages/core/__tests__/actions/aggregator.test.ts +62 -0
  320. package/packages/core/__tests__/actions/comprehensive-batch1.test.ts +86 -0
  321. package/packages/core/__tests__/actions/comprehensive-batch2.test.ts +39 -0
  322. package/packages/core/__tests__/actions/comprehensive-batch3.test.ts +35 -0
  323. package/packages/core/__tests__/actions/comprehensive-error.test.ts +115 -0
  324. package/packages/core/__tests__/actions/dvt.test.ts +39 -0
  325. package/packages/core/__tests__/actions/edge-cases.test.ts +39 -0
  326. package/packages/core/__tests__/actions/error-paths.test.ts +82 -0
  327. package/packages/core/__tests__/actions/factory.test.ts +81 -0
  328. package/packages/core/__tests__/actions/faucet.test.ts +131 -0
  329. package/packages/core/__tests__/actions/paymaster.test.ts +116 -0
  330. package/packages/core/__tests__/actions/registry.test.ts +81 -0
  331. package/packages/core/__tests__/actions/reputation.test.ts +43 -0
  332. package/packages/core/__tests__/actions/sbt.test.ts +145 -0
  333. package/packages/core/__tests__/actions/staking.test.ts +30 -0
  334. package/packages/core/__tests__/actions/superPaymaster.test.ts +158 -0
  335. package/packages/core/__tests__/actions/tokens-extended.test.ts +18 -0
  336. package/packages/core/__tests__/actions/tokens.test.ts +122 -0
  337. package/packages/core/__tests__/clients.test.ts +77 -0
  338. package/packages/core/__tests__/contracts-config.test.ts +69 -0
  339. package/packages/core/__tests__/index.test.ts +9 -0
  340. package/packages/core/__tests__/mocks/client.ts +40 -0
  341. package/packages/core/node_modules/.bin/tsc +21 -0
  342. package/packages/core/node_modules/.bin/tsserver +21 -0
  343. package/packages/core/node_modules/.bin/tsx +21 -0
  344. package/packages/core/node_modules/.bin/vite +21 -0
  345. package/packages/core/node_modules/.bin/vitest +21 -0
  346. package/packages/core/node_modules/.bin/yaml +21 -0
  347. package/packages/core/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  348. package/packages/core/package.json +5 -12
  349. package/packages/core/src/abis/SuperPaymaster.json +1 -1
  350. package/packages/core/src/abis/aPNTs.json +1160 -0
  351. package/packages/core/src/abis/abi.config.json +3 -3
  352. package/packages/core/src/abis/index.ts +37 -50
  353. package/packages/core/src/actions/account.ts +137 -126
  354. package/packages/core/src/actions/aggregator.ts +363 -33
  355. package/packages/core/src/actions/dvt.ts +261 -45
  356. package/packages/core/src/actions/entryPoint.ts +56 -233
  357. package/packages/core/src/actions/factory.ts +671 -552
  358. package/packages/core/src/actions/faucet.ts +181 -322
  359. package/packages/core/src/actions/index.ts +2 -5
  360. package/packages/core/src/actions/paymaster.ts +780 -0
  361. package/packages/core/src/actions/registry.ts +926 -825
  362. package/packages/core/src/actions/reputation.ts +568 -278
  363. package/packages/core/src/actions/sbt.ts +867 -632
  364. package/packages/core/src/actions/staking.ts +440 -285
  365. package/packages/core/src/actions/superPaymaster.ts +1058 -793
  366. package/packages/core/src/actions/tokens.ts +468 -514
  367. package/packages/core/src/clients/BaseClient.ts +3 -3
  368. package/packages/core/src/clients/BundlerClient.ts +132 -0
  369. package/packages/core/src/communities.ts +2 -2
  370. package/packages/core/src/constants.ts +1 -32
  371. package/packages/core/src/contract-addresses.ts +3 -10
  372. package/packages/core/src/contract-versions.ts +374 -0
  373. package/packages/core/src/contracts.ts +2 -2
  374. package/packages/core/src/errors/index.ts +173 -0
  375. package/packages/core/src/index.ts +2 -1
  376. package/packages/core/src/requirementChecker.ts +39 -1
  377. package/packages/core/src/roles.ts +50 -61
  378. package/packages/core/src/validators/index.ts +88 -0
  379. package/packages/core/tsconfig.json +2 -1
  380. package/packages/dapp/__tests__/index.test.ts +9 -0
  381. package/packages/dapp/node_modules/.bin/tsc +21 -0
  382. package/packages/dapp/node_modules/.bin/tsserver +21 -0
  383. package/packages/dapp/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  384. package/packages/dapp/package.json +3 -5
  385. package/packages/dapp/tsconfig.json +2 -1
  386. package/packages/enduser/__tests__/CommunityClient.test.ts +205 -0
  387. package/packages/enduser/__tests__/UserClient.test.ts +294 -0
  388. package/packages/enduser/__tests__/index.test.ts +16 -0
  389. package/packages/enduser/__tests__/mocks/client.ts +22 -0
  390. package/packages/enduser/node_modules/.bin/tsc +21 -0
  391. package/packages/enduser/node_modules/.bin/tsserver +21 -0
  392. package/packages/enduser/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  393. package/packages/enduser/package.json +26 -0
  394. package/packages/enduser/src/CommunityClient.ts +235 -0
  395. package/packages/enduser/src/UserClient.ts +447 -0
  396. package/packages/enduser/src/index.ts +2 -0
  397. package/packages/enduser/src/testAccountManager.ts +374 -0
  398. package/packages/enduser/tsconfig.json +10 -0
  399. package/packages/identity/__tests__/index.test.ts +9 -0
  400. package/packages/identity/node_modules/.bin/tsc +21 -0
  401. package/packages/identity/node_modules/.bin/tsserver +21 -0
  402. package/packages/identity/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  403. package/packages/identity/package.json +3 -5
  404. package/packages/identity/tsconfig.json +2 -1
  405. package/packages/operator/__tests__/PaymasterOperatorClient.test.ts +258 -0
  406. package/packages/operator/__tests__/ProtocolClient.test.ts +135 -0
  407. package/packages/operator/__tests__/index.test.ts +16 -0
  408. package/packages/operator/__tests__/mocks/client.ts +22 -0
  409. package/packages/operator/node_modules/.bin/tsc +21 -0
  410. package/packages/operator/node_modules/.bin/tsserver +21 -0
  411. package/packages/operator/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  412. package/packages/operator/package.json +26 -0
  413. package/packages/operator/src/PaymasterOperatorClient.ts +454 -0
  414. package/packages/operator/src/ProtocolClient.ts +154 -0
  415. package/packages/operator/src/index.ts +2 -0
  416. package/packages/operator/tsconfig.json +10 -0
  417. package/packages/patterns/node_modules/.bin/tsc +21 -0
  418. package/packages/patterns/node_modules/.bin/tsserver +21 -0
  419. package/packages/paymaster/__tests__/PaymasterOperator.test.ts +123 -0
  420. package/packages/paymaster/__tests__/index.test.ts +9 -0
  421. package/packages/paymaster/node_modules/.bin/tsc +21 -0
  422. package/packages/paymaster/node_modules/.bin/tsserver +21 -0
  423. package/packages/paymaster/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  424. package/packages/paymaster/package.json +4 -6
  425. package/packages/paymaster/src/V4/BundlerCompat.ts +47 -0
  426. package/packages/paymaster/src/V4/PaymasterClient.ts +122 -17
  427. package/packages/paymaster/src/V4/PaymasterUtils.ts +37 -23
  428. package/packages/paymaster/src/V4/SuperPaymasterClient.ts +17 -11
  429. package/packages/paymaster/tsconfig.json +8 -3
  430. package/packages/sdk/README.md +21 -0
  431. package/packages/sdk/__tests__/index.test.ts +9 -0
  432. package/packages/sdk/aastar/package.json +1 -1
  433. package/packages/sdk/aastar/tsconfig.json +2 -1
  434. package/packages/sdk/node_modules/.bin/tsc +21 -0
  435. package/packages/sdk/node_modules/.bin/tsserver +21 -0
  436. package/packages/sdk/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  437. package/packages/sdk/package.json +4 -14
  438. package/packages/sdk/src/clients/admin.ts +10 -108
  439. package/packages/sdk/src/clients/community.ts +242 -176
  440. package/packages/sdk/src/clients/endUser.ts +168 -291
  441. package/packages/sdk/src/clients/operator.ts +87 -162
  442. package/packages/sdk/src/errors/decoder.ts +41 -84
  443. package/packages/sdk/src/index.ts +10 -9
  444. package/packages/sdk/src/utils/keys.ts +0 -15
  445. package/packages/sdk/src/utils/roleData.ts +26 -15
  446. package/packages/sdk/src/utils/testScenarios.ts +2 -2
  447. package/packages/sdk/src/utils/userOp.ts +3 -11
  448. package/packages/sdk/tsconfig.json +2 -1
  449. package/packages/tokens/__tests__/index.test.ts +9 -0
  450. package/packages/tokens/node_modules/.bin/tsc +21 -0
  451. package/packages/tokens/node_modules/.bin/tsserver +21 -0
  452. package/packages/tokens/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  453. package/packages/tokens/package.json +3 -5
  454. package/packages/tokens/src/index.ts +0 -15
  455. package/packages/tokens/tsconfig.json +2 -1
  456. package/publish.sh +30 -0
  457. package/run_l4_gasless_regression.sh +35 -5
  458. package/run_sdk_regression.sh +3 -9
  459. package/scripts/01_prepare_all.ts +198 -149
  460. package/scripts/02_test_eoa.ts +24 -27
  461. package/scripts/03_test_standard_aa.ts +153 -48
  462. package/scripts/04_test_paymaster_v4.ts +198 -41
  463. package/scripts/05_test_superpaymaster.ts +362 -40
  464. package/scripts/11_test_core_flows_full.ts +197 -75
  465. package/scripts/18_test_dvt_sdk_flow.ts +1 -1
  466. package/scripts/19_sdk_experiment_runner.ts +135 -42
  467. package/scripts/20_sdk_full_capability.ts +77 -75
  468. package/scripts/analyze_abi_coverage.ts +4 -4
  469. package/scripts/analyze_missing_functions.ts +136 -0
  470. package/scripts/canary-bundler.ts +47 -0
  471. package/scripts/check-chainlink.ts +28 -0
  472. package/scripts/check-jason-status.ts +61 -160
  473. package/scripts/check-roles.ts +1 -1
  474. package/scripts/complete-jack-superpaymaster.ts +1 -1
  475. package/scripts/deploy_and_init_v3.sh +0 -0
  476. package/scripts/deploy_jason_pm.ts +114 -0
  477. package/scripts/dev_tools/extract_abis.sh +0 -0
  478. package/scripts/dev_tools/extract_addresses_to_env.sh +0 -0
  479. package/scripts/extract-docs.sh +9 -78
  480. package/scripts/l4-debug-bob.ts +62 -0
  481. package/scripts/l4-paymasterv4-transfer-test.ts +12 -20
  482. package/scripts/l4-setup.ts +1235 -341
  483. package/scripts/l4-state.json +16 -14
  484. package/scripts/manual-update-price.ts +39 -0
  485. package/scripts/phase1_verify_contracts.ts +1 -1
  486. package/scripts/publish_all.sh +0 -0
  487. package/scripts/query-jack-token.ts +1 -1
  488. package/scripts/run_automated_experiment.sh +0 -0
  489. package/scripts/run_full_regression.sh +38 -0
  490. package/scripts/run_l4_gasless_regression.sh +0 -0
  491. package/scripts/run_sdk_experiment.sh +0 -0
  492. package/scripts/run_sdk_regression-v2.sh +0 -0
  493. package/scripts/sdk_regression_v2.ts +20 -34
  494. package/scripts/security_audit.sh +0 -0
  495. package/scripts/setup-bbq-community.ts +2 -2
  496. package/scripts/setup-dancing-community.ts +3 -3
  497. package/scripts/test-brown-v4-deploy.ts +2 -2
  498. package/scripts/test-faucet-and-gasless.ts +119 -139
  499. package/scripts/test-jack-gasless.ts +1 -1
  500. package/scripts/test-jack-registration.ts +2 -2
  501. package/scripts/test-jack-superpaymaster-api.ts +2 -2
  502. package/scripts/test-kms-gasless.ts +307 -93
  503. package/scripts/update-price-dvt.ts +53 -0
  504. package/scripts/v2_regression/01_setup_and_fund.ts +1 -1
  505. package/scripts/v2_regression/02_operator_onboarding.ts +140 -14
  506. package/scripts/v2_regression/03_community_registry.ts +58 -24
  507. package/scripts/v2_regression/04_enduser_flow.ts +49 -16
  508. package/scripts/v2_regression/05_admin_audit.ts +1 -1
  509. package/scripts/verify-bob-token.ts +41 -0
  510. package/sdk-abi-coverage.sh +1 -0
  511. package/sdk-build-and-test.sh +1 -0
  512. package/sdk-test-coverage.sh +1 -0
  513. package/simple-test-paymaster.sh +1 -1
  514. package/simple-test-superpaymaster.sh +3 -1
  515. package/tests/check-aa-balance.ts +31 -0
  516. package/tests/l1-regression.test.ts +13 -34
  517. package/tests/l4-test-anni-gasless.ts +497 -85
  518. package/tests/l4-test-jason1-gasless.ts +29 -21
  519. package/tests/l4-test-jason2-gasless.ts +21 -15
  520. package/tests/l4-test-pmv4-deposit.ts +2 -2
  521. package/tests/l4-test-pmv4-gasless.ts +2 -2
  522. package/tests/l4-test-pmv4-submit.ts +2 -2
  523. package/tests/regression/config.ts +4 -2
  524. package/tests/regression/index.ts +0 -0
  525. package/tests/regression/l1-tests.ts +16 -35
  526. package/tests/regression/l2-tests.ts +149 -93
  527. package/tests/regression/l3-tests.ts +16 -113
  528. package/tests/regression/l4-comprehensive-gasless.ts +478 -0
  529. package/tests/regression/l4-gasless.ts +115 -13
  530. package/tests/regression/l4-reputation-tiers.ts +102 -0
  531. package/tests/test-bundler-compat.ts +132 -0
  532. package/tests/test-candide-bundler.ts +117 -0
  533. package/tests/test-candide-paymaster.ts +101 -0
  534. package/tests/test-candide-sdk.ts +116 -0
  535. package/tests/test-candide-simple.ts +204 -0
  536. package/tests/test-pimlico-complete.ts +134 -0
  537. package/tests/utils/contractVerifier.ts +3 -3
  538. package/tsconfig.build.json +23 -0
  539. package/tsconfig.json +5 -19
  540. package/typedoc.json +5 -39
  541. package/update-version.sh +20 -0
  542. package/vitest.config.ts +6 -5
  543. package/.eslintrc.cjs +0 -30
  544. package/docs/ABI_Change_Tracking_Workflow.md +0 -41
  545. package/docs/Faucet_Gasless_Plan.md +0 -56
  546. package/docs/api/@aastar/account.md +0 -235
  547. package/docs/api/@aastar/analytics.md +0 -219
  548. package/docs/api/@aastar/core.md +0 -26830
  549. package/docs/api/@aastar/dapp.md +0 -130
  550. package/docs/api/@aastar/identity.md +0 -482
  551. package/docs/api/@aastar/paymaster.md +0 -1387
  552. package/docs/api/@aastar/sdk/README.md +0 -155
  553. package/docs/api/@aastar/sdk/node.md +0 -4044
  554. package/docs/api/@aastar/tokens.md +0 -1971
  555. package/docs/changelog.md +0 -99
  556. package/docs/examples/README.md +0 -18
  557. package/docs/guide/concepts/account-abstraction.md +0 -95
  558. package/docs/guide/concepts/rainbow-bridge.md +0 -68
  559. package/docs/guide/concepts/reputation.md +0 -95
  560. package/docs/guide/concepts/superpaymaster.md +0 -141
  561. package/docs/guide/use-cases/community-management.md +0 -141
  562. package/docs/guide/use-cases/gasless-transactions.md +0 -71
  563. package/docs/guide/use-cases/operator-staking.md +0 -84
  564. package/docs/guide/use-cases/yop.md +0 -72
  565. package/docs/refactor/2026-01-13-221242-trae-refactor.md +0 -224
  566. package/docs/refactor/2026-01-13-audit-analysis.md +0 -96
  567. package/docs/refactor/2026-01-13-audit-report-v0.16.2.md +0 -76
  568. package/docs/refactor/2026-01-13-audit-report-v0.17.0.md +0 -74
  569. package/docs/refactor/2026-01-13-cursor-refactor.md +0 -511
  570. package/docs/refactor/2026-01-13-refactor-plan.md +0 -88
  571. package/docs/refactor/2026-01-13-refactor-response-plan.md +0 -77
  572. package/docs/refactor/2026-01-13-refactor-review.md +0 -39
  573. package/docs/refactor/2026-01-13-sdk-enhancement-plan.md +0 -120
  574. package/docs/refactor/2026-01-14-audit-response.md +0 -242
  575. package/docs/refactor/2026-01-14-audit-summary.md +0 -133
  576. package/docs/refactor/cursor-2026-01-13-14-00-audit-report.md +0 -267
  577. package/packages/account/src/accounts/simple.test.ts +0 -93
  578. package/packages/account/src/eoa.test.ts +0 -37
  579. package/packages/account/src/index.test.ts +0 -34
  580. package/packages/core/scripts/audit-abi-coverage.ts +0 -165
  581. package/packages/core/scripts/debug-regex.ts +0 -36
  582. package/packages/core/src/abis/.abi-hashes.json +0 -26
  583. package/packages/core/src/actions/StateValidator.test.ts +0 -175
  584. package/packages/core/src/actions/account.test.ts +0 -155
  585. package/packages/core/src/actions/aggregator.test.ts +0 -88
  586. package/packages/core/src/actions/dvt.test.ts +0 -124
  587. package/packages/core/src/actions/entryPoint.test.ts +0 -176
  588. package/packages/core/src/actions/factory.test.ts +0 -250
  589. package/packages/core/src/actions/faucet.test.ts +0 -202
  590. package/packages/core/src/actions/gtokenExtended.test.ts +0 -162
  591. package/packages/core/src/actions/gtokenExtended.ts +0 -153
  592. package/packages/core/src/actions/paymasterV4.test.ts +0 -209
  593. package/packages/core/src/actions/paymasterV4.ts +0 -455
  594. package/packages/core/src/actions/registry.test.ts +0 -443
  595. package/packages/core/src/actions/reputation.test.ts +0 -225
  596. package/packages/core/src/actions/sbt.test.ts +0 -322
  597. package/packages/core/src/actions/staking.test.ts +0 -273
  598. package/packages/core/src/actions/superPaymaster.test.ts +0 -356
  599. package/packages/core/src/actions/tokens.test.ts +0 -60
  600. package/packages/core/src/actions/validators.test.ts +0 -239
  601. package/packages/core/src/actions/validators.ts +0 -590
  602. package/packages/core/src/contracts.test.ts +0 -58
  603. package/packages/core/src/requirementChecker.test.ts +0 -71
  604. package/packages/core/src/roles.test.ts +0 -34
  605. package/packages/core/src/utils/validation.test.ts +0 -50
  606. package/packages/core/src/utils/validation.ts +0 -66
  607. package/packages/core/vitest.config.ts +0 -14
  608. package/packages/paymaster/src/V4/PaymasterClient.test.ts +0 -114
  609. package/packages/paymaster/src/V4/PaymasterOperator.test.ts +0 -80
  610. package/packages/paymaster/src/V4/PaymasterUtils.test.ts +0 -54
  611. package/packages/paymaster/src/V4/SuperPaymasterClient.test.ts +0 -79
  612. package/packages/sdk/coverage_output.txt +0 -393
  613. package/packages/sdk/coverage_output_final.txt +0 -739
  614. package/packages/sdk/coverage_output_final_v2.txt +0 -722
  615. package/packages/sdk/coverage_output_final_v3.txt +0 -722
  616. package/packages/sdk/src/clients/ExperimentClient.test.ts +0 -65
  617. package/packages/sdk/src/clients/admin.test.ts +0 -98
  618. package/packages/sdk/src/clients/clients.test.ts +0 -104
  619. package/packages/sdk/src/clients/community.test.ts +0 -118
  620. package/packages/sdk/src/clients/endUser.test.ts +0 -221
  621. package/packages/sdk/src/clients/operator.test.ts +0 -162
  622. package/packages/sdk/src/errors/AAStarError.test.ts +0 -92
  623. package/packages/sdk/src/errors/AAStarError.ts +0 -70
  624. package/packages/sdk/src/errors/decoder.test.ts +0 -107
  625. package/packages/sdk/src/node/index.ts +0 -8
  626. package/packages/sdk/src/types/result.ts +0 -29
  627. package/packages/sdk/src/utils/errorHandler.test.ts +0 -102
  628. package/packages/sdk/src/utils/eventDecoder.test.ts +0 -56
  629. package/packages/sdk/src/utils/eventDecoder.ts +0 -66
  630. package/packages/sdk/src/utils/funding.test.ts +0 -117
  631. package/packages/sdk/src/utils/keys.test.ts +0 -105
  632. package/packages/sdk/src/utils/roleData.test.ts +0 -85
  633. package/packages/sdk/src/utils/testScenarios.test.ts +0 -79
  634. package/packages/sdk/src/utils/userOp.test.ts +0 -190
  635. package/scripts/debug-addr.ts +0 -43
  636. package/scripts/debug-community-registration.ts +0 -92
  637. package/scripts/debug-deploy-v4.ts +0 -116
  638. package/scripts/debug-paymaster.ts +0 -127
  639. package/scripts/debug-register-role.ts +0 -101
  640. package/scripts/debug-version.ts +0 -71
  641. package/scripts/debug_account_c.ts +0 -43
  642. package/scripts/debug_bls.ts +0 -58
  643. package/scripts/debug_config_v036.ts +0 -13
  644. package/scripts/debug_contracts.ts +0 -2
  645. package/scripts/debug_env.ts +0 -69
  646. package/scripts/debug_find_paymaster.ts +0 -98
  647. package/scripts/debug_isolated_registration.ts +0 -256
  648. package/scripts/debug_paymaster_config.ts +0 -19
  649. package/scripts/debug_pim_addr.ts +0 -23
  650. package/scripts/debug_pm_status.ts +0 -51
  651. package/scripts/debug_registry.ts +0 -39
  652. package/scripts/debug_registry_setup.ts +0 -129
  653. package/scripts/debug_sanity.ts +0 -32
  654. package/scripts/debug_shared_config.ts +0 -10
  655. package/scripts/debug_token_compat.ts +0 -51
  656. package/scripts/debug_tokens.ts +0 -41
  657. package/scripts/debug_vcheck.ts +0 -33
  658. package/scripts/test_groups.ts +0 -138
  659. package/scripts/test_multi_community_anvil.ts +0 -276
  660. package/scripts/test_new_sdk_apis_sepolia.ts +0 -193
  661. package/scripts/test_sdk_join_idempotent.ts +0 -233
  662. package/scripts/test_simple_sepolia.ts +0 -44
@@ -1,93 +1,95 @@
1
1
 
2
- import { http, type Hex, parseEther, Address } from 'viem';
2
+ import { createAAStarPublicClient, registryActions } from '../packages/core/src/index.js';
3
+ import { createAdminClient } from '../packages/sdk/src/index.js';
4
+ import { ReputationClient } from '../packages/identity/src/index.js';
5
+ import { FinanceClient } from '../packages/tokens/src/index.js';
6
+ import { DVTClient } from '../packages/dapp/src/index.js';
7
+
8
+ import { foundry } from 'viem/chains';
3
9
  import { privateKeyToAccount } from 'viem/accounts';
4
- import {
5
- createAdminClient,
6
- createOperatorClient,
7
- createCommunityClient,
8
- createEndUserClient,
9
- CORE_ADDRESSES,
10
- TEST_TOKEN_ADDRESSES,
11
- parseKey
12
- } from '../packages/sdk/src/index.ts';
10
+ import { http, type Hex, parseEther } from 'viem';
13
11
  import * as dotenv from 'dotenv';
14
12
  import * as path from 'path';
15
- import { fileURLToPath } from 'url';
16
-
17
- const __filename = fileURLToPath(import.meta.url);
18
- const __dirname = path.dirname(__filename);
19
13
 
20
- // Load env
21
- const NETWORK = process.env.EXPERIMENT_NETWORK || 'anvil';
22
- const envFile = NETWORK === 'sepolia' ? '.env.sepolia' : '.env.anvil';
23
- dotenv.config({ path: path.resolve(process.cwd(), envFile) });
14
+ dotenv.config({ path: path.resolve(process.cwd(), '.env.anvil') });
24
15
 
25
- const ADMIN_KEY = (process.env.ADMIN_KEY || process.env.PRIVATE_KEY_JASON) as Hex;
26
- const RPC_URL = process.env.RPC_URL || (NETWORK === 'sepolia' ? process.env.SEPOLIA_RPC_URL : "http://127.0.0.1:8545");
16
+ const ADMIN_KEY = process.env.ADMIN_KEY as Hex;
17
+ const RPC_URL = process.env.RPC_URL || 'http://127.0.0.1:8545';
18
+ const REGISTRY_ADDR = process.env.REGISTRY_ADDR as Hex;
19
+ const REPUTATION_ADDR = process.env.REPUTATION_SYSTEM_ADDR as Hex; // Check env var name
20
+ const PAYMASTER_ADDR = process.env.SUPERPAYMASTER_ADDR as Hex;
21
+ const DVT_ADDR = process.env.DVT_VALIDATOR_ADDR as Hex; // Assuming this might be missing in .env.anvil, check later
27
22
 
28
23
  async function runFullCapabilityTest() {
29
- console.log(`🚀 Running Full Capability SDK Test (Network: ${NETWORK})`);
24
+ console.log("🚀 Running Full Capability SDK Test (v1.0 Preview)...");
30
25
 
31
- if (!ADMIN_KEY) throw new Error("Missing ADMIN_KEY");
32
- const account = privateKeyToAccount(parseKey(ADMIN_KEY));
33
-
34
- // 1. Admin Capabilities
35
- console.log("\n--- 🔧 Admin Client ---");
36
- const admin = createAdminClient({ transport: http(RPC_URL), account });
37
- const registryOwner = await admin.readContract({
38
- address: CORE_ADDRESSES.registry,
39
- abi: [{ name: 'owner', type: 'function', inputs: [], outputs: [{ type: 'address' }], stateMutability: 'view' }],
40
- functionName: 'owner'
26
+ const account = privateKeyToAccount(ADMIN_KEY);
27
+ const publicClient = createAAStarPublicClient({ chain: foundry, rpcUrl: RPC_URL });
28
+ const walletClient = createAdminClient({
29
+ chain: foundry,
30
+ transport: http(RPC_URL),
31
+ account,
32
+ addresses: {
33
+ registry: REGISTRY_ADDR,
34
+ superPaymaster: PAYMASTER_ADDR,
35
+ gTokenStaking: process.env.GTOKEN_STAKING_ADDR as Hex
36
+ }
41
37
  });
42
- console.log(` Registry Owner: ${registryOwner}`);
43
38
 
44
- // 2. Operator Capabilities
45
- console.log("\n--- 🏭 Operator Client ---");
46
- const operator = createOperatorClient({ transport: http(RPC_URL), account });
47
- const status = await operator.getOperatorStatus(account.address);
48
- console.log(` Is Simple Operator: ${status.isOperator}`);
49
- console.log(` Is Super Operator: ${status.isSuperPaymaster}`);
50
- if (status.paymasterV4) {
51
- console.log(` Paymaster V4: ${status.paymasterV4.address}`);
52
- }
39
+ // 1. Registry
40
+ console.log(" 📜 Testing Registry (Credit Check)...");
41
+ const regActions = registryActions(REGISTRY_ADDR)(publicClient);
42
+ const credit = await regActions.getCreditLimit({ user: account.address });
43
+ console.log(` Credit Limit: ${credit}`);
53
44
 
54
- // 3. Community Capabilities
55
- console.log("\n--- 🤝 Community Client ---");
56
- const community = createCommunityClient({ transport: http(RPC_URL), account }); // Note: reuse account for simplicity in this demo
57
- // Checking a community status (can be self or another)
58
- const isComm = await admin.readContract({
59
- address: CORE_ADDRESSES.registry,
60
- abi: [{ name: 'hasRole', type: 'function', inputs: [{type:'bytes32'}, {type:'address'}], outputs: [{type:'bool'}], stateMutability: 'view' }],
61
- functionName: 'hasRole',
62
- args: ['0x0000000000000000000000000000000000000000000000000000000000000001' as Hex, account.address] // ROLE_COMMUNITY
63
- });
64
- console.log(` Is Community: ${isComm}`);
45
+ // 2. Reputation
46
+ if (REPUTATION_ADDR) {
47
+ console.log(" ⭐ Testing Reputation (Compute Score)...");
48
+ const repClient = new ReputationClient(publicClient, REPUTATION_ADDR);
49
+ // Checking score with empty arrays (mock)
50
+ const score = await repClient.computeScore(account.address, [], [], []);
51
+ console.log(` Reputation Score: ${score}`);
52
+ } else {
53
+ console.warn(" ⚠️ REPUTATION_ADDR missing, skipping.");
54
+ }
65
55
 
66
- // 4. End User Capabilities
67
- console.log("\n--- 👤 End User Client ---");
68
- const user = createEndUserClient({ transport: http(RPC_URL), account });
69
- const { accountAddress } = await user.createSmartAccount({
70
- owner: account.address,
71
- salt: 1337n
72
- });
73
- console.log(` SA Address (Salt 1337): ${accountAddress}`);
56
+ // 3. Finance
57
+ console.log(" 💰 Testing Finance (Paymaster Deposit)...");
58
+ // 3. Finance
59
+ console.log(" 💰 Testing Finance (Paymaster Deposit)...");
60
+ // Use XPNTS or APNTS address from env, fallback to GTOKEN if missing but likely XPNTS is correct for Paymaster collateral
61
+ const TOKEN_ADDR = (process.env.APNTS || process.env.XPNTS_ADDR || process.env.GTOKEN_ADDRESS || process.env.GAS_TOKEN_ADDRESS) as Hex;
62
+
63
+ if (TOKEN_ADDR) {
64
+ console.log(` Using Token: ${TOKEN_ADDR}`);
65
+ // For xPNTs, we must use Push pattern (transferAndCall)
66
+ // No approval needed for transferAndCall usually, but we assume we have balance.
67
+ try {
68
+ const hash = await FinanceClient.depositViaTransferAndCall(walletClient, TOKEN_ADDR, PAYMASTER_ADDR, parseEther("0.1"));
69
+ console.log(` Deposit (Push) Tx: ${hash}`);
70
+ } catch (e: any) {
71
+ console.error(` Deposit Failed: ${e.message}`);
72
+ }
73
+ } else {
74
+ console.warn(" ⚠️ TOKEN Address missing. Skipping Deposit.");
75
+ }
74
76
 
75
- // 5. Gasless Execution Demo (Dry Run style)
76
- console.log("\n--- ⚡ Gasless Execution (Simulation) ---");
77
- try {
78
- console.log(` Simulating gasless transfer...`);
79
- // This will attempt to build and estimate. If PMs aren't setup it might fail, which is okay for full capability test to show error reporting.
80
- const result = await user.executeGasless({
81
- target: account.address,
82
- data: '0x',
83
- value: 0n
84
- });
85
- console.log(` ✅ Execution Hash: ${result.hash}`);
86
- } catch (e: any) {
87
- console.log(` ℹ️ Gasless demo skipped/failed (expected if PM not ready): ${e.message.split('\n')[0]}`);
77
+ // 4. DVT
78
+ if (DVT_ADDR) {
79
+ console.log(" 🛡️ Testing DVT (Validator Reg)...");
80
+ // Mock BLS Key
81
+ const blsKey = "0x12345678" as Hex; // Dummy
82
+ try {
83
+ // This might revert if logic checks BLS formatting, but validates route exists
84
+ await DVTClient.registerValidator(walletClient, DVT_ADDR, blsKey);
85
+ } catch (e: any) {
86
+ console.log(` DVT Call Reached (Reverted as expected for dummy key): ${e.shortMessage || e.message}`);
87
+ }
88
+ } else {
89
+ console.warn(" ⚠️ DVT_ADDR (Validation) missing, skipping.");
88
90
  }
89
91
 
90
- console.log("\n✅ Full Capability Test Complete.");
92
+ console.log("✅ Full Capability Test Complete.");
91
93
  }
92
94
 
93
- main().catch(console.error);
95
+ runFullCapabilityTest().catch(console.error);
@@ -25,7 +25,8 @@ function getAllContracts(): ContractAnalysis[] {
25
25
  const files = fs.readdirSync(ABIS_DIR).filter(f => f.endsWith('.json') && f !== 'index.ts');
26
26
 
27
27
  return files.map(file => {
28
- const content = JSON.parse(fs.readFileSync(path.join(ABIS_DIR, file), 'utf8'));
28
+ const rawContent = JSON.parse(fs.readFileSync(path.join(ABIS_DIR, file), 'utf8'));
29
+ const content = Array.isArray(rawContent) ? rawContent : (rawContent.abi || []);
29
30
  const functions = content
30
31
  .filter((item: any) => item.type === 'function')
31
32
  .map((item: any) => item.name)
@@ -53,8 +54,7 @@ function analyzeActionsCoverage(contracts: ContractAnalysis[]): ContractAnalysis
53
54
  'xPNTs': 'tokens.ts',
54
55
  'xPNTsToken': 'tokens.ts',
55
56
  'SuperPaymaster': 'superPaymaster.ts',
56
- 'PaymasterV4_2': 'paymasterV4.ts',
57
- 'Paymaster': 'paymasterV4.ts',
57
+ 'Paymaster': 'paymaster.ts',
58
58
  'MySBT': 'sbt.ts',
59
59
  'ReputationSystem': 'reputation.ts',
60
60
  'PaymasterFactory': 'factory.ts',
@@ -104,7 +104,7 @@ function generateReport(contracts: ContractAnalysis[]) {
104
104
  ['aPNTs', 'xPNTs', 'xPNTsToken', 'xPNTsFactory'].includes(c.contract)
105
105
  );
106
106
  const paymasterContracts = contracts.filter(c =>
107
- ['PaymasterV4_2', 'Paymaster', 'PaymasterFactory'].includes(c.contract)
107
+ ['Paymaster', 'PaymasterFactory'].includes(c.contract)
108
108
  );
109
109
  const aaContracts = contracts.filter(c =>
110
110
  c.contract.includes('Account') || c.contract.includes('EntryPoint')
@@ -0,0 +1,136 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * Missing Functions Analysis Script - для достижения 95% покрытия
4
+ */
5
+
6
+ import * as fs from 'fs';
7
+ import * as path from 'path';
8
+
9
+ const ABIS_DIR = path.join(process.cwd(), 'packages/core/src/abis');
10
+ const ACTIONS_DIR = path.join(process.cwd(), 'packages/core/src/actions');
11
+
12
+ // Mapping contracts to action files
13
+ const MAPPING: Record<string, string> = {
14
+ 'Registry': 'registry.ts',
15
+ 'GTokenStaking': 'staking.ts',
16
+ 'GToken': 'tokens.ts',
17
+ 'aPNTs': 'tokens.ts',
18
+ 'xPNTs': 'tokens.ts',
19
+ 'xPNTsToken': 'tokens.ts',
20
+ 'SuperPaymaster': 'superPaymaster.ts',
21
+ 'Paymaster': 'paymaster.ts',
22
+ 'MySBT': 'sbt.ts',
23
+ 'ReputationSystem': 'reputation.ts',
24
+ 'PaymasterFactory': 'factory.ts',
25
+ 'xPNTsFactory': 'factory.ts',
26
+ 'DVTValidator': 'dvt.ts',
27
+ 'BLSValidator': 'aggregator.ts',
28
+ 'BLSAggregator': 'aggregator.ts',
29
+ };
30
+
31
+ interface FunctionInfo {
32
+ name: string;
33
+ inputs: any[];
34
+ outputs: any[];
35
+ stateMutability: string;
36
+ }
37
+
38
+ function loadABI(contractName: string): FunctionInfo[] {
39
+ const abiPath = path.join(ABIS_DIR, `${contractName}.json`);
40
+ if (!fs.existsSync(abiPath)) return [];
41
+
42
+ const rawContent = JSON.parse(fs.readFileSync(abiPath, 'utf8'));
43
+ const abi = Array.isArray(rawContent) ? rawContent : (rawContent.abi || []);
44
+
45
+ return abi
46
+ .filter((item: any) => item.type === 'function')
47
+ .map((item: any) => ({
48
+ name: item.name,
49
+ inputs: item.inputs || [],
50
+ outputs: item.outputs || [],
51
+ stateMutability: item.stateMutability || 'nonpayable'
52
+ }));
53
+ }
54
+
55
+ function getCoveredFunctions(contractName: string): Set<string> {
56
+ const actionFile = MAPPING[contractName];
57
+ if (!actionFile) return new Set();
58
+
59
+ const actionPath = path.join(ACTIONS_DIR, actionFile);
60
+ if (!fs.existsSync(actionPath)) return new Set();
61
+
62
+ const content = fs.readFileSync(actionPath, 'utf8');
63
+ const covered = new Set<string>();
64
+
65
+ // Match functionName: 'xxx' or functionName: "xxx"
66
+ const matches = content.matchAll(/functionName:\s*['"]([^'"]+)['"]/g);
67
+ for (const match of matches) {
68
+ covered.add(match[1]);
69
+ }
70
+
71
+ return covered;
72
+ }
73
+
74
+ function analyzeMissingFunctions(contractName: string) {
75
+ const allFunctions = loadABI(contractName);
76
+ const covered = getCoveredFunctions(contractName);
77
+
78
+ const missing = allFunctions.filter(f => !covered.has(f.name));
79
+ const coveragePercent = allFunctions.length > 0
80
+ ? Math.round((covered.size / allFunctions.length) * 100)
81
+ : 0;
82
+
83
+ return {
84
+ contractName,
85
+ actionFile: MAPPING[contractName] || 'N/A',
86
+ total: allFunctions.length,
87
+ covered: covered.size,
88
+ coveragePercent,
89
+ missing,
90
+ needsImprovement: coveragePercent < 95
91
+ };
92
+ }
93
+
94
+ // Analyze all core business contracts (官方SuperPaymaster contracts)
95
+ const coreContracts = [
96
+ 'ReputationSystem',
97
+ 'GToken',
98
+ 'SuperPaymaster',
99
+ 'GTokenStaking',
100
+ 'xPNTsToken',
101
+ 'xPNTsFactory',
102
+ 'Paymaster',
103
+ 'PaymasterFactory',
104
+ 'MySBT',
105
+ 'Registry',
106
+ // Validators (自研合约)
107
+ 'BLSAggregator',
108
+ 'DVTValidator',
109
+ 'BLSValidator'
110
+ ];
111
+
112
+ console.log('\n=== Missing Functions Analysis for 95% Coverage ===\n');
113
+
114
+ const results = coreContracts.map(analyzeMissingFunctions);
115
+
116
+ for (const result of results) {
117
+ if (!result.needsImprovement) {
118
+ console.log(`✅ ${result.contractName}: ${result.coveragePercent}% (${result.covered}/${result.total}) - OK`);
119
+ continue;
120
+ }
121
+
122
+ console.log(`\n🔧 ${result.contractName}: ${result.coveragePercent}% (${result.covered}/${result.total})`);
123
+ console.log(` Action File: ${result.actionFile}`);
124
+ console.log(` Missing Functions (${result.missing.length}):`);
125
+
126
+ for (const fn of result.missing) {
127
+ const params = fn.inputs.map((p: any) => `${p.name}: ${p.type}`).join(', ');
128
+ const returns = fn.outputs.length > 0
129
+ ? ` → ${fn.outputs.map((o: any) => o.type).join(', ')}`
130
+ : '';
131
+ const mutability = fn.stateMutability !== 'nonpayable' ? ` [${fn.stateMutability}]` : '';
132
+ console.log(` - ${fn.name}(${params})${returns}${mutability}`);
133
+ }
134
+ }
135
+
136
+ console.log('\n');
@@ -0,0 +1,47 @@
1
+ import { BundlerClient } from '../packages/sdk/src/index.js';
2
+ import * as dotenv from 'dotenv';
3
+ import path from 'path';
4
+ import { fileURLToPath } from 'url';
5
+
6
+ const __filename = fileURLToPath(import.meta.url);
7
+ const __dirname = path.dirname(__filename);
8
+ dotenv.config({ path: path.resolve(__dirname, '../.env.sepolia') });
9
+
10
+ async function main() {
11
+ const bundlerUrl = process.env.SEPOLIA_RPC_URL || '';
12
+ const entryPoint = '0x0000000071727De22E5E9d8BAf0edAc6f37da032'; // Sepolia v0.7
13
+
14
+ // 1. Initialize Parallel Client
15
+ const client = new BundlerClient(bundlerUrl, entryPoint as `0x${string}`);
16
+ console.log('🚀 BundlerClient Canary Started');
17
+
18
+ // 2. Test getUserOperationByHash
19
+ // Use the hash from the previous milestone run
20
+ const hash = '0x97ca3690efb759218325e46aa8d48e1b3ff97bcb8adb2770ca2ce1a36ad00651' as `0x${string}`;
21
+ console.log(`\n🔍 Querying UserOp: ${hash}`);
22
+
23
+ try {
24
+ const userOp = await client.getUserOperationByHash(hash);
25
+ console.log('✅ UserOp Found:', JSON.stringify(userOp, null, 2).slice(0, 200) + '...');
26
+
27
+ const receipt = await client.getUserOperationReceipt(hash);
28
+ console.log('✅ Receipt Found:', receipt ? 'Yes' : 'No');
29
+ if (receipt) {
30
+ console.log(` Transaction Hash: ${receipt.receipt?.transactionHash || 'N/A'}`);
31
+ }
32
+ } catch (e: any) {
33
+ console.error('❌ Query failed:', e.message);
34
+ }
35
+
36
+ // 3. Test Retry Logic (Using a bad URL)
37
+ console.log('\n🔄 Testing Retry Logic with invalid URL...');
38
+ const badClient = new BundlerClient('https://invalid-bundler-url.abc', entryPoint as `0x${string}`);
39
+
40
+ try {
41
+ await badClient.getUserOperationByHash(hash);
42
+ } catch (e: any) {
43
+ console.log('✅ Retry Logic caught failure (Check console for retry logs above this line)');
44
+ }
45
+ }
46
+
47
+ main().catch(console.error);
@@ -0,0 +1,28 @@
1
+ import { createPublicClient, http, parseAbi } from 'viem';
2
+ import { sepolia } from 'viem/chains';
3
+ import * as dotenv from 'dotenv';
4
+
5
+ dotenv.config({ path: '.env.sepolia' });
6
+
7
+ const publicClient = createPublicClient({ chain: sepolia, transport: http(process.env.RPC_URL_SEPOLIA!) });
8
+ const priceFeed = '0x694AA1769357215DE4FAC081bf1f309aDC325306';
9
+
10
+ async function main() {
11
+ const data = await publicClient.readContract({
12
+ address: priceFeed,
13
+ abi: parseAbi(['function latestRoundData() view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)']),
14
+ functionName: 'latestRoundData'
15
+ }) as [bigint, bigint, bigint, bigint, bigint];
16
+
17
+ const now = Math.floor(Date.now() / 1000);
18
+ const age = now - Number(data[3]);
19
+
20
+ console.log('📊 Chainlink ETH/USD Feed (Sepolia):');
21
+ console.log(` Price: $${Number(data[1]) / 1e8}`);
22
+ console.log(` UpdatedAt: ${data[3]} (${new Date(Number(data[3]) * 1000).toISOString()})`);
23
+ console.log(` Age: ${age} seconds (${(age / 3600).toFixed(1)} hours)`);
24
+ console.log(` Threshold: 3600 seconds (1 hour)`);
25
+ console.log(` Status: ${age > 3600 ? '❌ STALE' : '✅ Fresh'}`);
26
+ }
27
+
28
+ main().catch(console.error);
@@ -1,184 +1,85 @@
1
1
 
2
- import { createPublicClient, createWalletClient, http, parseAbi, keccak256, formatEther, parseEther, toBytes } from 'viem';
3
- import { privateKeyToAccount } from 'viem/accounts';
2
+ import { createPublicClient, http, parseAbi, type Address, formatEther } from 'viem';
4
3
  import { sepolia } from 'viem/chains';
5
4
  import * as dotenv from 'dotenv';
6
- import * as fs from 'fs';
7
5
  import * as path from 'path';
6
+ import { fileURLToPath } from 'url';
7
+ import * as fs from 'fs';
8
8
 
9
- // Load env
10
- dotenv.config({ path: '.env.sepolia' });
11
-
12
- const CONFIG_PATH = path.resolve(process.cwd(), 'config.sepolia.json');
13
- const STATE_PATH = path.resolve(process.cwd(), 'scripts/l4-state.json');
14
-
15
- // ABIs
16
- const REGISTRY_ABI = parseAbi([
17
- 'function hasRole(bytes32 roleId, address user) view returns (bool)',
18
- 'function roleMetadata(bytes32 roleId, address user) view returns (bytes)',
19
- 'function registerRole(bytes32 roleId, address user, bytes roleData)',
20
- 'function registerRoleSelf(bytes32 roleId, bytes roleData)'
21
- ]);
22
-
23
- const FACTORY_ABI = parseAbi([
24
- 'function getTokenAddress(address community) view returns (address)',
25
- 'function deployxPNTsToken(string name, string symbol, string communityName, string communityENS, uint256 exchangeRate, address paymasterAOA) returns (address)'
26
- ]);
27
-
28
- const TOKEN_ABI = parseAbi([
29
- 'function name() view returns (string)',
30
- 'function symbol() view returns (string)'
31
- ]);
32
-
33
- const ROLE_COMMUNITY = keccak256(toBytes('COMMUNITY'));
9
+ const __filename = fileURLToPath(import.meta.url);
10
+ const __dirname = path.dirname(__filename);
11
+ dotenv.config({ path: path.resolve(__dirname, '../.env.sepolia') });
34
12
 
35
13
  async function main() {
36
- console.log('🔍 Checking Jason Account Status...');
37
-
38
- // 1. Load Config & State
39
- const config = JSON.parse(fs.readFileSync(CONFIG_PATH, 'utf8'));
40
- const state = JSON.parse(fs.readFileSync(STATE_PATH, 'utf8'));
41
-
42
- // Jason's Address
43
- const jasonAddress = state.operators.jason.address;
44
- const jasonKey = process.env.PRIVATE_KEY_JASON;
45
-
46
- if (!jasonAddress || !jasonKey) {
47
- throw new Error('Jason address or private key not found');
48
- }
49
-
50
- console.log(`👤 Jason Address: ${jasonAddress}`);
14
+ const statePath = path.resolve(__dirname, '../scripts/l4-state.json');
15
+ const state = JSON.parse(fs.readFileSync(statePath, 'utf8'));
51
16
 
52
- // Clients
53
- const client = createPublicClient({ chain: sepolia, transport: http(process.env.RPC_URL) });
54
- const wallet = createWalletClient({
55
- account: privateKeyToAccount(jasonKey as `0x${string}`),
56
- chain: sepolia,
57
- transport: http(process.env.RPC_URL)
17
+ const rpcUrl = process.env.SEPOLIA_RPC_URL || process.env.RPC_URL;
18
+ const client = createPublicClient({
19
+ chain: sepolia,
20
+ transport: http(rpcUrl)
58
21
  });
59
22
 
60
- const registryAddr = config.registry;
61
- const factoryAddr = config.xPNTsFactory;
23
+ const epAddr = '0x0000000071727De22E5E9d8BAf0edAc6f37da032' as Address;
62
24
 
63
- // 2. Check Registry Role
64
- console.log('\n🏛️ Checking Registry Status...');
65
- const hasRole = await client.readContract({
66
- address: registryAddr,
67
- abi: REGISTRY_ABI,
68
- functionName: 'hasRole',
69
- args: [ROLE_COMMUNITY, jasonAddress]
70
- });
25
+ for (const [name, op] of Object.entries(state.operators)) {
26
+ const o: any = op;
27
+ if (!o.paymasterV4 || o.paymasterV4 === 'N/A (Super)' || o.paymasterV4 === 'None') continue;
71
28
 
72
- if (hasRole) {
73
- console.log('✅ Jason IS registered as COMMUNITY.');
74
- // Try to decode metadata (simple string decode for name if possible, complex decode is hard without full ABI)
75
- // We'll skip metadata decoding for now unless critical
76
- } else {
77
- console.log('❌ Jason is NOT registered as COMMUNITY.');
78
- console.log('🛠️ Attempting to register Jason as Community...');
29
+ console.log(`\n🔍 Checking Paymaster Status for ${name.toUpperCase()}...`);
30
+ console.log(`🏦 Paymaster: ${o.paymasterV4}`);
79
31
 
80
- try {
81
- // Encode RoleData: (name, ens, website, desc, logo, stake)
82
- // string, string, string, string, string, uint256
83
- // We use 'viem' encodeAbiParameters
84
- const { encodeAbiParameters, parseAbiParameters } = await import('viem');
85
-
86
- const roleData = encodeAbiParameters(
87
- parseAbiParameters('string, string, string, string, string, uint256'),
88
- ['Jason Community', '', 'https://jason.com', 'Jason Tech Community', '', 30000000000000000000n] // 30 GTokens
89
- );
90
-
91
- // Note: This requires Jason to have GTokens and Approve Staking!
92
- // Assuming Jason has enough GTokens (he usually does in tests)
93
- // We need to approve Staking first
94
- const STAKING = config.gTokenStaking;
95
- const GTOKEN = config.gToken;
96
-
97
- console.log(' Approving Staking...');
98
- const approveHash = await wallet.writeContract({
99
- address: GTOKEN,
100
- abi: parseAbi(['function approve(address,uint256) returns (bool)']),
101
- functionName: 'approve',
102
- args: [STAKING, parseEther('1000')] // Plenty
103
- });
104
- await client.waitForTransactionReceipt({ hash: approveHash });
105
- console.log(' ✅ Approved.');
106
-
107
- console.log(' Registering Community...');
108
- const txHash = await wallet.writeContract({
109
- address: registryAddr,
110
- abi: REGISTRY_ABI,
111
- functionName: 'registerRoleSelf',
112
- args: [ROLE_COMMUNITY, roleData]
113
- });
114
- await client.waitForTransactionReceipt({ hash: txHash });
115
- console.log(` ✅ Community Registered! Tx: ${txHash}`);
116
- } catch (e: any) {
117
- console.error(` ❌ Registration Failed: ${e.message}`);
118
- return;
32
+ const aaMatch = state.aaAccounts.find((a: any) => a.opName.toLowerCase().includes(name.toLowerCase()));
33
+ if (!aaMatch) {
34
+ console.log(`❌ No AA account found for operator ${name}`);
35
+ continue;
119
36
  }
120
- }
37
+ const aaAddr = aaMatch.address;
38
+ const tokenAddr = o.tokenAddress;
121
39
 
122
- // 3. Check xPNTs Token
123
- console.log('\n🪙 Checking xPNTs Token Status...');
124
- const tokenAddr = await client.readContract({
125
- address: factoryAddr,
126
- abi: FACTORY_ABI,
127
- functionName: 'getTokenAddress',
128
- args: [jasonAddress]
129
- });
130
-
131
- if (tokenAddr && tokenAddr !== '0x0000000000000000000000000000000000000000') {
132
- const [name, symbol] = await Promise.all([
133
- client.readContract({ address: tokenAddr, abi: TOKEN_ABI, functionName: 'name' }),
134
- client.readContract({ address: tokenAddr, abi: TOKEN_ABI, functionName: 'symbol' })
135
- ]);
136
- console.log(`✅ Jason has Token: ${tokenAddr}`);
137
- console.log(` Name: ${name}`);
138
- console.log(` Symbol: ${symbol}`);
139
-
140
- if (symbol === 'dPNTs' || symbol.includes('cPNTs')) {
141
- console.log(` ℹ️ Note: "dPNTs (cPNTs)" confusion likely due to symbol naming.`);
142
- }
143
- } else {
144
- console.log('❌ Jason has NO Token deployed.');
145
- console.log('🛠️ Deploying Token for Jason...');
40
+ console.log(`👤 AA Account: ${aaAddr}`);
41
+ console.log(`🪙 Token: ${tokenAddr} (${o.symbol})`);
146
42
 
147
43
  try {
148
- // function deployxPNTsToken(string name, string symbol, string communityName, string communityENS, uint256 exchangeRate, address paymasterAOA)
149
- const txHash = await wallet.writeContract({
150
- address: factoryAddr,
151
- abi: FACTORY_ABI,
152
- functionName: 'deployxPNTsToken',
153
- args: [
154
- 'Jason Community Token',
155
- 'cPNTs', // Let's use cPNTs to curb confusion
156
- 'Jason Community',
157
- '',
158
- parseEther('1'), // 1:1 Exchange Rate
159
- state.operators.jason.paymasterV4 // Link to his AOA Paymaster
160
- ]
44
+ // 1. EntryPoint
45
+ const pmEntryPoint = await client.readContract({
46
+ address: o.paymasterV4,
47
+ abi: parseAbi(['function entryPoint() view returns (address)']),
48
+ functionName: 'entryPoint'
161
49
  });
162
- console.log(` 🚀 Use deploy tx: ${txHash}`);
163
- const receipt = await client.waitForTransactionReceipt({ hash: txHash });
164
- console.log(` ✅ Token Deployed!`);
50
+ console.log(`⚙️ EntryPoint: ${pmEntryPoint.toLowerCase() === epAddr.toLowerCase() ? '✅ Matches' : '❌ MISMATCH (' + pmEntryPoint + ')'}`);
51
+
52
+ // 2. Token Price
53
+ const tokenPrice = await client.readContract({
54
+ address: o.paymasterV4,
55
+ abi: parseAbi(['function tokenPrices(address) view returns (uint256)']),
56
+ functionName: 'tokenPrices',
57
+ args: [tokenAddr]
58
+ }) as bigint;
59
+ console.log(`💰 Token Price: ${tokenPrice > 0n ? '✅ ' + tokenPrice : '❌ NOT SET'}`);
60
+
61
+ // 3. AA Internal Balance
62
+ const internalBalance = await client.readContract({
63
+ address: o.paymasterV4,
64
+ abi: parseAbi(['function balances(address,address) view returns (uint256)']),
65
+ functionName: 'balances',
66
+ args: [aaAddr, tokenAddr]
67
+ }) as bigint;
68
+ console.log(`💳 AA Balance: ${internalBalance > 0n ? '✅ ' + formatEther(internalBalance) : '❌ ZERO'} ${o.symbol}`);
69
+
70
+ // 4. EP Balance
71
+ const epBalance = await client.readContract({
72
+ address: epAddr,
73
+ abi: parseAbi(['function balanceOf(address) view returns (uint256)']),
74
+ functionName: 'balanceOf',
75
+ args: [o.paymasterV4]
76
+ }) as bigint;
77
+ console.log(`⛽ EP Balance: ${Number(epBalance) / 1e18} ETH`);
165
78
 
166
- // Read the new token address?
167
- // We can just rely on user re-running check, or fetch it again.
168
- // Let's fetch it for verification.
169
- const newToken = await client.readContract({
170
- address: factoryAddr,
171
- abi: FACTORY_ABI,
172
- functionName: 'getTokenAddress',
173
- args: [jasonAddress]
174
- });
175
- console.log(` 📍 New Token Address: ${newToken}`);
176
79
  } catch (e: any) {
177
- console.error(` ❌ Deployment Failed: ${e.message}`);
80
+ console.error(`❌ Error checking ${name}:`, e.message);
178
81
  }
179
82
  }
180
-
181
- console.log('\n🏁 Done.');
182
83
  }
183
84
 
184
- main().catch(console.error);
85
+ main();