@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
@@ -0,0 +1,326 @@
1
+ import { Address, Hash, PublicClient, WalletClient, parseEther, parseAbi } from 'viem';
2
+ import { ROLE_COMMUNITY, RequirementChecker, type RoleRequirement } from '@aastar/core';
3
+
4
+ // Import contract addresses dynamically to avoid circular dependency
5
+ let CONTRACTS: any;
6
+ import('@aastar/core').then(m => { CONTRACTS = m.CONTRACTS; });
7
+
8
+ /**
9
+ * Community configuration for launch
10
+ */
11
+ export interface CommunityLaunchConfig {
12
+ name: string;
13
+ ensName?: string;
14
+ website?: string;
15
+ description?: string;
16
+ logoURI?: string;
17
+ stakeAmount: bigint;
18
+ entryBurn?: bigint;
19
+ sbtRules?: SBTRuleConfig;
20
+ }
21
+
22
+ /**
23
+ * SBT minting rules configuration
24
+ */
25
+ export interface SBTRuleConfig {
26
+ minStake: bigint;
27
+ maxSupply: bigint;
28
+ mintPrice: bigint;
29
+ }
30
+
31
+ /**
32
+ * xPNTs issuance parameters
33
+ */
34
+ export interface XPNTsIssuanceParams {
35
+ symbol: string;
36
+ initialSupply: bigint;
37
+ exchangeRate: bigint;
38
+ }
39
+
40
+ /**
41
+ * Community statistics
42
+ */
43
+ export interface CommunityStats {
44
+ totalMembers: number;
45
+ totalStaked: bigint;
46
+ xpntsSupply: bigint;
47
+ reputationAvg: number;
48
+ }
49
+
50
+ /**
51
+ * Community management client
52
+ *
53
+ * @roleRequired ROLE_COMMUNITY (for most operations after launch)
54
+ * @description Provides high-level APIs for community lifecycle operations
55
+ *
56
+ * ## Permission Requirements:
57
+ * - **Launch Community**: Requires GToken balance >= stakeAmount + entryBurn
58
+ * - **Issue xPNTs**: Requires COMMUNITY role
59
+ * - **Configure SBT**: Requires COMMUNITY role + community ownership
60
+ *
61
+ * ## Typical Users:
62
+ * - Community Administrators
63
+ * - DAO Operators
64
+ * - Protocol Partners
65
+ */
66
+ export class CommunityClient {
67
+ private publicClient: PublicClient;
68
+ private walletClient: WalletClient;
69
+ private requirementChecker: RequirementChecker;
70
+ private registryAddress?: Address;
71
+ private gtokenAddress?: Address;
72
+ private stakingAddress?: Address;
73
+
74
+ constructor(
75
+ publicClient: PublicClient,
76
+ walletClient: WalletClient,
77
+ addresses?: {
78
+ registry?: Address;
79
+ gtoken?: Address;
80
+ staking?: Address;
81
+ }
82
+ ) {
83
+ this.publicClient = publicClient;
84
+ this.walletClient = walletClient;
85
+ this.requirementChecker = new RequirementChecker(publicClient as any, addresses);
86
+
87
+ this.registryAddress = addresses?.registry;
88
+ this.gtokenAddress = addresses?.gtoken;
89
+ this.stakingAddress = addresses?.staking;
90
+ }
91
+
92
+ /**
93
+ * Check if user meets requirements to launch a community
94
+ *
95
+ * @roleRequired None (pre-check before registration)
96
+ * @param address User address to check (optional, defaults to wallet account)
97
+ * @param requiredAmount Total GToken required (stake + burn)
98
+ * @returns Requirement check result
99
+ *
100
+ * @example
101
+ * ```typescript
102
+ * const check = await communityClient.checkLaunchRequirements(
103
+ * myAddress,
104
+ * parseEther("33") // 30 stake + 3 burn
105
+ * );
106
+ * if (!check.hasEnoughGToken) {
107
+ * console.error(`❌ ${check.missingRequirements.join('\n')}`);
108
+ * return;
109
+ * }
110
+ * ```
111
+ */
112
+ async checkLaunchRequirements(
113
+ address?: Address,
114
+ requiredAmount?: bigint
115
+ ): Promise<RoleRequirement> {
116
+ const userAddress = address || this.walletClient.account?.address;
117
+ if (!userAddress) throw new Error('No wallet account found');
118
+
119
+ const amount = requiredAmount || parseEther("33"); // Default: 30+3
120
+
121
+ return await this.requirementChecker.checkRequirements({
122
+ address: userAddress,
123
+ requiredGToken: amount,
124
+ requireSBT: false
125
+ });
126
+ }
127
+
128
+ /**
129
+ * Launch a community with one-click operation
130
+ *
131
+ * @roleRequired None (will register ROLE_COMMUNITY)
132
+ * @permission Requires GToken balance >= stakeAmount + entryBurn
133
+ *
134
+ * @description Combines: approve → stake → register → configure
135
+ * - Auto-approves GToken for staking contract
136
+ * - Registers caller as COMMUNITY role
137
+ * - Stakes required amount
138
+ * - **Pre-checks requirements before execution**
139
+ *
140
+ * @param config Community configuration
141
+ * @returns Community ID and transaction hash
142
+ *
143
+ * @throws Error if requirements not met
144
+ *
145
+ * @example
146
+ * ```typescript
147
+ * const communityClient = new CommunityClient(publicClient, walletClient);
148
+ *
149
+ * try {
150
+ * const { communityId, txHash } = await communityClient.launchCommunity({
151
+ * name: "MyDAO",
152
+ * stakeAmount: parseEther("30"),
153
+ * entryBurn: parseEther("3"),
154
+ * logoURI: "ipfs://..."
155
+ * });
156
+ * console.log(`✅ Community launched: ${communityId}`);
157
+ * } catch (error) {
158
+ * console.error(`❌ Failed: ${error.message}`);
159
+ * }
160
+ * ```
161
+ */
162
+ async launchCommunity(config: CommunityLaunchConfig): Promise<{
163
+ communityId: Address;
164
+ txHash: Hash;
165
+ }> {
166
+ const account = this.walletClient.account;
167
+ if (!account) throw new Error('Wallet account not found');
168
+
169
+ // PRE-CHECK: Verify requirements
170
+ const totalRequired = config.stakeAmount + (config.entryBurn || 0n);
171
+ const check = await this.checkLaunchRequirements(account.address, totalRequired);
172
+
173
+ if (!check.hasEnoughGToken) {
174
+ throw new Error(
175
+ `Insufficient funds to launch community:\n` +
176
+ check.missingRequirements.join('\n')
177
+ );
178
+ }
179
+
180
+ // Load contract addresses
181
+ const { CONTRACTS } = await import('@aastar/core');
182
+ const registryAddress = this.registryAddress || CONTRACTS.sepolia.core.registry;
183
+ const gtokenAddress = this.gtokenAddress || CONTRACTS.sepolia.core.gToken;
184
+ const stakingAddress = this.stakingAddress || CONTRACTS.sepolia.core.gTokenStaking;
185
+
186
+ // Step 1: Approve GToken
187
+ const approveTx = await this.walletClient.writeContract({
188
+ address: gtokenAddress,
189
+ abi: [{
190
+ name: 'approve',
191
+ type: 'function',
192
+ stateMutability: 'nonpayable',
193
+ inputs: [
194
+ { name: 'spender', type: 'address' },
195
+ { name: 'amount', type: 'uint256' }
196
+ ],
197
+ outputs: [{ type: 'bool' }]
198
+ }],
199
+ functionName: 'approve',
200
+ args: [stakingAddress, totalRequired],
201
+ chain: this.walletClient.chain
202
+ } as any);
203
+
204
+ await this.publicClient.waitForTransactionReceipt({ hash: approveTx });
205
+
206
+ // Step 2: Register role
207
+ const roleData = '0x'; // Simplified - needs proper encoding
208
+ const registerTx = await this.walletClient.writeContract({
209
+ address: registryAddress,
210
+ abi: [{
211
+ name: 'registerRole',
212
+ type: 'function',
213
+ stateMutability: 'nonpayable',
214
+ inputs: [
215
+ { name: 'roleId', type: 'bytes32' },
216
+ { name: 'user', type: 'address' },
217
+ { name: 'roleData', type: 'bytes' }
218
+ ],
219
+ outputs: []
220
+ }],
221
+ functionName: 'registerRole',
222
+ args: [ROLE_COMMUNITY, account.address, roleData],
223
+ chain: this.walletClient.chain
224
+ } as any);
225
+
226
+ await this.publicClient.waitForTransactionReceipt({ hash: registerTx });
227
+
228
+ return {
229
+ communityId: account.address,
230
+ txHash: registerTx
231
+ };
232
+ }
233
+
234
+ /**
235
+ * Issue community-specific xPNTs token
236
+ *
237
+ * @roleRequired ROLE_COMMUNITY
238
+ * @permission Must be registered community admin
239
+ *
240
+ * @param params xPNTs issuance parameters
241
+ * @returns xPNTs contract address and transaction hash
242
+ */
243
+ async issueXPNTs(params: XPNTsIssuanceParams): Promise<{
244
+ xpntsAddress: Address;
245
+ txHash: Hash;
246
+ }> {
247
+ const account = this.walletClient.account;
248
+ if (!account) throw new Error('Wallet account not found');
249
+
250
+ // PRE-CHECK: Verify COMMUNITY role
251
+ const hasRole = await this.requirementChecker.checkHasRole(
252
+ ROLE_COMMUNITY,
253
+ account.address
254
+ );
255
+
256
+ if (!hasRole) {
257
+ throw new Error(
258
+ `Missing ROLE_COMMUNITY. Please register as a community first.`
259
+ );
260
+ }
261
+
262
+ // Load contract addresses
263
+ const { CORE_ADDRESSES } = await import('@aastar/core');
264
+ const factoryAddress = CORE_ADDRESSES.xPNTsFactory;
265
+
266
+ if (!factoryAddress) throw new Error('xPNTsFactory address not found');
267
+
268
+ // Deploy xPNTs via Factory
269
+ // Assuming ABI: createXPNTs(string symbol, uint256 supply, uint256 rate)
270
+ const deployTx = await this.walletClient.writeContract({
271
+ address: factoryAddress,
272
+ abi: parseAbi(['function createXPNTs(string,uint256,uint256) returns (address)']),
273
+ functionName: 'createXPNTs',
274
+ args: [params.symbol, params.initialSupply, params.exchangeRate],
275
+ chain: this.walletClient.chain,
276
+ account
277
+ });
278
+
279
+ // We can't easily get the address without parsing logs, so we return zero address for now or simulate
280
+ return {
281
+ xpntsAddress: '0x0000000000000000000000000000000000000000',
282
+ txHash: deployTx
283
+ };
284
+ }
285
+
286
+ /**
287
+ * Configure SBT minting rules for the community
288
+ *
289
+ * @roleRequired ROLE_COMMUNITY
290
+ * @permission Must be registered community admin + community ownership
291
+ *
292
+ * @param rules SBT rule configuration
293
+ * @returns Transaction hash
294
+ */
295
+ async configureSBTRules(rules: SBTRuleConfig): Promise<Hash> {
296
+ const account = this.walletClient.account;
297
+ if (!account) throw new Error('Wallet account not found');
298
+
299
+ // PRE-CHECK: Verify COMMUNITY role
300
+ const hasRole = await this.requirementChecker.checkHasRole(
301
+ ROLE_COMMUNITY,
302
+ account.address
303
+ );
304
+
305
+ if (!hasRole) {
306
+ throw new Error(
307
+ `Missing ROLE_COMMUNITY. Please register as a community first.`
308
+ );
309
+ }
310
+
311
+ // TODO: Implement MySBT configuration
312
+ throw new Error('Not implemented yet - requires MySBT rule configuration');
313
+ }
314
+
315
+ /**
316
+ * Get community statistics
317
+ *
318
+ * @roleRequired None (public query)
319
+ * @param communityId Community address
320
+ * @returns Community statistics
321
+ */
322
+ async getCommunityStats(communityId: Address): Promise<CommunityStats> {
323
+ // TODO: Implement by querying Registry, Staking, and Reputation contracts
324
+ throw new Error('Not implemented yet - requires multi-contract aggregation');
325
+ }
326
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "../../tsconfig.build.json",
3
+ "compilerOptions": {
4
+ "outDir": "./dist",
5
+ "rootDir": "./src"
6
+ },
7
+ "include": ["src/**/*"]
8
+ }
@@ -0,0 +1,92 @@
1
+ import { describe, it, expect, beforeEach } from 'vitest';
2
+ import { accountActions, accountFactoryActions } from '../../src/actions/account';
3
+ import { createMockPublicClient, createMockWalletClient, resetMocks } from '../mocks/client';
4
+
5
+ const ACCOUNT_ADDR = '0x1111111111111111111111111111111111111111';
6
+ const FACTORY_ADDR = '0x2222222222222222222222222222222222222222';
7
+ const USER = '0x3333333333333333333333333333333333333333';
8
+
9
+ describe('AccountActions Comprehensive', () => {
10
+ let p: any;
11
+ let w: any;
12
+ beforeEach(() => { resetMocks(); p = createMockPublicClient(); w = createMockWalletClient(); });
13
+
14
+ describe('SimpleAccount Actions', () => {
15
+ it('should execute single transaction', async () => {
16
+ w.writeContract.mockResolvedValue('0xHash');
17
+ const acts = accountActions(ACCOUNT_ADDR)(w);
18
+ await acts.execute({ dest: USER, value: 0n, func: '0x', account: USER });
19
+ expect(w.writeContract).toHaveBeenCalledWith(expect.objectContaining({
20
+ functionName: 'execute',
21
+ args: [USER, 0n, '0x']
22
+ }));
23
+ });
24
+
25
+ it('should execute batch transaction', async () => {
26
+ w.writeContract.mockResolvedValue('0xHash');
27
+ const acts = accountActions(ACCOUNT_ADDR)(w);
28
+ await acts.executeBatch({
29
+ dest: [USER, USER],
30
+ value: [0n, 10n],
31
+ func: ['0x', '0x1234'],
32
+ account: USER
33
+ });
34
+ expect(w.writeContract).toHaveBeenCalledWith(expect.objectContaining({
35
+ functionName: 'executeBatch'
36
+ }));
37
+ // Args check: [[ {target: ..., value: ..., data: ...}, ... ]]
38
+ const arg = w.writeContract.mock.calls[0][0].args[0];
39
+ expect(arg).toHaveLength(2);
40
+ expect(arg[1].value).toBe(10n);
41
+ });
42
+
43
+ it('should throw on batch mismatch', async () => {
44
+ const acts = accountActions(ACCOUNT_ADDR)(w);
45
+ await expect(acts.executeBatch({
46
+ dest: [USER],
47
+ value: [0n, 10n], // mismatch
48
+ func: ['0x'],
49
+ account: USER
50
+ })).rejects.toThrow();
51
+ });
52
+
53
+ it('should read contract state', async () => {
54
+ p.readContract.mockResolvedValue(10n); // nonce
55
+ const acts = accountActions(ACCOUNT_ADDR)(p);
56
+ expect(await acts.getNonce()).toBe(10n);
57
+
58
+ p.readContract.mockResolvedValue(USER); // entrypoint/owner
59
+ expect(await acts.entryPoint()).toBe(USER);
60
+ expect(await acts.owner()).toBe(USER);
61
+
62
+ p.readContract.mockResolvedValue(100n); // deposit
63
+ expect(await acts.getDeposit()).toBe(100n);
64
+ });
65
+
66
+ it('should manage deposits', async () => {
67
+ w.writeContract.mockResolvedValue('0xHash');
68
+ const acts = accountActions(ACCOUNT_ADDR)(w);
69
+ await acts.addDeposit({ account: USER });
70
+ await acts.withdrawDepositTo({ withdrawAddress: USER, amount: 100n, account: USER });
71
+ expect(w.writeContract).toHaveBeenCalledTimes(2);
72
+ });
73
+ });
74
+
75
+ describe('AccountFactory Actions', () => {
76
+ it('should create account', async () => {
77
+ w.writeContract.mockResolvedValue('0xHash');
78
+ const acts = accountFactoryActions(FACTORY_ADDR)(w);
79
+ await acts.createAccount({ owner: USER, salt: 123n, account: USER });
80
+ expect(w.writeContract).toHaveBeenCalledWith(expect.objectContaining({
81
+ functionName: 'createAccount',
82
+ args: [USER, 123n]
83
+ }));
84
+ });
85
+
86
+ it('should get address', async () => {
87
+ p.readContract.mockResolvedValue(ACCOUNT_ADDR);
88
+ const acts = accountFactoryActions(FACTORY_ADDR)(p);
89
+ expect(await acts.getAddress({ owner: USER, salt: 123n })).toBe(ACCOUNT_ADDR);
90
+ });
91
+ });
92
+ });
@@ -0,0 +1,62 @@
1
+ import { describe, it, expect, beforeEach } from 'vitest';
2
+ import { aggregatorActions } from '../../src/actions/aggregator';
3
+ import { createMockPublicClient, createMockWalletClient, resetMocks } from '../mocks/client';
4
+
5
+ const AGG_ADDRESS = '0x1111111111111111111111111111111111111111' as `0x${string}`;
6
+ const VALIDATOR_ADDRESS = '0x2222222222222222222222222222222222222222' as `0x${string}`;
7
+
8
+ describe('AggregatorActions', () => {
9
+ let publicClient: any;
10
+ let walletClient: any;
11
+
12
+ beforeEach(() => {
13
+ resetMocks();
14
+ publicClient = createMockPublicClient();
15
+ walletClient = createMockWalletClient();
16
+ });
17
+
18
+ describe('registerBLSPublicKey', () => {
19
+ it('should register BLS key', async () => {
20
+ walletClient.writeContract.mockResolvedValue('0xhash');
21
+ const actions = aggregatorActions(AGG_ADDRESS)(walletClient);
22
+ await actions.registerBLSPublicKey({
23
+ validator: VALIDATOR_ADDRESS,
24
+ publicKey: '0x1234',
25
+ account: walletClient.account
26
+ });
27
+ expect(walletClient.writeContract).toHaveBeenCalled();
28
+ });
29
+ });
30
+
31
+ describe('Thresholds', () => {
32
+ it('should get default threshold', async () => {
33
+ publicClient.readContract.mockResolvedValue(2n);
34
+ const actions = aggregatorActions(AGG_ADDRESS)(publicClient);
35
+ const result = await actions.defaultThreshold();
36
+ expect(result).toBe(2n);
37
+ });
38
+
39
+ it('should set default threshold', async () => {
40
+ walletClient.writeContract.mockResolvedValue('0xhash');
41
+ const actions = aggregatorActions(AGG_ADDRESS)(walletClient);
42
+ await actions.setDefaultThreshold({ newThreshold: 3n, account: walletClient.account });
43
+ expect(walletClient.writeContract).toHaveBeenCalled();
44
+ });
45
+ });
46
+
47
+ describe('executeProposal', () => {
48
+ it('should execute proposal', async () => {
49
+ walletClient.writeContract.mockResolvedValue('0xhash');
50
+ const actions = aggregatorActions(AGG_ADDRESS)(walletClient);
51
+ await actions.executeProposal({
52
+ proposalId: '0x01',
53
+ target: VALIDATOR_ADDRESS,
54
+ callData: '0x',
55
+ requiredThreshold: 2n,
56
+ proof: '0x',
57
+ account: walletClient.account
58
+ });
59
+ expect(walletClient.writeContract).toHaveBeenCalled();
60
+ });
61
+ });
62
+ });
@@ -0,0 +1,86 @@
1
+ import { describe, it, expect, beforeEach } from 'vitest';
2
+ import { accountActions, accountFactoryActions } from '../../src/actions/account';
3
+ import { entryPointActions } from '../../src/actions/entryPoint';
4
+ import { dvtActions, blsActions as validatorBlsActions } from '../../src/actions/dvt';
5
+ import { aggregatorActions as validatorAggregatorActions } from '../../src/actions/aggregator';
6
+ import { createMockPublicClient, createMockWalletClient, resetMocks } from '../mocks/client';
7
+
8
+ const ADDRESS = '0x1111111111111111111111111111111111111111' as `0x${string}`;
9
+
10
+ describe('Account Actions', () => {
11
+ let publicClient: any;
12
+ let walletClient: any;
13
+
14
+ beforeEach(() => {
15
+ resetMocks();
16
+ publicClient = createMockPublicClient();
17
+ walletClient = createMockWalletClient();
18
+ });
19
+
20
+ it('should get nonce', async () => {
21
+ publicClient.readContract.mockResolvedValue(5n);
22
+ const actions = accountActions(ADDRESS)(publicClient);
23
+ const result = await actions.getNonce();
24
+ expect(result).toBe(5n);
25
+ });
26
+
27
+ it('should execute transaction', async () => {
28
+ walletClient.writeContract.mockResolvedValue('0xhash' as `0x${string}`);
29
+ const actions = accountActions(ADDRESS)(walletClient);
30
+ await actions.execute({ dest: ADDRESS, value: 100n, func: '0x', account: walletClient.account });
31
+ expect(walletClient.writeContract).toHaveBeenCalled();
32
+ });
33
+ });
34
+
35
+ describe('AccountFactory Actions', () => {
36
+ let publicClient: any;
37
+ let walletClient: any;
38
+
39
+ beforeEach(() => {
40
+ resetMocks();
41
+ publicClient = createMockPublicClient();
42
+ walletClient = createMockWalletClient();
43
+ });
44
+
45
+ it('should create account', async () => {
46
+ walletClient.writeContract.mockResolvedValue('0xhash' as `0x${string}`);
47
+ const actions = accountFactoryActions(ADDRESS)(walletClient);
48
+ await actions.createAccount({ owner: ADDRESS, salt: 0n, account: walletClient.account });
49
+ expect(walletClient.writeContract).toHaveBeenCalled();
50
+ });
51
+ });
52
+
53
+ describe('EntryPoint Actions', () => {
54
+ let publicClient: any;
55
+
56
+ beforeEach(() => {
57
+ resetMocks();
58
+ publicClient = createMockPublicClient();
59
+ });
60
+
61
+ it('should get deposit info', async () => {
62
+ publicClient.readContract.mockResolvedValue([1000n, true, 500n, 100n, 10n]);
63
+ const actions = entryPointActions(ADDRESS)(publicClient);
64
+ const result = await actions.getDepositInfo({ account: ADDRESS });
65
+ expect(publicClient.readContract).toHaveBeenCalled();
66
+ expect(result).toBeDefined();
67
+ });
68
+ });
69
+
70
+ describe('Validator (DVT/Aggregator) Actions', () => {
71
+ let publicClient: any;
72
+ let walletClient: any;
73
+
74
+ beforeEach(() => {
75
+ resetMocks();
76
+ publicClient = createMockPublicClient();
77
+ walletClient = createMockWalletClient();
78
+ });
79
+
80
+ it('dvt: should add validator', async () => {
81
+ walletClient.writeContract.mockResolvedValue('0xhash' as `0x${string}`);
82
+ const actions = dvtActions(ADDRESS)(walletClient);
83
+ await actions.addValidator({ v: ADDRESS, account: walletClient.account });
84
+ expect(walletClient.writeContract).toHaveBeenCalled();
85
+ });
86
+ });
@@ -0,0 +1,39 @@
1
+ import { describe, it, expect, beforeEach } from 'vitest';
2
+ import { registryActions } from '../../src/actions/registry';
3
+ import { stakingActions } from '../../src/actions/staking';
4
+ import { paymasterActions } from '../../src/actions/paymaster';
5
+ import { sbtActions } from '../../src/actions/sbt';
6
+ import { reputationActions } from '../../src/actions/reputation';
7
+ import { superPaymasterActions } from '../../src/actions/superPaymaster';
8
+ import { createMockPublicClient, createMockWalletClient, resetMocks } from '../mocks/client';
9
+
10
+ const A = '0x1111111111111111111111111111111111111111' as `0x${string}`;
11
+ const U = '0x2222222222222222222222222222222222222222' as `0x${string}`;
12
+
13
+ describe('Comprehensive Action Tests Batch 2', () => {
14
+ let p: any;
15
+ let w: any;
16
+
17
+ beforeEach(() => { resetMocks(); p = createMockPublicClient(); w = createMockWalletClient(); });
18
+
19
+ describe('Registry Extended', () => {
20
+ it('configureRole', async () => { w.writeContract.mockResolvedValue('0x' as `0x${string}`); await registryActions(A)(w).configureRole({ roleId: '0x01', config: {} as any, account: w.account }); expect(w.writeContract).toHaveBeenCalled(); });
21
+ it('registerRole', async () => { w.writeContract.mockResolvedValue('0x' as `0x${string}`); await registryActions(A)(w).registerRole({ roleId: '0x01', user: U, data: '0x', account: w.account }); expect(w.writeContract).toHaveBeenCalled(); });
22
+ it('getRoleConfig', async () => { p.readContract.mockResolvedValue([0n, 0n, 0, 0, 0, 0, 0, true, 0n, 'desc', U, 0n]); await registryActions(A)(p).getRoleConfig({ roleId: '0x01' }); expect(p.readContract).toHaveBeenCalled(); });
23
+ });
24
+
25
+ describe('Staking Extended', () => {
26
+ it('stakes (View)', async () => { p.readContract.mockResolvedValue([100n, 0n, 0n]); const res = await stakingActions(A)(p).stakes({ user: U }); expect(res).toBeDefined(); });
27
+ it('roleLocks (View)', async () => { p.readContract.mockResolvedValue([0n, 0n, false]); const res = await stakingActions(A)(p).roleLocks({ user: U, roleId: '0x01' }); expect(res).toBeDefined(); });
28
+ });
29
+
30
+ describe('SBT Extended', () => {
31
+ it('mintForRole', async () => { w.writeContract.mockResolvedValue('0x' as `0x${string}`); await sbtActions(A)(w).mintForRole({ roleId: '0x01', user: U, roleData: '0x', account: w.account }); expect(w.writeContract).toHaveBeenCalled(); });
32
+ it('sbtData', async () => { p.readContract.mockResolvedValue([U, U, 0n, 1n]); const res = await sbtActions(A)(p).sbtData({ tokenId: 1n }); expect(res.holder).toBe(U); });
33
+ });
34
+
35
+ describe('SuperPaymaster Extended', () => {
36
+ it('operators', async () => { p.readContract.mockResolvedValue([0n, 0n, true, false, U, 0, 0, U, 0n, 0n]); const res = await superPaymasterActions(A)(p).operators({ operator: U }); expect(res.isConfigured).toBe(true); });
37
+ it('setOperatorPaused', async () => { w.writeContract.mockResolvedValue('0x' as `0x${string}`); await superPaymasterActions(A)(w).setOperatorPaused({ operator: U, paused: true, account: w.account }); expect(w.writeContract).toHaveBeenCalled(); });
38
+ });
39
+ });
@@ -0,0 +1,35 @@
1
+ import { describe, it, expect, beforeEach } from 'vitest';
2
+ import { xPNTsFactoryActions, paymasterFactoryActions } from '../../src/actions/factory';
3
+ import { aggregatorActions } from '../../src/actions/aggregator';
4
+ import { dvtActions } from '../../src/actions/dvt';
5
+ import { tokenActions } from '../../src/actions/tokens';
6
+ import { createMockPublicClient, createMockWalletClient, resetMocks } from '../mocks/client';
7
+
8
+ const A = '0x1111111111111111111111111111111111111111' as `0x${string}`;
9
+ const U = '0x2222222222222222222222222222222222222222' as `0x${string}`;
10
+
11
+ describe('Comprehensive Action Tests Batch 3', () => {
12
+ let p: any;
13
+ let w: any;
14
+
15
+ beforeEach(() => { resetMocks(); p = createMockPublicClient(); w = createMockWalletClient(); });
16
+
17
+ describe('xPNTsFactory', () => {
18
+ it('owner', async () => { p.readContract.mockResolvedValue(U); expect(await xPNTsFactoryActions(A)(p).owner()).toBe(U); });
19
+ it('deployedTokens', async () => { p.readContract.mockResolvedValue(U); expect(await xPNTsFactoryActions(A)(p).deployedTokens({ index: 0n })).toBe(U); });
20
+ });
21
+
22
+ describe('Aggregator', () => {
23
+ it('blsPublicKeys', async () => { p.readContract.mockResolvedValue(['0xkey', true]); await aggregatorActions(A)(p).blsPublicKeys({ validator: U }); expect(p.readContract).toHaveBeenCalled(); });
24
+ it('setDefaultThreshold', async () => { w.writeContract.mockResolvedValue('0x' as `0x${string}`); await aggregatorActions(A)(w).setDefaultThreshold({ newThreshold: 2n, account: w.account }); expect(w.writeContract).toHaveBeenCalled(); });
25
+ });
26
+
27
+ describe('DVT', () => {
28
+ it('createSlashProposal', async () => { w.writeContract.mockResolvedValue('0x' as `0x${string}`); await dvtActions(A)(w).createSlashProposal({ operator: U, level: 1, reason: 'test', account: w.account }); expect(w.writeContract).toHaveBeenCalled(); });
29
+ it('isValidator (View)', async () => { p.readContract.mockResolvedValue(true); const res = await dvtActions(A)(p).isValidator({ user: U }); expect(res).toBe(true); });
30
+ });
31
+
32
+ describe('Token Actions', () => {
33
+ it('mint', async () => { w.writeContract.mockResolvedValue('0x' as `0x${string}`); await tokenActions()(w).mint({ token: A, to: U, amount: 50n, account: w.account }); expect(w.writeContract).toHaveBeenCalled(); });
34
+ });
35
+ });