safehands-pharos 1.4.0 → 2.6.0

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 (571) hide show
  1. package/.agents/policies/default.json +15 -0
  2. package/.env.example +81 -64
  3. package/README.md +301 -333
  4. package/SECURITY.md +112 -0
  5. package/SKILL.md +59 -0
  6. package/contracts/SafeHandsAttestation.sol +182 -0
  7. package/contracts/SafeHandsRegistry.sol +149 -0
  8. package/dist/agent/SafeHandsGuardianAgent.d.ts +39 -0
  9. package/dist/agent/SafeHandsGuardianAgent.d.ts.map +1 -0
  10. package/dist/agent/SafeHandsGuardianAgent.js +98 -0
  11. package/dist/agent/SafeHandsGuardianAgent.js.map +1 -0
  12. package/dist/agent/agentDecisionFormatter.d.ts +43 -0
  13. package/dist/agent/agentDecisionFormatter.d.ts.map +1 -0
  14. package/dist/agent/agentDecisionFormatter.js +96 -0
  15. package/dist/agent/agentDecisionFormatter.js.map +1 -0
  16. package/dist/agent/agentEnrich.d.ts +28 -0
  17. package/dist/agent/agentEnrich.d.ts.map +1 -0
  18. package/dist/agent/agentEnrich.js +99 -0
  19. package/dist/agent/agentEnrich.js.map +1 -0
  20. package/dist/agent/agentIntentClassifier.d.ts +44 -0
  21. package/dist/agent/agentIntentClassifier.d.ts.map +1 -0
  22. package/dist/agent/agentIntentClassifier.js +77 -0
  23. package/dist/agent/agentIntentClassifier.js.map +1 -0
  24. package/dist/agent/agentPolicyResolver.d.ts +44 -0
  25. package/dist/agent/agentPolicyResolver.d.ts.map +1 -0
  26. package/dist/agent/agentPolicyResolver.js +94 -0
  27. package/dist/agent/agentPolicyResolver.js.map +1 -0
  28. package/dist/agent/agentRuntime.d.ts +12 -0
  29. package/dist/agent/agentRuntime.d.ts.map +1 -0
  30. package/dist/agent/agentRuntime.js +31 -0
  31. package/dist/agent/agentRuntime.js.map +1 -0
  32. package/dist/agent/agentToolRouter.d.ts +24 -0
  33. package/dist/agent/agentToolRouter.d.ts.map +1 -0
  34. package/dist/agent/agentToolRouter.js +89 -0
  35. package/dist/agent/agentToolRouter.js.map +1 -0
  36. package/dist/agent/guardianOperator.d.ts +35 -0
  37. package/dist/agent/guardianOperator.d.ts.map +1 -0
  38. package/dist/agent/guardianOperator.js +65 -0
  39. package/dist/agent/guardianOperator.js.map +1 -0
  40. package/dist/agent/index.d.ts +8 -0
  41. package/dist/agent/index.d.ts.map +1 -0
  42. package/dist/agent/index.js +14 -0
  43. package/dist/agent/index.js.map +1 -0
  44. package/dist/api/activityRoutes.d.ts +70 -0
  45. package/dist/api/activityRoutes.d.ts.map +1 -0
  46. package/dist/api/activityRoutes.js +100 -0
  47. package/dist/api/activityRoutes.js.map +1 -0
  48. package/dist/api/agentRoutes.d.ts +16 -0
  49. package/dist/api/agentRoutes.d.ts.map +1 -0
  50. package/dist/api/agentRoutes.js +37 -0
  51. package/dist/api/agentRoutes.js.map +1 -0
  52. package/dist/api/broadcastRoutes.d.ts +34 -0
  53. package/dist/api/broadcastRoutes.d.ts.map +1 -0
  54. package/dist/api/broadcastRoutes.js +147 -0
  55. package/dist/api/broadcastRoutes.js.map +1 -0
  56. package/dist/api/consolePage.d.ts +2 -0
  57. package/dist/api/consolePage.d.ts.map +1 -0
  58. package/dist/api/consolePage.js +206 -0
  59. package/dist/api/consolePage.js.map +1 -0
  60. package/dist/api/httpHardening.d.ts +75 -0
  61. package/dist/api/httpHardening.d.ts.map +1 -0
  62. package/dist/api/httpHardening.js +122 -0
  63. package/dist/api/httpHardening.js.map +1 -0
  64. package/dist/api/indexerRoutes.d.ts +46 -0
  65. package/dist/api/indexerRoutes.d.ts.map +1 -0
  66. package/dist/api/indexerRoutes.js +75 -0
  67. package/dist/api/indexerRoutes.js.map +1 -0
  68. package/dist/api/paidRoutes.d.ts +8 -0
  69. package/dist/api/paidRoutes.d.ts.map +1 -0
  70. package/dist/api/paidRoutes.js +175 -0
  71. package/dist/api/paidRoutes.js.map +1 -0
  72. package/dist/api/prepareRoutes.d.ts +58 -0
  73. package/dist/api/prepareRoutes.d.ts.map +1 -0
  74. package/dist/api/prepareRoutes.js +90 -0
  75. package/dist/api/prepareRoutes.js.map +1 -0
  76. package/dist/api/response.d.ts +39 -0
  77. package/dist/api/response.d.ts.map +1 -0
  78. package/dist/api/response.js +53 -0
  79. package/dist/api/response.js.map +1 -0
  80. package/dist/api/routes.d.ts +175 -0
  81. package/dist/api/routes.d.ts.map +1 -0
  82. package/dist/api/routes.js +276 -0
  83. package/dist/api/routes.js.map +1 -0
  84. package/dist/api/schemas.d.ts +147 -0
  85. package/dist/api/schemas.d.ts.map +1 -0
  86. package/dist/api/schemas.js +81 -0
  87. package/dist/api/schemas.js.map +1 -0
  88. package/dist/api/server.d.ts +11 -0
  89. package/dist/api/server.d.ts.map +1 -0
  90. package/dist/api/server.js +505 -0
  91. package/dist/api/server.js.map +1 -0
  92. package/dist/api/toolRoutes.d.ts +14 -0
  93. package/dist/api/toolRoutes.d.ts.map +1 -0
  94. package/dist/api/toolRoutes.js +138 -0
  95. package/dist/api/toolRoutes.js.map +1 -0
  96. package/dist/api/walletPrepareRoutes.d.ts +74 -0
  97. package/dist/api/walletPrepareRoutes.d.ts.map +1 -0
  98. package/dist/api/walletPrepareRoutes.js +127 -0
  99. package/dist/api/walletPrepareRoutes.js.map +1 -0
  100. package/dist/api/x402Gate.d.ts +51 -0
  101. package/dist/api/x402Gate.d.ts.map +1 -0
  102. package/dist/api/x402Gate.js +184 -0
  103. package/dist/api/x402Gate.js.map +1 -0
  104. package/dist/cli.d.ts +5 -5
  105. package/dist/cli.d.ts.map +1 -1
  106. package/dist/cli.js +154 -124
  107. package/dist/cli.js.map +1 -1
  108. package/dist/data/ecosystemRegistry.data.d.ts +3 -0
  109. package/dist/data/ecosystemRegistry.data.d.ts.map +1 -0
  110. package/dist/data/ecosystemRegistry.data.js +582 -0
  111. package/dist/data/ecosystemRegistry.data.js.map +1 -0
  112. package/dist/demo.d.ts +1 -1
  113. package/dist/demo.d.ts.map +1 -1
  114. package/dist/demo.js +206 -171
  115. package/dist/demo.js.map +1 -1
  116. package/dist/index.d.ts +2 -2
  117. package/dist/index.d.ts.map +1 -1
  118. package/dist/index.js +249 -164
  119. package/dist/index.js.map +1 -1
  120. package/dist/init.d.ts +1 -1
  121. package/dist/init.d.ts.map +1 -1
  122. package/dist/init.js +127 -65
  123. package/dist/init.js.map +1 -1
  124. package/dist/lib/analysis/approval.d.ts +29 -0
  125. package/dist/lib/analysis/approval.d.ts.map +1 -0
  126. package/dist/lib/analysis/approval.js +162 -0
  127. package/dist/lib/analysis/approval.js.map +1 -0
  128. package/dist/lib/analysis/calldata.d.ts +60 -0
  129. package/dist/lib/analysis/calldata.d.ts.map +1 -0
  130. package/dist/lib/analysis/calldata.js +349 -0
  131. package/dist/lib/analysis/calldata.js.map +1 -0
  132. package/dist/lib/analysis/contractIntel.d.ts +65 -0
  133. package/dist/lib/analysis/contractIntel.d.ts.map +1 -0
  134. package/dist/lib/analysis/contractIntel.js +320 -0
  135. package/dist/lib/analysis/contractIntel.js.map +1 -0
  136. package/dist/lib/analysis/evm.d.ts +42 -0
  137. package/dist/lib/analysis/evm.d.ts.map +1 -0
  138. package/dist/lib/analysis/evm.js +185 -0
  139. package/dist/lib/analysis/evm.js.map +1 -0
  140. package/dist/lib/analysis/gas.d.ts +4 -0
  141. package/dist/lib/analysis/gas.d.ts.map +1 -0
  142. package/dist/lib/analysis/gas.js +13 -0
  143. package/dist/lib/analysis/gas.js.map +1 -0
  144. package/dist/lib/analysis/index.d.ts +11 -0
  145. package/dist/lib/analysis/index.d.ts.map +1 -0
  146. package/dist/lib/analysis/index.js +16 -0
  147. package/dist/lib/analysis/index.js.map +1 -0
  148. package/dist/lib/analysis/pharosTokens.d.ts +31 -0
  149. package/dist/lib/analysis/pharosTokens.d.ts.map +1 -0
  150. package/dist/lib/analysis/pharosTokens.js +78 -0
  151. package/dist/lib/analysis/pharosTokens.js.map +1 -0
  152. package/dist/lib/analysis/safeTx.d.ts +27 -0
  153. package/dist/lib/analysis/safeTx.d.ts.map +1 -0
  154. package/dist/lib/analysis/safeTx.js +118 -0
  155. package/dist/lib/analysis/safeTx.js.map +1 -0
  156. package/dist/lib/analysis/token.d.ts +21 -0
  157. package/dist/lib/analysis/token.d.ts.map +1 -0
  158. package/dist/lib/analysis/token.js +151 -0
  159. package/dist/lib/analysis/token.js.map +1 -0
  160. package/dist/lib/analysis/types.d.ts +49 -0
  161. package/dist/lib/analysis/types.d.ts.map +1 -0
  162. package/dist/lib/analysis/types.js +10 -0
  163. package/dist/lib/analysis/types.js.map +1 -0
  164. package/dist/lib/analysis/x402.d.ts +24 -0
  165. package/dist/lib/analysis/x402.d.ts.map +1 -0
  166. package/dist/lib/analysis/x402.js +60 -0
  167. package/dist/lib/analysis/x402.js.map +1 -0
  168. package/dist/lib/auditLog.d.ts +1 -0
  169. package/dist/lib/auditLog.d.ts.map +1 -1
  170. package/dist/lib/auditLog.js +0 -0
  171. package/dist/lib/auditLog.js.map +1 -1
  172. package/dist/lib/config.d.ts +77 -0
  173. package/dist/lib/config.d.ts.map +1 -0
  174. package/dist/lib/config.js +120 -0
  175. package/dist/lib/config.js.map +1 -0
  176. package/dist/lib/constants.d.ts +452 -291
  177. package/dist/lib/constants.d.ts.map +1 -1
  178. package/dist/lib/constants.js +509 -292
  179. package/dist/lib/constants.js.map +1 -1
  180. package/dist/lib/dodoApi.d.ts +101 -78
  181. package/dist/lib/dodoApi.d.ts.map +1 -1
  182. package/dist/lib/dodoApi.js +259 -196
  183. package/dist/lib/dodoApi.js.map +1 -1
  184. package/dist/lib/ecosystemRegistry.d.ts +116 -0
  185. package/dist/lib/ecosystemRegistry.d.ts.map +1 -0
  186. package/dist/lib/ecosystemRegistry.js +178 -0
  187. package/dist/lib/ecosystemRegistry.js.map +1 -0
  188. package/dist/lib/envLoader.d.ts +2 -0
  189. package/dist/lib/envLoader.d.ts.map +1 -0
  190. package/dist/lib/envLoader.js +65 -0
  191. package/dist/lib/envLoader.js.map +1 -0
  192. package/dist/lib/goldsky.d.ts +58 -0
  193. package/dist/lib/goldsky.d.ts.map +1 -0
  194. package/dist/lib/goldsky.js +275 -0
  195. package/dist/lib/goldsky.js.map +1 -0
  196. package/dist/lib/guardian/decision.d.ts +23 -0
  197. package/dist/lib/guardian/decision.d.ts.map +1 -0
  198. package/dist/lib/guardian/decision.js +40 -0
  199. package/dist/lib/guardian/decision.js.map +1 -0
  200. package/dist/lib/http.d.ts +13 -14
  201. package/dist/lib/http.d.ts.map +1 -1
  202. package/dist/lib/http.js +383 -118
  203. package/dist/lib/http.js.map +1 -1
  204. package/dist/lib/managedExecution.d.ts +19 -0
  205. package/dist/lib/managedExecution.d.ts.map +1 -0
  206. package/dist/lib/managedExecution.js +64 -0
  207. package/dist/lib/managedExecution.js.map +1 -0
  208. package/dist/lib/merkleBatcher.d.ts +23 -0
  209. package/dist/lib/merkleBatcher.d.ts.map +1 -0
  210. package/dist/lib/merkleBatcher.js +62 -0
  211. package/dist/lib/merkleBatcher.js.map +1 -0
  212. package/dist/lib/networks.d.ts +48 -0
  213. package/dist/lib/networks.d.ts.map +1 -0
  214. package/dist/lib/networks.js +103 -0
  215. package/dist/lib/networks.js.map +1 -0
  216. package/dist/lib/observability/accessContext.d.ts +29 -0
  217. package/dist/lib/observability/accessContext.d.ts.map +1 -0
  218. package/dist/lib/observability/accessContext.js +50 -0
  219. package/dist/lib/observability/accessContext.js.map +1 -0
  220. package/dist/lib/observability/activityStore.d.ts +70 -0
  221. package/dist/lib/observability/activityStore.d.ts.map +1 -0
  222. package/dist/lib/observability/activityStore.js +149 -0
  223. package/dist/lib/observability/activityStore.js.map +1 -0
  224. package/dist/lib/observability/apiKey.d.ts +55 -0
  225. package/dist/lib/observability/apiKey.d.ts.map +1 -0
  226. package/dist/lib/observability/apiKey.js +141 -0
  227. package/dist/lib/observability/apiKey.js.map +1 -0
  228. package/dist/lib/observability/logger.d.ts +30 -0
  229. package/dist/lib/observability/logger.d.ts.map +1 -0
  230. package/dist/lib/observability/logger.js +30 -0
  231. package/dist/lib/observability/logger.js.map +1 -0
  232. package/dist/lib/observability/quota.d.ts +33 -0
  233. package/dist/lib/observability/quota.d.ts.map +1 -0
  234. package/dist/lib/observability/quota.js +49 -0
  235. package/dist/lib/observability/quota.js.map +1 -0
  236. package/dist/lib/observability/requestId.d.ts +8 -0
  237. package/dist/lib/observability/requestId.d.ts.map +1 -0
  238. package/dist/lib/observability/requestId.js +24 -0
  239. package/dist/lib/observability/requestId.js.map +1 -0
  240. package/dist/lib/observability/sanitize.d.ts +77 -0
  241. package/dist/lib/observability/sanitize.d.ts.map +1 -0
  242. package/dist/lib/observability/sanitize.js +228 -0
  243. package/dist/lib/observability/sanitize.js.map +1 -0
  244. package/dist/lib/observability/scopes.d.ts +20 -0
  245. package/dist/lib/observability/scopes.d.ts.map +1 -0
  246. package/dist/lib/observability/scopes.js +77 -0
  247. package/dist/lib/observability/scopes.js.map +1 -0
  248. package/dist/lib/okxDexApi.d.ts +106 -0
  249. package/dist/lib/okxDexApi.d.ts.map +1 -0
  250. package/dist/lib/okxDexApi.js +221 -0
  251. package/dist/lib/okxDexApi.js.map +1 -0
  252. package/dist/lib/persistentJsonStore.d.ts +5 -0
  253. package/dist/lib/persistentJsonStore.d.ts.map +1 -0
  254. package/dist/lib/persistentJsonStore.js +39 -0
  255. package/dist/lib/persistentJsonStore.js.map +1 -0
  256. package/dist/lib/pharos/attestationPublisher.d.ts +50 -0
  257. package/dist/lib/pharos/attestationPublisher.d.ts.map +1 -0
  258. package/dist/lib/pharos/attestationPublisher.js +262 -0
  259. package/dist/lib/pharos/attestationPublisher.js.map +1 -0
  260. package/dist/lib/pharos/ecosystem.d.ts +52 -0
  261. package/dist/lib/pharos/ecosystem.d.ts.map +1 -0
  262. package/dist/lib/pharos/ecosystem.js +431 -0
  263. package/dist/lib/pharos/ecosystem.js.map +1 -0
  264. package/dist/lib/pharos/ecosystemEvidence.d.ts +53 -0
  265. package/dist/lib/pharos/ecosystemEvidence.d.ts.map +1 -0
  266. package/dist/lib/pharos/ecosystemEvidence.js +133 -0
  267. package/dist/lib/pharos/ecosystemEvidence.js.map +1 -0
  268. package/dist/lib/pharos/rpc.d.ts +44 -0
  269. package/dist/lib/pharos/rpc.d.ts.map +1 -0
  270. package/dist/lib/pharos/rpc.js +90 -0
  271. package/dist/lib/pharos/rpc.js.map +1 -0
  272. package/dist/lib/pharos/rpcEvidence.d.ts +49 -0
  273. package/dist/lib/pharos/rpcEvidence.d.ts.map +1 -0
  274. package/dist/lib/pharos/rpcEvidence.js +46 -0
  275. package/dist/lib/pharos/rpcEvidence.js.map +1 -0
  276. package/dist/lib/pharos/rpcMethods.d.ts +46 -0
  277. package/dist/lib/pharos/rpcMethods.d.ts.map +1 -0
  278. package/dist/lib/pharos/rpcMethods.js +176 -0
  279. package/dist/lib/pharos/rpcMethods.js.map +1 -0
  280. package/dist/lib/pharos/spvVerifier.d.ts +47 -0
  281. package/dist/lib/pharos/spvVerifier.d.ts.map +1 -0
  282. package/dist/lib/pharos/spvVerifier.js +105 -0
  283. package/dist/lib/pharos/spvVerifier.js.map +1 -0
  284. package/dist/lib/pharos/userSignedBroadcaster.d.ts +10 -0
  285. package/dist/lib/pharos/userSignedBroadcaster.d.ts.map +1 -0
  286. package/dist/lib/pharos/userSignedBroadcaster.js +50 -0
  287. package/dist/lib/pharos/userSignedBroadcaster.js.map +1 -0
  288. package/dist/lib/pharosClient.d.ts +53 -58
  289. package/dist/lib/pharosClient.d.ts.map +1 -1
  290. package/dist/lib/pharosClient.js +56 -63
  291. package/dist/lib/pharosClient.js.map +1 -1
  292. package/dist/lib/policy/actionPolicyEngine.d.ts +89 -53
  293. package/dist/lib/policy/actionPolicyEngine.d.ts.map +1 -1
  294. package/dist/lib/policy/actionPolicyEngine.js +373 -212
  295. package/dist/lib/policy/actionPolicyEngine.js.map +1 -1
  296. package/dist/lib/policy/agentPolicy.d.ts +29 -0
  297. package/dist/lib/policy/agentPolicy.d.ts.map +1 -0
  298. package/dist/lib/policy/agentPolicy.js +154 -0
  299. package/dist/lib/policy/agentPolicy.js.map +1 -0
  300. package/dist/lib/policy/policyPresets.d.ts +30 -0
  301. package/dist/lib/policy/policyPresets.d.ts.map +1 -0
  302. package/dist/lib/policy/policyPresets.js +124 -0
  303. package/dist/lib/policy/policyPresets.js.map +1 -0
  304. package/dist/lib/policy/writeExecutionGate.d.ts +23 -0
  305. package/dist/lib/policy/writeExecutionGate.d.ts.map +1 -0
  306. package/dist/lib/policy/writeExecutionGate.js +65 -0
  307. package/dist/lib/policy/writeExecutionGate.js.map +1 -0
  308. package/dist/lib/preparedTxStore.d.ts +21 -0
  309. package/dist/lib/preparedTxStore.d.ts.map +1 -0
  310. package/dist/lib/preparedTxStore.js +90 -0
  311. package/dist/lib/preparedTxStore.js.map +1 -0
  312. package/dist/lib/price/chainlinkPushProvider.d.ts +34 -0
  313. package/dist/lib/price/chainlinkPushProvider.d.ts.map +1 -0
  314. package/dist/lib/price/chainlinkPushProvider.js +36 -0
  315. package/dist/lib/price/chainlinkPushProvider.js.map +1 -0
  316. package/dist/lib/price/feedRegistry.d.ts +26 -0
  317. package/dist/lib/price/feedRegistry.d.ts.map +1 -0
  318. package/dist/lib/price/feedRegistry.js +67 -0
  319. package/dist/lib/price/feedRegistry.js.map +1 -0
  320. package/dist/lib/price/priceResolver.d.ts +35 -0
  321. package/dist/lib/price/priceResolver.d.ts.map +1 -0
  322. package/dist/lib/price/priceResolver.js +246 -0
  323. package/dist/lib/price/priceResolver.js.map +1 -0
  324. package/dist/lib/price/supraProvider.d.ts +9 -0
  325. package/dist/lib/price/supraProvider.d.ts.map +1 -0
  326. package/dist/lib/price/supraProvider.js +17 -0
  327. package/dist/lib/price/supraProvider.js.map +1 -0
  328. package/dist/lib/price/types.d.ts +67 -0
  329. package/dist/lib/price/types.d.ts.map +1 -0
  330. package/dist/lib/price/types.js +7 -0
  331. package/dist/lib/price/types.js.map +1 -0
  332. package/dist/lib/productionGuards.d.ts +16 -0
  333. package/dist/lib/productionGuards.d.ts.map +1 -0
  334. package/dist/lib/productionGuards.js +93 -0
  335. package/dist/lib/productionGuards.js.map +1 -0
  336. package/dist/lib/recipientSafety.d.ts +5 -0
  337. package/dist/lib/recipientSafety.d.ts.map +1 -0
  338. package/dist/lib/recipientSafety.js +28 -0
  339. package/dist/lib/recipientSafety.js.map +1 -0
  340. package/dist/lib/riskEngine.d.ts +45 -26
  341. package/dist/lib/riskEngine.d.ts.map +1 -1
  342. package/dist/lib/riskEngine.js +346 -283
  343. package/dist/lib/riskEngine.js.map +1 -1
  344. package/dist/lib/riskInclusion.d.ts +72 -0
  345. package/dist/lib/riskInclusion.d.ts.map +1 -0
  346. package/dist/lib/riskInclusion.js +252 -0
  347. package/dist/lib/riskInclusion.js.map +1 -0
  348. package/dist/lib/safeHandsRegistry.d.ts +32 -0
  349. package/dist/lib/safeHandsRegistry.d.ts.map +1 -0
  350. package/dist/lib/safeHandsRegistry.js +151 -0
  351. package/dist/lib/safeHandsRegistry.js.map +1 -0
  352. package/dist/lib/signer/index.d.ts +24 -24
  353. package/dist/lib/signer/index.d.ts.map +1 -1
  354. package/dist/lib/signer/index.js +110 -88
  355. package/dist/lib/signer/index.js.map +1 -1
  356. package/dist/lib/spendAccumulator.d.ts +24 -1
  357. package/dist/lib/spendAccumulator.d.ts.map +1 -1
  358. package/dist/lib/spendAccumulator.js +76 -6
  359. package/dist/lib/spendAccumulator.js.map +1 -1
  360. package/dist/lib/toolResponse.d.ts +30 -25
  361. package/dist/lib/toolResponse.d.ts.map +1 -1
  362. package/dist/lib/toolResponse.js +57 -53
  363. package/dist/lib/toolResponse.js.map +1 -1
  364. package/dist/lib/validation.d.ts +7 -0
  365. package/dist/lib/validation.d.ts.map +1 -0
  366. package/dist/lib/validation.js +62 -0
  367. package/dist/lib/validation.js.map +1 -0
  368. package/dist/lib/wallet/index.d.ts +33 -37
  369. package/dist/lib/wallet/index.d.ts.map +1 -1
  370. package/dist/lib/wallet/index.js +141 -128
  371. package/dist/lib/wallet/index.js.map +1 -1
  372. package/dist/lib/x402ReplayStore.d.ts +6 -0
  373. package/dist/lib/x402ReplayStore.d.ts.map +1 -0
  374. package/dist/lib/x402ReplayStore.js +79 -0
  375. package/dist/lib/x402ReplayStore.js.map +1 -0
  376. package/dist/safehands.zip +0 -0
  377. package/dist/sdk.d.ts +14 -0
  378. package/dist/sdk.d.ts.map +1 -0
  379. package/dist/sdk.js +25 -0
  380. package/dist/sdk.js.map +1 -0
  381. package/dist/tools/approveToken.d.ts +66 -45
  382. package/dist/tools/approveToken.d.ts.map +1 -1
  383. package/dist/tools/approveToken.js +152 -85
  384. package/dist/tools/approveToken.js.map +1 -1
  385. package/dist/tools/assessRisk.d.ts +66 -79
  386. package/dist/tools/assessRisk.d.ts.map +1 -1
  387. package/dist/tools/assessRisk.js +63 -104
  388. package/dist/tools/assessRisk.js.map +1 -1
  389. package/dist/tools/checkAllowance.d.ts +49 -43
  390. package/dist/tools/checkAllowance.d.ts.map +1 -1
  391. package/dist/tools/checkAllowance.js +78 -56
  392. package/dist/tools/checkAllowance.js.map +1 -1
  393. package/dist/tools/checkTokenSecurity.d.ts +103 -46
  394. package/dist/tools/checkTokenSecurity.d.ts.map +1 -1
  395. package/dist/tools/checkTokenSecurity.js +240 -95
  396. package/dist/tools/checkTokenSecurity.js.map +1 -1
  397. package/dist/tools/createAgentWallet.d.ts +30 -26
  398. package/dist/tools/createAgentWallet.d.ts.map +1 -1
  399. package/dist/tools/createAgentWallet.js +87 -58
  400. package/dist/tools/createAgentWallet.js.map +1 -1
  401. package/dist/tools/estimateGas.d.ts +84 -79
  402. package/dist/tools/estimateGas.d.ts.map +1 -1
  403. package/dist/tools/estimateGas.js +130 -124
  404. package/dist/tools/estimateGas.js.map +1 -1
  405. package/dist/tools/executeSwap.d.ts +109 -61
  406. package/dist/tools/executeSwap.d.ts.map +1 -1
  407. package/dist/tools/executeSwap.js +289 -141
  408. package/dist/tools/executeSwap.js.map +1 -1
  409. package/dist/tools/explainRisk.d.ts +29 -29
  410. package/dist/tools/explainRisk.d.ts.map +1 -1
  411. package/dist/tools/explainRisk.js +33 -32
  412. package/dist/tools/explainRisk.js.map +1 -1
  413. package/dist/tools/getAgentPolicy.d.ts +15 -0
  414. package/dist/tools/getAgentPolicy.d.ts.map +1 -0
  415. package/dist/tools/getAgentPolicy.js +16 -0
  416. package/dist/tools/getAgentPolicy.js.map +1 -0
  417. package/dist/tools/getAgentReputation.d.ts +31 -0
  418. package/dist/tools/getAgentReputation.d.ts.map +1 -0
  419. package/dist/tools/getAgentReputation.js +44 -0
  420. package/dist/tools/getAgentReputation.js.map +1 -0
  421. package/dist/tools/getAgentWallet.d.ts +21 -21
  422. package/dist/tools/getAgentWallet.d.ts.map +1 -1
  423. package/dist/tools/getAgentWallet.js +37 -27
  424. package/dist/tools/getAgentWallet.js.map +1 -1
  425. package/dist/tools/getAgentWalletBalance.d.ts +11 -11
  426. package/dist/tools/getAgentWalletBalance.d.ts.map +1 -1
  427. package/dist/tools/getAgentWalletBalance.js +102 -70
  428. package/dist/tools/getAgentWalletBalance.js.map +1 -1
  429. package/dist/tools/getExecutionHistory.d.ts +49 -49
  430. package/dist/tools/getExecutionHistory.d.ts.map +1 -1
  431. package/dist/tools/getExecutionHistory.js +148 -154
  432. package/dist/tools/getExecutionHistory.js.map +1 -1
  433. package/dist/tools/getGasPrice.d.ts +43 -43
  434. package/dist/tools/getGasPrice.d.ts.map +0 -0
  435. package/dist/tools/getGasPrice.js +59 -59
  436. package/dist/tools/getGasPrice.js.map +1 -1
  437. package/dist/tools/getPoolInfo.d.ts +75 -75
  438. package/dist/tools/getPoolInfo.d.ts.map +1 -1
  439. package/dist/tools/getPoolInfo.js +142 -137
  440. package/dist/tools/getPoolInfo.js.map +1 -1
  441. package/dist/tools/getSpvProof.d.ts +24 -0
  442. package/dist/tools/getSpvProof.d.ts.map +1 -0
  443. package/dist/tools/getSpvProof.js +64 -0
  444. package/dist/tools/getSpvProof.js.map +1 -0
  445. package/dist/tools/getTokenPrice.d.ts +56 -113
  446. package/dist/tools/getTokenPrice.d.ts.map +1 -1
  447. package/dist/tools/getTokenPrice.js +110 -117
  448. package/dist/tools/getTokenPrice.js.map +1 -1
  449. package/dist/tools/getTransactionStatus.d.ts +43 -43
  450. package/dist/tools/getTransactionStatus.d.ts.map +0 -0
  451. package/dist/tools/getTransactionStatus.js +59 -59
  452. package/dist/tools/getTransactionStatus.js.map +0 -0
  453. package/dist/tools/getWalletBalance.d.ts +103 -68
  454. package/dist/tools/getWalletBalance.d.ts.map +1 -1
  455. package/dist/tools/getWalletBalance.js +127 -87
  456. package/dist/tools/getWalletBalance.js.map +1 -1
  457. package/dist/tools/publishRiskScore.d.ts +85 -63
  458. package/dist/tools/publishRiskScore.d.ts.map +1 -1
  459. package/dist/tools/publishRiskScore.js +136 -88
  460. package/dist/tools/publishRiskScore.js.map +1 -1
  461. package/dist/tools/queryGoldsky.d.ts +20 -0
  462. package/dist/tools/queryGoldsky.d.ts.map +1 -0
  463. package/dist/tools/queryGoldsky.js +29 -0
  464. package/dist/tools/queryGoldsky.js.map +1 -0
  465. package/dist/tools/queryRiskRegistry.d.ts +38 -38
  466. package/dist/tools/queryRiskRegistry.d.ts.map +1 -1
  467. package/dist/tools/queryRiskRegistry.js +59 -55
  468. package/dist/tools/queryRiskRegistry.js.map +1 -1
  469. package/dist/tools/safehandsPreflightCheck.d.ts +92 -77
  470. package/dist/tools/safehandsPreflightCheck.d.ts.map +1 -1
  471. package/dist/tools/safehandsPreflightCheck.js +174 -47
  472. package/dist/tools/safehandsPreflightCheck.js.map +1 -1
  473. package/dist/tools/safehandsRiskReport.d.ts +96 -81
  474. package/dist/tools/safehandsRiskReport.d.ts.map +1 -1
  475. package/dist/tools/safehandsRiskReport.js +48 -28
  476. package/dist/tools/safehandsRiskReport.js.map +1 -1
  477. package/dist/tools/safehandsSafeExecute.d.ts +20 -20
  478. package/dist/tools/safehandsSafeExecute.d.ts.map +1 -1
  479. package/dist/tools/safehandsSafeExecute.js +164 -81
  480. package/dist/tools/safehandsSafeExecute.js.map +1 -1
  481. package/dist/tools/safehandsWalletHealth.d.ts +28 -14
  482. package/dist/tools/safehandsWalletHealth.d.ts.map +1 -1
  483. package/dist/tools/safehandsWalletHealth.js +145 -103
  484. package/dist/tools/safehandsWalletHealth.js.map +1 -1
  485. package/dist/tools/safehandsX402Preflight.d.ts +26 -26
  486. package/dist/tools/safehandsX402Preflight.d.ts.map +1 -1
  487. package/dist/tools/safehandsX402Preflight.js +86 -65
  488. package/dist/tools/safehandsX402Preflight.js.map +1 -1
  489. package/dist/tools/sendPayment.d.ts +63 -57
  490. package/dist/tools/sendPayment.d.ts.map +1 -1
  491. package/dist/tools/sendPayment.js +144 -117
  492. package/dist/tools/sendPayment.js.map +1 -1
  493. package/dist/tools/setAgentPolicy.d.ts +75 -0
  494. package/dist/tools/setAgentPolicy.d.ts.map +1 -0
  495. package/dist/tools/setAgentPolicy.js +80 -0
  496. package/dist/tools/setAgentPolicy.js.map +1 -0
  497. package/dist/tools/simulateTransaction.d.ts +64 -60
  498. package/dist/tools/simulateTransaction.d.ts.map +1 -1
  499. package/dist/tools/simulateTransaction.js +116 -83
  500. package/dist/tools/simulateTransaction.js.map +1 -1
  501. package/dist/tools/tokenRegistryStatus.d.ts +46 -26
  502. package/dist/tools/tokenRegistryStatus.d.ts.map +1 -1
  503. package/dist/tools/tokenRegistryStatus.js +126 -96
  504. package/dist/tools/tokenRegistryStatus.js.map +1 -1
  505. package/dist/tools/verifyRiskInclusion.d.ts +59 -0
  506. package/dist/tools/verifyRiskInclusion.d.ts.map +1 -0
  507. package/dist/tools/verifyRiskInclusion.js +40 -0
  508. package/dist/tools/verifyRiskInclusion.js.map +1 -0
  509. package/dist/tools/x402PayAndFetch.d.ts +87 -81
  510. package/dist/tools/x402PayAndFetch.d.ts.map +1 -1
  511. package/dist/tools/x402PayAndFetch.js +295 -152
  512. package/dist/tools/x402PayAndFetch.js.map +1 -1
  513. package/dist/worker.d.ts +3 -0
  514. package/dist/worker.d.ts.map +1 -0
  515. package/dist/worker.js +39 -0
  516. package/dist/worker.js.map +1 -0
  517. package/dist/x402Server.d.ts +1 -1
  518. package/dist/x402Server.d.ts.map +1 -1
  519. package/dist/x402Server.js +409 -252
  520. package/dist/x402Server.js.map +1 -1
  521. package/docs/REVIEWER_QUICKSTART.md +113 -0
  522. package/docs/SAFEHANDS_REVIEWER_DEMO_SCRIPT.md +228 -0
  523. package/package.json +130 -83
  524. package/contracts/RiskRegistry.json +0 -223
  525. package/contracts/RiskRegistry.sol +0 -58
  526. package/dist/lib/testDodoLive.d.ts +0 -2
  527. package/dist/lib/testDodoLive.d.ts.map +0 -1
  528. package/dist/lib/testDodoLive.js +0 -105
  529. package/dist/lib/testDodoLive.js.map +0 -1
  530. package/dist/lib/testLiveSafehands.d.ts +0 -2
  531. package/dist/lib/testLiveSafehands.d.ts.map +0 -1
  532. package/dist/lib/testLiveSafehands.js +0 -93
  533. package/dist/lib/testLiveSafehands.js.map +0 -1
  534. package/dist/lib/testRpc.d.ts +0 -2
  535. package/dist/lib/testRpc.d.ts.map +0 -1
  536. package/dist/lib/testRpc.js +0 -30
  537. package/dist/lib/testRpc.js.map +0 -1
  538. package/dist/lib/testRpcLive.d.ts +0 -2
  539. package/dist/lib/testRpcLive.d.ts.map +0 -1
  540. package/dist/lib/testRpcLive.js +0 -89
  541. package/dist/lib/testRpcLive.js.map +0 -1
  542. package/dist/lib/testTools.d.ts +0 -2
  543. package/dist/lib/testTools.d.ts.map +0 -1
  544. package/dist/lib/testTools.js +0 -398
  545. package/dist/lib/testTools.js.map +0 -1
  546. package/dist/lib/testX402Live.d.ts +0 -2
  547. package/dist/lib/testX402Live.d.ts.map +0 -1
  548. package/dist/lib/testX402Live.js +0 -160
  549. package/dist/lib/testX402Live.js.map +0 -1
  550. package/dist/scripts/checkDeploy.d.ts +0 -2
  551. package/dist/scripts/checkDeploy.d.ts.map +0 -1
  552. package/dist/scripts/checkDeploy.js +0 -25
  553. package/dist/scripts/checkDeploy.js.map +0 -1
  554. package/dist/scripts/deployRegistry.d.ts +0 -2
  555. package/dist/scripts/deployRegistry.d.ts.map +0 -1
  556. package/dist/scripts/deployRegistry.js +0 -101
  557. package/dist/scripts/deployRegistry.js.map +0 -1
  558. package/dist/scripts/testRegistry.d.ts +0 -2
  559. package/dist/scripts/testRegistry.d.ts.map +0 -1
  560. package/dist/scripts/testRegistry.js +0 -44
  561. package/dist/scripts/testRegistry.js.map +0 -1
  562. package/examples/dashboard/index.html +0 -337
  563. package/examples/pharos-skill-engine/SKILL.safehands.md +0 -85
  564. package/examples/pharos-skill-engine/assets/safehands/example-actions.json +0 -49
  565. package/examples/pharos-skill-engine/assets/safehands/policy-defaults.json +0 -11
  566. package/examples/pharos-skill-engine/references/safehands.md +0 -345
  567. package/examples/scenario-hack.ts +0 -38
  568. package/skill/SKILL.md +0 -133
  569. package/skill/assets/safehands/example-actions.json +0 -49
  570. package/skill/assets/safehands/policy-defaults.json +0 -11
  571. package/skill/references/safehands.md +0 -345
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcMethods.js","sourceRoot":"","sources":["../../../src/lib/pharos/rpcMethods.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ export interface SPVProofNode {
2
+ proofNode: string;
3
+ nextBeginOffset: number;
4
+ nextEndOffset: number;
5
+ }
6
+ export interface SPVStorageProof {
7
+ key: string;
8
+ value: string;
9
+ isExist: boolean;
10
+ proof: SPVProofNode[];
11
+ }
12
+ export interface SPVSiblingProof {
13
+ slotIndex: number;
14
+ leftmostLeafKey: string;
15
+ proofPath: SPVProofNode[];
16
+ }
17
+ export interface SPVResponse {
18
+ balance: string;
19
+ nonce: string;
20
+ codeHash: string;
21
+ storageHash: string;
22
+ isExist: boolean;
23
+ rawValue: string;
24
+ accountProof: SPVProofNode[];
25
+ storageProof: SPVStorageProof[];
26
+ siblingLeftmostLeafProofs?: SPVSiblingProof[];
27
+ }
28
+ /**
29
+ * Hash a hex string using SHA-256 (Pharos uses SHA-256 for SPV, not Keccak).
30
+ */
31
+ export declare function sha256Hex(hexStr: string): string;
32
+ /**
33
+ * Gets a specific nibble (4 bits) from a hex hash string at the given depth.
34
+ * depth 0 = first nibble, depth 1 = second nibble, etc.
35
+ */
36
+ export declare function getNibbleAtDepth(hashHex: string, depth: number): number;
37
+ /**
38
+ * Derives the expected nextBeginOffset based on the key and the node's depth.
39
+ * This is CRITICAL for non-existence soundness to prevent fake slot redirection.
40
+ */
41
+ export declare function deriveExpectedOffset(key: string, depth: number): number;
42
+ /**
43
+ * Verifies a Pharos SPV Proof (Existence or Non-Existence).
44
+ * Returns true if the proof is cryptographically sound and matches the stateRoot.
45
+ */
46
+ export declare function verifyPharosSPV(key: string, stateRoot: string, isExist: boolean, proof: SPVProofNode[], siblings?: SPVSiblingProof[]): boolean;
47
+ //# sourceMappingURL=spvVerifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spvVerifier.d.ts","sourceRoot":"","sources":["../../../src/lib/pharos/spvVerifier.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,yBAAyB,CAAC,EAAE,eAAe,EAAE,CAAC;CAC/C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIvE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAcvE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,YAAY,EAAE,EACrB,QAAQ,CAAC,EAAE,eAAe,EAAE,GAC3B,OAAO,CAqET"}
@@ -0,0 +1,105 @@
1
+ import { createHash } from "crypto";
2
+ import { hexToBytes } from "viem";
3
+ /**
4
+ * Hash a hex string using SHA-256 (Pharos uses SHA-256 for SPV, not Keccak).
5
+ */
6
+ export function sha256Hex(hexStr) {
7
+ const bytes = hexToBytes(hexStr);
8
+ const hash = createHash("sha256").update(bytes).digest("hex");
9
+ return `0x${hash}`;
10
+ }
11
+ /**
12
+ * Gets a specific nibble (4 bits) from a hex hash string at the given depth.
13
+ * depth 0 = first nibble, depth 1 = second nibble, etc.
14
+ */
15
+ export function getNibbleAtDepth(hashHex, depth) {
16
+ const cleanHash = hashHex.startsWith("0x") ? hashHex.slice(2) : hashHex;
17
+ if (depth >= cleanHash.length)
18
+ return 0;
19
+ return parseInt(cleanHash[depth], 16);
20
+ }
21
+ /**
22
+ * Derives the expected nextBeginOffset based on the key and the node's depth.
23
+ * This is CRITICAL for non-existence soundness to prevent fake slot redirection.
24
+ */
25
+ export function deriveExpectedOffset(key, depth) {
26
+ if (depth === 0) {
27
+ // MSU Root layer: 256 flat slots. Offset = last byte of key * 32
28
+ const cleanKey = key.startsWith("0x") ? key.slice(2) : key;
29
+ const lastByteHex = cleanKey.slice(-2);
30
+ const msuSlotIndex = parseInt(lastByteHex, 16);
31
+ return msuSlotIndex * 32;
32
+ }
33
+ else {
34
+ // Internal node layer: 3-byte header + 16 slots. Offset = 3 + nibble * 32
35
+ const keyHash = sha256Hex(key);
36
+ // depth - 1 because depth 0 is MSU root. Internal nodes start at trie depth 0 (which is chain depth 1)
37
+ const slotIdx = getNibbleAtDepth(keyHash, depth - 1);
38
+ return 3 + slotIdx * 32;
39
+ }
40
+ }
41
+ /**
42
+ * Verifies a Pharos SPV Proof (Existence or Non-Existence).
43
+ * Returns true if the proof is cryptographically sound and matches the stateRoot.
44
+ */
45
+ export function verifyPharosSPV(key, stateRoot, isExist, proof, siblings) {
46
+ if (!proof || proof.length === 0)
47
+ return false;
48
+ if (isExist) {
49
+ // EXISTENCE PROOF VERIFICATION
50
+ // 1. Verify Leaf
51
+ const leaf = proof[proof.length - 1];
52
+ // In this SPV verifier, we compute the hash of the leaf directly.
53
+ let currentHash = sha256Hex(leaf.proofNode);
54
+ // 2. Walk upwards to root
55
+ for (let i = proof.length - 2; i >= 0; i--) {
56
+ const parent = proof[i];
57
+ const expectedOffset = deriveExpectedOffset(key, i);
58
+ // Security Check: Enforce key-derived offset
59
+ if (parent.nextBeginOffset !== expectedOffset) {
60
+ throw new Error(`SPV Verification Failed: Invalid slot offset at depth ${i}. Expected ${expectedOffset}, got ${parent.nextBeginOffset}`);
61
+ }
62
+ currentHash = sha256Hex(parent.proofNode);
63
+ }
64
+ // 3. Verify against State Root
65
+ return currentHash.toLowerCase() === stateRoot.toLowerCase();
66
+ }
67
+ else {
68
+ // NON-EXISTENCE PROOF VERIFICATION
69
+ // Step 1: Verify the main chain up to the empty slot internal node
70
+ const lastInternal = proof[proof.length - 1];
71
+ let currentHash = sha256Hex(lastInternal.proofNode);
72
+ for (let i = proof.length - 2; i >= 0; i--) {
73
+ const parent = proof[i];
74
+ const expectedOffset = deriveExpectedOffset(key, i);
75
+ if (parent.nextBeginOffset !== expectedOffset) {
76
+ throw new Error(`SPV Non-Existence Failed: Invalid main chain offset at depth ${i}`);
77
+ }
78
+ currentHash = sha256Hex(parent.proofNode);
79
+ }
80
+ if (currentHash.toLowerCase() !== stateRoot.toLowerCase())
81
+ return false;
82
+ // Step 2: Verify all sibling chains (Case 2)
83
+ if (siblings && siblings.length > 0) {
84
+ for (const sib of siblings) {
85
+ if (!sib.proofPath || sib.proofPath.length === 0)
86
+ continue;
87
+ // Combine main chain (minus last node) with sibling path
88
+ const combined = [...proof.slice(0, proof.length - 1), ...sib.proofPath];
89
+ let sibHash = sha256Hex(combined[combined.length - 1].proofNode);
90
+ for (let i = combined.length - 2; i >= 0; i--) {
91
+ const parent = combined[i];
92
+ const expectedOffset = deriveExpectedOffset(sib.leftmostLeafKey, i);
93
+ if (parent.nextBeginOffset !== expectedOffset) {
94
+ throw new Error(`SPV Sibling Verification Failed for slot ${sib.slotIndex}`);
95
+ }
96
+ sibHash = sha256Hex(parent.proofNode);
97
+ }
98
+ if (sibHash.toLowerCase() !== stateRoot.toLowerCase())
99
+ return false;
100
+ }
101
+ }
102
+ return true;
103
+ }
104
+ }
105
+ //# sourceMappingURL=spvVerifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spvVerifier.js","sourceRoot":"","sources":["../../../src/lib/pharos/spvVerifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Gated module specifically for sending externally signed transactions.
3
+ * Rules:
4
+ * - Does not sign, hold keys, or create wallets.
5
+ * - Only active if SAFEHANDS_USER_SIGNED_BROADCAST_ENABLED=true.
6
+ * - Only supports Pharos Pacific Mainnet (chainId 1672).
7
+ * - Bypasses PharosReadOnlyRpc by design to allow eth_sendRawTransaction.
8
+ */
9
+ export declare function broadcastSignedTransaction(rawSignedTx: string, chainId: number): Promise<string>;
10
+ //# sourceMappingURL=userSignedBroadcaster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userSignedBroadcaster.d.ts","sourceRoot":"","sources":["../../../src/lib/pharos/userSignedBroadcaster.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAsB,0BAA0B,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA6CtG"}
@@ -0,0 +1,50 @@
1
+ import { getActiveNetwork, resolveRpcUrl } from "../networks.js";
2
+ import { fetchWithTimeoutAndRetry } from "../http.js";
3
+ /**
4
+ * Gated module specifically for sending externally signed transactions.
5
+ * Rules:
6
+ * - Does not sign, hold keys, or create wallets.
7
+ * - Only active if SAFEHANDS_USER_SIGNED_BROADCAST_ENABLED=true.
8
+ * - Only supports Pharos Pacific Mainnet (chainId 1672).
9
+ * - Bypasses PharosReadOnlyRpc by design to allow eth_sendRawTransaction.
10
+ */
11
+ export async function broadcastSignedTransaction(rawSignedTx, chainId) {
12
+ if (process.env.SAFEHANDS_USER_SIGNED_BROADCAST_ENABLED !== "true") {
13
+ throw new Error("Broadcasting is disabled. Set SAFEHANDS_USER_SIGNED_BROADCAST_ENABLED=true to enable.");
14
+ }
15
+ if (chainId !== 1672) {
16
+ throw new Error("Live broadcast is only supported on Pharos Pacific Mainnet (chainId 1672).");
17
+ }
18
+ const network = getActiveNetwork();
19
+ if (network.chainId !== 1672) {
20
+ throw new Error("Active network is not Pharos Pacific Mainnet (1672). Broadcast aborted.");
21
+ }
22
+ const rpcUrl = resolveRpcUrl(network);
23
+ try {
24
+ const res = await fetchWithTimeoutAndRetry(rpcUrl, {
25
+ method: "POST",
26
+ headers: { "content-type": "application/json" },
27
+ body: JSON.stringify({
28
+ jsonrpc: "2.0",
29
+ id: Date.now(),
30
+ method: "eth_sendRawTransaction",
31
+ params: [rawSignedTx],
32
+ }),
33
+ timeoutMs: 10_000,
34
+ retries: 1,
35
+ retryDelayMs: 250,
36
+ });
37
+ const json = (await res.json());
38
+ if (json.error) {
39
+ throw new Error(`eth_sendRawTransaction error: ${json.error.message || "unknown"}`);
40
+ }
41
+ if (!json.result) {
42
+ throw new Error("eth_sendRawTransaction returned no result");
43
+ }
44
+ return json.result;
45
+ }
46
+ catch (error) {
47
+ throw new Error(`Broadcast failed: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
48
+ }
49
+ }
50
+ //# sourceMappingURL=userSignedBroadcaster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userSignedBroadcaster.js","sourceRoot":"","sources":["../../../src/lib/pharos/userSignedBroadcaster.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,WAAmB,EAAE,OAAe;IACnF,IAAI,OAAO,CAAC,GAAG,CAAC,uCAAuC,KAAK,MAAM,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;IAC3G,CAAC;IAED,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC7F,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,wBAAwB,CAAC,MAAM,EAAE;YACjD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,OAAO,EAAE,KAAK;gBACd,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;gBACd,MAAM,EAAE,wBAAwB;gBAChC,MAAM,EAAE,CAAC,WAAW,CAAC;aACtB,CAAC;YACF,SAAS,EAAE,MAAM;YACjB,OAAO,EAAE,CAAC;YACV,YAAY,EAAE,GAAG;SAClB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAsD,CAAC;QAErF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACnH,CAAC;AACH,CAAC"}
@@ -1,59 +1,54 @@
1
- import { type PublicClient, type WalletClient, type Transport, type Chain, type Account } from "viem";
2
- export declare const pharosAtlantic: {
3
- blockExplorers: {
4
- readonly default: {
5
- readonly name: "PharosScan";
6
- readonly url: string;
7
- };
8
- };
9
- blockTime?: number | undefined | undefined;
10
- contracts?: {
11
- [x: string]: import("viem").ChainContract | {
12
- [sourceId: number]: import("viem").ChainContract | undefined;
13
- } | undefined;
14
- ensRegistry?: import("viem").ChainContract | undefined;
15
- ensUniversalResolver?: import("viem").ChainContract | undefined;
16
- multicall3?: import("viem").ChainContract | undefined;
17
- erc6492Verifier?: import("viem").ChainContract | undefined;
18
- } | undefined;
19
- ensTlds?: readonly string[] | undefined;
20
- id: number;
21
- name: `Pharos ${string}`;
22
- nativeCurrency: {
23
- readonly name: "PHRS";
24
- readonly symbol: "PHRS";
25
- readonly decimals: 18;
26
- };
27
- experimental_preconfirmationTime?: number | undefined | undefined;
28
- rpcUrls: {
29
- readonly default: {
30
- readonly http: readonly [string];
31
- };
32
- };
33
- sourceId?: number | undefined | undefined;
34
- testnet: true;
35
- custom?: Record<string, unknown> | undefined;
36
- extendSchema?: Record<string, unknown> | undefined;
37
- fees?: import("viem").ChainFees<undefined> | undefined;
38
- formatters?: undefined;
39
- prepareTransactionRequest?: ((args: import("viem").PrepareTransactionRequestParameters, options: {
40
- client: import("viem").Client;
41
- phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
42
- }) => Promise<import("viem").PrepareTransactionRequestParameters>) | [fn: ((args: import("viem").PrepareTransactionRequestParameters, options: {
43
- client: import("viem").Client;
44
- phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
45
- }) => Promise<import("viem").PrepareTransactionRequestParameters>) | undefined, options: {
46
- runAt: readonly ("beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters")[];
47
- }] | undefined;
48
- serializers?: import("viem").ChainSerializers<undefined, import("viem").TransactionSerializable> | undefined;
49
- verifyHash?: ((client: import("viem").Client, parameters: import("viem").VerifyHashActionParameters) => Promise<import("viem").VerifyHashActionReturnType>) | undefined;
50
- };
51
- export declare const publicClient: PublicClient<Transport, Chain>;
52
- /**
53
- * Creates a wallet client for signing and sending transactions.
54
- * Private key is passed per-request and NEVER stored.
55
- */
56
- export declare function createPharosWalletClient(privateKey: `0x${string}`): WalletClient<Transport, Chain, Account>;
57
- export declare function createPharosWalletClientFromAccount(account: Account): WalletClient<Transport, Chain, Account>;
58
- export declare function getExplorerUrl(txHash: string): string;
1
+ import { type PublicClient, type WalletClient, type Transport, type Chain, type Account } from "viem";
2
+ export declare const pharosNetwork: {
3
+ blockExplorers: {
4
+ readonly default: {
5
+ readonly name: "PharosScan";
6
+ readonly url: string;
7
+ };
8
+ };
9
+ blockTime?: number | undefined | undefined;
10
+ contracts?: {
11
+ [x: string]: import("viem").ChainContract | {
12
+ [sourceId: number]: import("viem").ChainContract | undefined;
13
+ } | undefined;
14
+ ensRegistry?: import("viem").ChainContract | undefined;
15
+ ensUniversalResolver?: import("viem").ChainContract | undefined;
16
+ multicall3?: import("viem").ChainContract | undefined;
17
+ erc6492Verifier?: import("viem").ChainContract | undefined;
18
+ } | undefined;
19
+ ensTlds?: readonly string[] | undefined;
20
+ id: number;
21
+ name: string;
22
+ nativeCurrency: {
23
+ readonly name: string;
24
+ readonly symbol: string;
25
+ readonly decimals: 18;
26
+ };
27
+ experimental_preconfirmationTime?: number | undefined | undefined;
28
+ rpcUrls: {
29
+ readonly default: {
30
+ readonly http: readonly [string];
31
+ };
32
+ };
33
+ sourceId?: number | undefined | undefined;
34
+ testnet: boolean;
35
+ custom?: Record<string, unknown> | undefined;
36
+ extendSchema?: Record<string, unknown> | undefined;
37
+ fees?: import("viem").ChainFees<undefined> | undefined;
38
+ formatters?: undefined;
39
+ prepareTransactionRequest?: ((args: import("viem").PrepareTransactionRequestParameters, options: {
40
+ client: import("viem").Client;
41
+ phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
42
+ }) => Promise<import("viem").PrepareTransactionRequestParameters>) | [fn: ((args: import("viem").PrepareTransactionRequestParameters, options: {
43
+ client: import("viem").Client;
44
+ phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
45
+ }) => Promise<import("viem").PrepareTransactionRequestParameters>) | undefined, options: {
46
+ runAt: readonly ("beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters")[];
47
+ }] | undefined;
48
+ serializers?: import("viem").ChainSerializers<undefined, import("viem").TransactionSerializable> | undefined;
49
+ verifyHash?: ((client: import("viem").Client, parameters: import("viem").VerifyHashActionParameters) => Promise<import("viem").VerifyHashActionReturnType>) | undefined;
50
+ };
51
+ export declare const publicClient: PublicClient<Transport, Chain>;
52
+ export declare function createPharosWalletClientFromAccount(account: Account): WalletClient<Transport, Chain, Account>;
53
+ export declare function getExplorerUrl(txHash: string): string;
59
54
  //# sourceMappingURL=pharosClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pharosClient.d.ts","sourceRoot":"","sources":["../../src/lib/pharosClient.ts"],"names":[],"mappings":"AAIA,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,OAAO,EACb,MAAM,MAAM,CAAC;AAkBd,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoBzB,CAAC;AAIH,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,CAGtD,CAAC;AAIH;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,KAAK,MAAM,EAAE,GACxB,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAGzC;AAED,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,OAAO,GACf,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAMzC;AAID,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD"}
1
+ {"version":3,"file":"pharosClient.d.ts","sourceRoot":"","sources":["../../src/lib/pharosClient.ts"],"names":[],"mappings":"AAIA,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,OAAO,EACb,MAAM,MAAM,CAAC;AAoBd,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoBxB,CAAC;AAIH,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,CAGtD,CAAC;AAIH,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,OAAO,GACf,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAMzC;AAID,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD"}
@@ -1,64 +1,57 @@
1
- // ─── Pharos Chain Client ───────────────────────────────────────────────
2
- // viem publicClient & walletClient factory for Pharos Atlantic Testnet.
3
- // ────────────────────────────────────────────────────────────────────────
4
- import { createPublicClient, createWalletClient, http, fallback, defineChain, } from "viem";
5
- import { privateKeyToAccount } from "viem/accounts";
6
- import { RPC_URL, CHAIN_ID, EXPLORER_BASE, PHAROS_ENVIRONMENT, IS_MAINNET } from "./constants.js";
7
- // Support multiple comma-separated RPC URLs for failover.
8
- // PHAROS_RPC_URLS takes priority; falls back to single PHAROS_RPC_URL.
9
- const RPC_URLS = (process.env.PHAROS_RPC_URLS || RPC_URL)
10
- .split(",")
11
- .map((s) => s.trim())
12
- .filter(Boolean);
13
- function buildTransport() {
14
- const transports = RPC_URLS.map((url) => http(url, { timeout: 10_000, retryCount: 1, retryDelay: 250 }));
15
- return transports.length > 1 ? fallback(transports) : transports[0];
16
- }
17
- // ─── Chain Definition ──────────────────────────────────────────────────
18
- export const pharosAtlantic = defineChain({
19
- id: CHAIN_ID,
20
- name: `Pharos ${PHAROS_ENVIRONMENT}`,
21
- nativeCurrency: {
22
- name: "PHRS",
23
- symbol: "PHRS",
24
- decimals: 18,
25
- },
26
- rpcUrls: {
27
- default: {
28
- http: [RPC_URL],
29
- },
30
- },
31
- blockExplorers: {
32
- default: {
33
- name: "PharosScan",
34
- url: EXPLORER_BASE.replace("/tx/", ""),
35
- },
36
- },
37
- testnet: !IS_MAINNET,
38
- });
39
- // ─── Public Client (read-only) ─────────────────────────────────────────
40
- export const publicClient = createPublicClient({
41
- chain: pharosAtlantic,
42
- transport: buildTransport(),
43
- });
44
- // ─── Wallet Client Factory ─────────────────────────────────────────────
45
- /**
46
- * Creates a wallet client for signing and sending transactions.
47
- * Private key is passed per-request and NEVER stored.
48
- */
49
- export function createPharosWalletClient(privateKey) {
50
- const account = privateKeyToAccount(privateKey);
51
- return createPharosWalletClientFromAccount(account);
52
- }
53
- export function createPharosWalletClientFromAccount(account) {
54
- return createWalletClient({
55
- account,
56
- chain: pharosAtlantic,
57
- transport: buildTransport(),
58
- });
59
- }
60
- // ─── Utility: Explorer Link ────────────────────────────────────────────
61
- export function getExplorerUrl(txHash) {
62
- return `${EXPLORER_BASE}${txHash}`;
63
- }
1
+ // ─── Pharos Chain Client ───────────────────────────────────────────────
2
+ // viem publicClient & walletClient factory for Pharos Atlantic Testnet.
3
+ // ────────────────────────────────────────────────────────────────────────
4
+ import { createPublicClient, createWalletClient, http, fallback, defineChain, } from "viem";
5
+ import { RPC_URL, CHAIN_ID, EXPLORER_BASE, IS_MAINNET } from "./constants.js";
6
+ import { getActiveNetwork } from "./networks.js";
7
+ const ACTIVE_NETWORK = getActiveNetwork();
8
+ // Support multiple comma-separated RPC URLs for failover.
9
+ // PHAROS_RPC_URLS takes priority; falls back to single PHAROS_RPC_URL.
10
+ const RPC_URLS = (process.env.PHAROS_RPC_URLS || RPC_URL)
11
+ .split(",")
12
+ .map((s) => s.trim())
13
+ .filter(Boolean);
14
+ function buildTransport() {
15
+ const transports = RPC_URLS.map((url) => http(url, { timeout: 10_000, retryCount: 1, retryDelay: 250 }));
16
+ return transports.length > 1 ? fallback(transports) : transports[0];
17
+ }
18
+ // ─── Chain Definition ──────────────────────────────────────────────────
19
+ export const pharosNetwork = defineChain({
20
+ id: CHAIN_ID,
21
+ name: ACTIVE_NETWORK.label,
22
+ nativeCurrency: {
23
+ name: ACTIVE_NETWORK.nativeToken,
24
+ symbol: ACTIVE_NETWORK.nativeToken,
25
+ decimals: 18,
26
+ },
27
+ rpcUrls: {
28
+ default: {
29
+ http: [RPC_URL],
30
+ },
31
+ },
32
+ blockExplorers: {
33
+ default: {
34
+ name: "PharosScan",
35
+ url: EXPLORER_BASE.replace("/tx/", ""),
36
+ },
37
+ },
38
+ testnet: !IS_MAINNET,
39
+ });
40
+ // ─── Public Client (read-only) ─────────────────────────────────────────
41
+ export const publicClient = createPublicClient({
42
+ chain: pharosNetwork,
43
+ transport: buildTransport(),
44
+ });
45
+ // ─── Wallet Client Factory ─────────────────────────────────────────────
46
+ export function createPharosWalletClientFromAccount(account) {
47
+ return createWalletClient({
48
+ account,
49
+ chain: pharosNetwork,
50
+ transport: buildTransport(),
51
+ });
52
+ }
53
+ // ─── Utility: Explorer Link ────────────────────────────────────────────
54
+ export function getExplorerUrl(txHash) {
55
+ return `${EXPLORER_BASE}${txHash}`;
56
+ }
64
57
  //# sourceMappingURL=pharosClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pharosClient.js","sourceRoot":"","sources":["../../src/lib/pharosClient.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,wEAAwE;AACxE,2EAA2E;AAE3E,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,IAAI,EACJ,QAAQ,EACR,WAAW,GAMZ,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAElG,0DAA0D;AAC1D,uEAAuE;AACvE,MAAM,QAAQ,GAAa,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC;KAChE,KAAK,CAAC,GAAG,CAAC;KACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KACpB,MAAM,CAAC,OAAO,CAAC,CAAC;AAEnB,SAAS,cAAc;IACrB,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACzG,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,0EAA0E;AAE1E,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;IACxC,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,UAAU,kBAAkB,EAAE;IACpC,cAAc,EAAE;QACd,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,EAAE;KACb;IACD,OAAO,EAAE;QACP,OAAO,EAAE;YACP,IAAI,EAAE,CAAC,OAAO,CAAC;SAChB;KACF;IACD,cAAc,EAAE;QACd,OAAO,EAAE;YACP,IAAI,EAAE,YAAY;YAClB,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACvC;KACF;IACD,OAAO,EAAE,CAAC,UAAU;CACrB,CAAC,CAAC;AAEH,0EAA0E;AAE1E,MAAM,CAAC,MAAM,YAAY,GAAmC,kBAAkB,CAAC;IAC7E,KAAK,EAAE,cAAc;IACrB,SAAS,EAAE,cAAc,EAAE;CAC5B,CAAC,CAAC;AAEH,0EAA0E;AAE1E;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,UAAyB;IAEzB,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAChD,OAAO,mCAAmC,CAAC,OAAO,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,OAAgB;IAEhB,OAAO,kBAAkB,CAAC;QACxB,OAAO;QACP,KAAK,EAAE,cAAc;QACrB,SAAS,EAAE,cAAc,EAAE;KAC5B,CAAC,CAAC;AACL,CAAC;AAED,0EAA0E;AAE1E,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAO,GAAG,aAAa,GAAG,MAAM,EAAE,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"pharosClient.js","sourceRoot":"","sources":["../../src/lib/pharosClient.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,wEAAwE;AACxE,2EAA2E;AAE3E,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,IAAI,EACJ,QAAQ,EACR,WAAW,GAMZ,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,cAAc,GAAG,gBAAgB,EAAE,CAAC;AAE1C,0DAA0D;AAC1D,uEAAuE;AACvE,MAAM,QAAQ,GAAa,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC;KAChE,KAAK,CAAC,GAAG,CAAC;KACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KACpB,MAAM,CAAC,OAAO,CAAC,CAAC;AAEnB,SAAS,cAAc;IACrB,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACzG,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,0EAA0E;AAE1E,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;IACvC,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,cAAc,CAAC,KAAK;IAC1B,cAAc,EAAE;QACd,IAAI,EAAE,cAAc,CAAC,WAAW;QAChC,MAAM,EAAE,cAAc,CAAC,WAAW;QAClC,QAAQ,EAAE,EAAE;KACb;IACD,OAAO,EAAE;QACP,OAAO,EAAE;YACP,IAAI,EAAE,CAAC,OAAO,CAAC;SAChB;KACF;IACD,cAAc,EAAE;QACd,OAAO,EAAE;YACP,IAAI,EAAE,YAAY;YAClB,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACvC;KACF;IACD,OAAO,EAAE,CAAC,UAAU;CACrB,CAAC,CAAC;AAEH,0EAA0E;AAE1E,MAAM,CAAC,MAAM,YAAY,GAAmC,kBAAkB,CAAC;IAC7E,KAAK,EAAE,aAAa;IACpB,SAAS,EAAE,cAAc,EAAE;CAC5B,CAAC,CAAC;AAEH,0EAA0E;AAE1E,MAAM,UAAU,mCAAmC,CACjD,OAAgB;IAEhB,OAAO,kBAAkB,CAAC;QACxB,OAAO;QACP,KAAK,EAAE,aAAa;QACpB,SAAS,EAAE,cAAc,EAAE;KAC5B,CAAC,CAAC;AACL,CAAC;AAED,0EAA0E;AAE1E,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAO,GAAG,aAAa,GAAG,MAAM,EAAE,CAAC;AACrC,CAAC"}