@usesigil/kit 0.1.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 (631) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +190 -0
  3. package/dist/advanced-analytics.d.ts +118 -0
  4. package/dist/advanced-analytics.d.ts.map +1 -0
  5. package/dist/advanced-analytics.js +341 -0
  6. package/dist/advanced-analytics.js.map +1 -0
  7. package/dist/agent-analytics.d.ts +76 -0
  8. package/dist/agent-analytics.d.ts.map +1 -0
  9. package/dist/agent-analytics.js +179 -0
  10. package/dist/agent-analytics.js.map +1 -0
  11. package/dist/agent-errors.d.ts +151 -0
  12. package/dist/agent-errors.d.ts.map +1 -0
  13. package/dist/agent-errors.js +2001 -0
  14. package/dist/agent-errors.js.map +1 -0
  15. package/dist/alt-config.d.ts +43 -0
  16. package/dist/alt-config.d.ts.map +1 -0
  17. package/dist/alt-config.js +78 -0
  18. package/dist/alt-config.js.map +1 -0
  19. package/dist/alt-loader.d.ts +47 -0
  20. package/dist/alt-loader.d.ts.map +1 -0
  21. package/dist/alt-loader.js +143 -0
  22. package/dist/alt-loader.js.map +1 -0
  23. package/dist/balance-tracker.d.ts +87 -0
  24. package/dist/balance-tracker.d.ts.map +1 -0
  25. package/dist/balance-tracker.js +181 -0
  26. package/dist/balance-tracker.js.map +1 -0
  27. package/dist/composer.d.ts +56 -0
  28. package/dist/composer.d.ts.map +1 -0
  29. package/dist/composer.js +77 -0
  30. package/dist/composer.js.map +1 -0
  31. package/dist/core/engine.d.ts +17 -0
  32. package/dist/core/engine.d.ts.map +1 -0
  33. package/dist/core/engine.js +177 -0
  34. package/dist/core/engine.js.map +1 -0
  35. package/dist/core/errors.d.ts +24 -0
  36. package/dist/core/errors.d.ts.map +1 -0
  37. package/dist/core/errors.js +16 -0
  38. package/dist/core/errors.js.map +1 -0
  39. package/dist/core/index.d.ts +9 -0
  40. package/dist/core/index.d.ts.map +1 -0
  41. package/dist/core/index.js +10 -0
  42. package/dist/core/index.js.map +1 -0
  43. package/dist/core/policies.d.ts +75 -0
  44. package/dist/core/policies.d.ts.map +1 -0
  45. package/dist/core/policies.js +126 -0
  46. package/dist/core/policies.js.map +1 -0
  47. package/dist/core/registry.d.ts +29 -0
  48. package/dist/core/registry.d.ts.map +1 -0
  49. package/dist/core/registry.js +125 -0
  50. package/dist/core/registry.js.map +1 -0
  51. package/dist/core/state.d.ts +71 -0
  52. package/dist/core/state.d.ts.map +1 -0
  53. package/dist/core/state.js +169 -0
  54. package/dist/core/state.js.map +1 -0
  55. package/dist/create-vault.d.ts +58 -0
  56. package/dist/create-vault.d.ts.map +1 -0
  57. package/dist/create-vault.js +90 -0
  58. package/dist/create-vault.js.map +1 -0
  59. package/dist/custody-adapter.d.ts +54 -0
  60. package/dist/custody-adapter.d.ts.map +1 -0
  61. package/dist/custody-adapter.js +45 -0
  62. package/dist/custody-adapter.js.map +1 -0
  63. package/dist/event-analytics.d.ts +45 -0
  64. package/dist/event-analytics.d.ts.map +1 -0
  65. package/dist/event-analytics.js +277 -0
  66. package/dist/event-analytics.js.map +1 -0
  67. package/dist/events.d.ts +56 -0
  68. package/dist/events.d.ts.map +1 -0
  69. package/dist/events.js +151 -0
  70. package/dist/events.js.map +1 -0
  71. package/dist/formatting.d.ts +103 -0
  72. package/dist/formatting.d.ts.map +1 -0
  73. package/dist/formatting.js +244 -0
  74. package/dist/formatting.js.map +1 -0
  75. package/dist/generated/accounts/agentSpendOverlay.d.ts +54 -0
  76. package/dist/generated/accounts/agentSpendOverlay.d.ts.map +1 -0
  77. package/dist/generated/accounts/agentSpendOverlay.js +74 -0
  78. package/dist/generated/accounts/agentSpendOverlay.js.map +1 -0
  79. package/dist/generated/accounts/agentVault.d.ts +95 -0
  80. package/dist/generated/accounts/agentVault.d.ts.map +1 -0
  81. package/dist/generated/accounts/agentVault.js +83 -0
  82. package/dist/generated/accounts/agentVault.js.map +1 -0
  83. package/dist/generated/accounts/escrowDeposit.d.ts +50 -0
  84. package/dist/generated/accounts/escrowDeposit.d.ts.map +1 -0
  85. package/dist/generated/accounts/escrowDeposit.js +76 -0
  86. package/dist/generated/accounts/escrowDeposit.js.map +1 -0
  87. package/dist/generated/accounts/index.d.ts +17 -0
  88. package/dist/generated/accounts/index.d.ts.map +1 -0
  89. package/dist/generated/accounts/index.js +17 -0
  90. package/dist/generated/accounts/index.js.map +1 -0
  91. package/dist/generated/accounts/instructionConstraints.d.ts +37 -0
  92. package/dist/generated/accounts/instructionConstraints.d.ts.map +1 -0
  93. package/dist/generated/accounts/instructionConstraints.js +64 -0
  94. package/dist/generated/accounts/instructionConstraints.js.map +1 -0
  95. package/dist/generated/accounts/pendingConstraintsUpdate.d.ts +53 -0
  96. package/dist/generated/accounts/pendingConstraintsUpdate.d.ts.map +1 -0
  97. package/dist/generated/accounts/pendingConstraintsUpdate.js +68 -0
  98. package/dist/generated/accounts/pendingConstraintsUpdate.js.map +1 -0
  99. package/dist/generated/accounts/pendingPolicyUpdate.d.ts +72 -0
  100. package/dist/generated/accounts/pendingPolicyUpdate.d.ts.map +1 -0
  101. package/dist/generated/accounts/pendingPolicyUpdate.js +97 -0
  102. package/dist/generated/accounts/pendingPolicyUpdate.js.map +1 -0
  103. package/dist/generated/accounts/policyConfig.d.ts +180 -0
  104. package/dist/generated/accounts/policyConfig.d.ts.map +1 -0
  105. package/dist/generated/accounts/policyConfig.js +88 -0
  106. package/dist/generated/accounts/policyConfig.js.map +1 -0
  107. package/dist/generated/accounts/sessionAuthority.d.ts +104 -0
  108. package/dist/generated/accounts/sessionAuthority.d.ts.map +1 -0
  109. package/dist/generated/accounts/sessionAuthority.js +86 -0
  110. package/dist/generated/accounts/sessionAuthority.js.map +1 -0
  111. package/dist/generated/accounts/spendTracker.d.ts +60 -0
  112. package/dist/generated/accounts/spendTracker.d.ts.map +1 -0
  113. package/dist/generated/accounts/spendTracker.js +74 -0
  114. package/dist/generated/accounts/spendTracker.js.map +1 -0
  115. package/dist/generated/errors/index.d.ts +9 -0
  116. package/dist/generated/errors/index.d.ts.map +1 -0
  117. package/dist/generated/errors/index.js +9 -0
  118. package/dist/generated/errors/index.js.map +1 -0
  119. package/dist/generated/errors/sigil.d.ts +162 -0
  120. package/dist/generated/errors/sigil.d.ts.map +1 -0
  121. package/dist/generated/errors/sigil.js +237 -0
  122. package/dist/generated/errors/sigil.js.map +1 -0
  123. package/dist/generated/event-discriminators.d.ts +2 -0
  124. package/dist/generated/event-discriminators.d.ts.map +1 -0
  125. package/dist/generated/event-discriminators.js +39 -0
  126. package/dist/generated/event-discriminators.js.map +1 -0
  127. package/dist/generated/index.d.ts +13 -0
  128. package/dist/generated/index.d.ts.map +1 -0
  129. package/dist/generated/index.js +13 -0
  130. package/dist/generated/index.js.map +1 -0
  131. package/dist/generated/instructions/agentTransfer.d.ts +109 -0
  132. package/dist/generated/instructions/agentTransfer.d.ts.map +1 -0
  133. package/dist/generated/instructions/agentTransfer.js +211 -0
  134. package/dist/generated/instructions/agentTransfer.js.map +1 -0
  135. package/dist/generated/instructions/applyConstraintsUpdate.d.ts +55 -0
  136. package/dist/generated/instructions/applyConstraintsUpdate.d.ts.map +1 -0
  137. package/dist/generated/instructions/applyConstraintsUpdate.js +129 -0
  138. package/dist/generated/instructions/applyConstraintsUpdate.js.map +1 -0
  139. package/dist/generated/instructions/applyPendingPolicy.d.ts +55 -0
  140. package/dist/generated/instructions/applyPendingPolicy.d.ts.map +1 -0
  141. package/dist/generated/instructions/applyPendingPolicy.js +122 -0
  142. package/dist/generated/instructions/applyPendingPolicy.js.map +1 -0
  143. package/dist/generated/instructions/cancelConstraintsUpdate.d.ts +51 -0
  144. package/dist/generated/instructions/cancelConstraintsUpdate.d.ts.map +1 -0
  145. package/dist/generated/instructions/cancelConstraintsUpdate.js +115 -0
  146. package/dist/generated/instructions/cancelConstraintsUpdate.js.map +1 -0
  147. package/dist/generated/instructions/cancelPendingPolicy.d.ts +55 -0
  148. package/dist/generated/instructions/cancelPendingPolicy.d.ts.map +1 -0
  149. package/dist/generated/instructions/cancelPendingPolicy.js +122 -0
  150. package/dist/generated/instructions/cancelPendingPolicy.js.map +1 -0
  151. package/dist/generated/instructions/closeInstructionConstraints.d.ts +55 -0
  152. package/dist/generated/instructions/closeInstructionConstraints.d.ts.map +1 -0
  153. package/dist/generated/instructions/closeInstructionConstraints.js +120 -0
  154. package/dist/generated/instructions/closeInstructionConstraints.js.map +1 -0
  155. package/dist/generated/instructions/closeSettledEscrow.d.ts +72 -0
  156. package/dist/generated/instructions/closeSettledEscrow.d.ts.map +1 -0
  157. package/dist/generated/instructions/closeSettledEscrow.js +127 -0
  158. package/dist/generated/instructions/closeSettledEscrow.js.map +1 -0
  159. package/dist/generated/instructions/closeVault.d.ts +69 -0
  160. package/dist/generated/instructions/closeVault.d.ts.map +1 -0
  161. package/dist/generated/instructions/closeVault.js +142 -0
  162. package/dist/generated/instructions/closeVault.js.map +1 -0
  163. package/dist/generated/instructions/createEscrow.d.ts +131 -0
  164. package/dist/generated/instructions/createEscrow.d.ts.map +1 -0
  165. package/dist/generated/instructions/createEscrow.js +272 -0
  166. package/dist/generated/instructions/createEscrow.js.map +1 -0
  167. package/dist/generated/instructions/createInstructionConstraints.d.ts +69 -0
  168. package/dist/generated/instructions/createInstructionConstraints.d.ts.map +1 -0
  169. package/dist/generated/instructions/createInstructionConstraints.js +145 -0
  170. package/dist/generated/instructions/createInstructionConstraints.js.map +1 -0
  171. package/dist/generated/instructions/depositFunds.d.ts +82 -0
  172. package/dist/generated/instructions/depositFunds.d.ts.map +1 -0
  173. package/dist/generated/instructions/depositFunds.js +198 -0
  174. package/dist/generated/instructions/depositFunds.js.map +1 -0
  175. package/dist/generated/instructions/finalizeSession.d.ts +126 -0
  176. package/dist/generated/instructions/finalizeSession.d.ts.map +1 -0
  177. package/dist/generated/instructions/finalizeSession.js +218 -0
  178. package/dist/generated/instructions/finalizeSession.js.map +1 -0
  179. package/dist/generated/instructions/freezeVault.d.ts +40 -0
  180. package/dist/generated/instructions/freezeVault.d.ts.map +1 -0
  181. package/dist/generated/instructions/freezeVault.js +66 -0
  182. package/dist/generated/instructions/freezeVault.js.map +1 -0
  183. package/dist/generated/instructions/index.d.ts +37 -0
  184. package/dist/generated/instructions/index.d.ts.map +1 -0
  185. package/dist/generated/instructions/index.js +37 -0
  186. package/dist/generated/instructions/index.js.map +1 -0
  187. package/dist/generated/instructions/initializeVault.d.ts +122 -0
  188. package/dist/generated/instructions/initializeVault.d.ts.map +1 -0
  189. package/dist/generated/instructions/initializeVault.js +187 -0
  190. package/dist/generated/instructions/initializeVault.js.map +1 -0
  191. package/dist/generated/instructions/pauseAgent.d.ts +44 -0
  192. package/dist/generated/instructions/pauseAgent.d.ts.map +1 -0
  193. package/dist/generated/instructions/pauseAgent.js +72 -0
  194. package/dist/generated/instructions/pauseAgent.js.map +1 -0
  195. package/dist/generated/instructions/queueConstraintsUpdate.d.ts +73 -0
  196. package/dist/generated/instructions/queueConstraintsUpdate.d.ts.map +1 -0
  197. package/dist/generated/instructions/queueConstraintsUpdate.js +168 -0
  198. package/dist/generated/instructions/queueConstraintsUpdate.js.map +1 -0
  199. package/dist/generated/instructions/queuePolicyUpdate.d.ts +116 -0
  200. package/dist/generated/instructions/queuePolicyUpdate.d.ts.map +1 -0
  201. package/dist/generated/instructions/queuePolicyUpdate.js +173 -0
  202. package/dist/generated/instructions/queuePolicyUpdate.js.map +1 -0
  203. package/dist/generated/instructions/reactivateVault.d.ts +47 -0
  204. package/dist/generated/instructions/reactivateVault.d.ts.map +1 -0
  205. package/dist/generated/instructions/reactivateVault.js +74 -0
  206. package/dist/generated/instructions/reactivateVault.js.map +1 -0
  207. package/dist/generated/instructions/refundEscrow.d.ts +74 -0
  208. package/dist/generated/instructions/refundEscrow.d.ts.map +1 -0
  209. package/dist/generated/instructions/refundEscrow.js +142 -0
  210. package/dist/generated/instructions/refundEscrow.js.map +1 -0
  211. package/dist/generated/instructions/registerAgent.d.ts +55 -0
  212. package/dist/generated/instructions/registerAgent.d.ts.map +1 -0
  213. package/dist/generated/instructions/registerAgent.js +85 -0
  214. package/dist/generated/instructions/registerAgent.js.map +1 -0
  215. package/dist/generated/instructions/revokeAgent.d.ts +49 -0
  216. package/dist/generated/instructions/revokeAgent.d.ts.map +1 -0
  217. package/dist/generated/instructions/revokeAgent.js +81 -0
  218. package/dist/generated/instructions/revokeAgent.js.map +1 -0
  219. package/dist/generated/instructions/settleEscrow.d.ts +80 -0
  220. package/dist/generated/instructions/settleEscrow.d.ts.map +1 -0
  221. package/dist/generated/instructions/settleEscrow.js +173 -0
  222. package/dist/generated/instructions/settleEscrow.js.map +1 -0
  223. package/dist/generated/instructions/syncPositions.d.ts +44 -0
  224. package/dist/generated/instructions/syncPositions.d.ts.map +1 -0
  225. package/dist/generated/instructions/syncPositions.js +72 -0
  226. package/dist/generated/instructions/syncPositions.js.map +1 -0
  227. package/dist/generated/instructions/unpauseAgent.d.ts +44 -0
  228. package/dist/generated/instructions/unpauseAgent.d.ts.map +1 -0
  229. package/dist/generated/instructions/unpauseAgent.js +72 -0
  230. package/dist/generated/instructions/unpauseAgent.js.map +1 -0
  231. package/dist/generated/instructions/updateAgentPermissions.d.ts +68 -0
  232. package/dist/generated/instructions/updateAgentPermissions.d.ts.map +1 -0
  233. package/dist/generated/instructions/updateAgentPermissions.js +139 -0
  234. package/dist/generated/instructions/updateAgentPermissions.js.map +1 -0
  235. package/dist/generated/instructions/updateInstructionConstraints.d.ts +65 -0
  236. package/dist/generated/instructions/updateInstructionConstraints.d.ts.map +1 -0
  237. package/dist/generated/instructions/updateInstructionConstraints.js +131 -0
  238. package/dist/generated/instructions/updateInstructionConstraints.js.map +1 -0
  239. package/dist/generated/instructions/updatePolicy.d.ts +108 -0
  240. package/dist/generated/instructions/updatePolicy.d.ts.map +1 -0
  241. package/dist/generated/instructions/updatePolicy.js +143 -0
  242. package/dist/generated/instructions/updatePolicy.js.map +1 -0
  243. package/dist/generated/instructions/validateAndAuthorize.d.ts +171 -0
  244. package/dist/generated/instructions/validateAndAuthorize.d.ts.map +1 -0
  245. package/dist/generated/instructions/validateAndAuthorize.js +271 -0
  246. package/dist/generated/instructions/validateAndAuthorize.js.map +1 -0
  247. package/dist/generated/instructions/withdrawFunds.d.ts +74 -0
  248. package/dist/generated/instructions/withdrawFunds.d.ts.map +1 -0
  249. package/dist/generated/instructions/withdrawFunds.js +166 -0
  250. package/dist/generated/instructions/withdrawFunds.js.map +1 -0
  251. package/dist/generated/programs/index.d.ts +9 -0
  252. package/dist/generated/programs/index.d.ts.map +1 -0
  253. package/dist/generated/programs/index.js +9 -0
  254. package/dist/generated/programs/index.js.map +1 -0
  255. package/dist/generated/programs/sigil.d.ts +173 -0
  256. package/dist/generated/programs/sigil.d.ts.map +1 -0
  257. package/dist/generated/programs/sigil.js +443 -0
  258. package/dist/generated/programs/sigil.js.map +1 -0
  259. package/dist/generated/types/accountConstraint.d.ts +18 -0
  260. package/dist/generated/types/accountConstraint.d.ts.map +1 -0
  261. package/dist/generated/types/accountConstraint.js +24 -0
  262. package/dist/generated/types/accountConstraint.js.map +1 -0
  263. package/dist/generated/types/actionAuthorized.d.ts +39 -0
  264. package/dist/generated/types/actionAuthorized.d.ts.map +1 -0
  265. package/dist/generated/types/actionAuthorized.js +43 -0
  266. package/dist/generated/types/actionAuthorized.js.map +1 -0
  267. package/dist/generated/types/actionType.d.ts +37 -0
  268. package/dist/generated/types/actionType.d.ts.map +1 -0
  269. package/dist/generated/types/actionType.js +43 -0
  270. package/dist/generated/types/actionType.js.map +1 -0
  271. package/dist/generated/types/agentContributionEntry.d.ts +49 -0
  272. package/dist/generated/types/agentContributionEntry.d.ts.map +1 -0
  273. package/dist/generated/types/agentContributionEntry.js +26 -0
  274. package/dist/generated/types/agentContributionEntry.js.map +1 -0
  275. package/dist/generated/types/agentEntry.d.ts +24 -0
  276. package/dist/generated/types/agentEntry.d.ts.map +1 -0
  277. package/dist/generated/types/agentEntry.js +28 -0
  278. package/dist/generated/types/agentEntry.js.map +1 -0
  279. package/dist/generated/types/agentPausedEvent.d.ts +22 -0
  280. package/dist/generated/types/agentPausedEvent.d.ts.map +1 -0
  281. package/dist/generated/types/agentPausedEvent.js +26 -0
  282. package/dist/generated/types/agentPausedEvent.js.map +1 -0
  283. package/dist/generated/types/agentPermissionsUpdated.d.ts +24 -0
  284. package/dist/generated/types/agentPermissionsUpdated.d.ts.map +1 -0
  285. package/dist/generated/types/agentPermissionsUpdated.js +28 -0
  286. package/dist/generated/types/agentPermissionsUpdated.js.map +1 -0
  287. package/dist/generated/types/agentRegistered.d.ts +26 -0
  288. package/dist/generated/types/agentRegistered.d.ts.map +1 -0
  289. package/dist/generated/types/agentRegistered.js +30 -0
  290. package/dist/generated/types/agentRegistered.js.map +1 -0
  291. package/dist/generated/types/agentRevoked.d.ts +24 -0
  292. package/dist/generated/types/agentRevoked.d.ts.map +1 -0
  293. package/dist/generated/types/agentRevoked.js +28 -0
  294. package/dist/generated/types/agentRevoked.js.map +1 -0
  295. package/dist/generated/types/agentSpendLimitChecked.d.ts +28 -0
  296. package/dist/generated/types/agentSpendLimitChecked.d.ts.map +1 -0
  297. package/dist/generated/types/agentSpendLimitChecked.js +32 -0
  298. package/dist/generated/types/agentSpendLimitChecked.js.map +1 -0
  299. package/dist/generated/types/agentTransferExecuted.d.ts +24 -0
  300. package/dist/generated/types/agentTransferExecuted.d.ts.map +1 -0
  301. package/dist/generated/types/agentTransferExecuted.js +28 -0
  302. package/dist/generated/types/agentTransferExecuted.js.map +1 -0
  303. package/dist/generated/types/agentUnpausedEvent.d.ts +22 -0
  304. package/dist/generated/types/agentUnpausedEvent.d.ts.map +1 -0
  305. package/dist/generated/types/agentUnpausedEvent.js +26 -0
  306. package/dist/generated/types/agentUnpausedEvent.js.map +1 -0
  307. package/dist/generated/types/constraintEntry.d.ts +23 -0
  308. package/dist/generated/types/constraintEntry.d.ts.map +1 -0
  309. package/dist/generated/types/constraintEntry.js +27 -0
  310. package/dist/generated/types/constraintEntry.js.map +1 -0
  311. package/dist/generated/types/constraintOperator.d.ts +22 -0
  312. package/dist/generated/types/constraintOperator.d.ts.map +1 -0
  313. package/dist/generated/types/constraintOperator.js +28 -0
  314. package/dist/generated/types/constraintOperator.js.map +1 -0
  315. package/dist/generated/types/constraintsChangeApplied.d.ts +20 -0
  316. package/dist/generated/types/constraintsChangeApplied.d.ts.map +1 -0
  317. package/dist/generated/types/constraintsChangeApplied.js +24 -0
  318. package/dist/generated/types/constraintsChangeApplied.js.map +1 -0
  319. package/dist/generated/types/constraintsChangeCancelled.d.ts +16 -0
  320. package/dist/generated/types/constraintsChangeCancelled.d.ts.map +1 -0
  321. package/dist/generated/types/constraintsChangeCancelled.js +18 -0
  322. package/dist/generated/types/constraintsChangeCancelled.js.map +1 -0
  323. package/dist/generated/types/constraintsChangeQueued.d.ts +20 -0
  324. package/dist/generated/types/constraintsChangeQueued.d.ts.map +1 -0
  325. package/dist/generated/types/constraintsChangeQueued.js +24 -0
  326. package/dist/generated/types/constraintsChangeQueued.js.map +1 -0
  327. package/dist/generated/types/dataConstraint.d.ts +23 -0
  328. package/dist/generated/types/dataConstraint.d.ts.map +1 -0
  329. package/dist/generated/types/dataConstraint.js +27 -0
  330. package/dist/generated/types/dataConstraint.js.map +1 -0
  331. package/dist/generated/types/delegationRevoked.d.ts +22 -0
  332. package/dist/generated/types/delegationRevoked.d.ts.map +1 -0
  333. package/dist/generated/types/delegationRevoked.js +26 -0
  334. package/dist/generated/types/delegationRevoked.js.map +1 -0
  335. package/dist/generated/types/epochBucket.d.ts +28 -0
  336. package/dist/generated/types/epochBucket.d.ts.map +1 -0
  337. package/dist/generated/types/epochBucket.js +24 -0
  338. package/dist/generated/types/epochBucket.js.map +1 -0
  339. package/dist/generated/types/escrowCreated.d.ts +30 -0
  340. package/dist/generated/types/escrowCreated.d.ts.map +1 -0
  341. package/dist/generated/types/escrowCreated.js +34 -0
  342. package/dist/generated/types/escrowCreated.js.map +1 -0
  343. package/dist/generated/types/escrowRefunded.d.ts +26 -0
  344. package/dist/generated/types/escrowRefunded.d.ts.map +1 -0
  345. package/dist/generated/types/escrowRefunded.js +30 -0
  346. package/dist/generated/types/escrowRefunded.js.map +1 -0
  347. package/dist/generated/types/escrowSettled.d.ts +26 -0
  348. package/dist/generated/types/escrowSettled.d.ts.map +1 -0
  349. package/dist/generated/types/escrowSettled.js +30 -0
  350. package/dist/generated/types/escrowSettled.js.map +1 -0
  351. package/dist/generated/types/escrowStatus.d.ts +18 -0
  352. package/dist/generated/types/escrowStatus.d.ts.map +1 -0
  353. package/dist/generated/types/escrowStatus.js +24 -0
  354. package/dist/generated/types/escrowStatus.js.map +1 -0
  355. package/dist/generated/types/feesCollected.d.ts +38 -0
  356. package/dist/generated/types/feesCollected.d.ts.map +1 -0
  357. package/dist/generated/types/feesCollected.js +42 -0
  358. package/dist/generated/types/feesCollected.js.map +1 -0
  359. package/dist/generated/types/fundsDeposited.d.ts +24 -0
  360. package/dist/generated/types/fundsDeposited.d.ts.map +1 -0
  361. package/dist/generated/types/fundsDeposited.js +28 -0
  362. package/dist/generated/types/fundsDeposited.js.map +1 -0
  363. package/dist/generated/types/fundsWithdrawn.d.ts +26 -0
  364. package/dist/generated/types/fundsWithdrawn.d.ts.map +1 -0
  365. package/dist/generated/types/fundsWithdrawn.js +30 -0
  366. package/dist/generated/types/fundsWithdrawn.js.map +1 -0
  367. package/dist/generated/types/index.d.ts +50 -0
  368. package/dist/generated/types/index.d.ts.map +1 -0
  369. package/dist/generated/types/index.js +50 -0
  370. package/dist/generated/types/index.js.map +1 -0
  371. package/dist/generated/types/instructionConstraintsClosed.d.ts +20 -0
  372. package/dist/generated/types/instructionConstraintsClosed.d.ts.map +1 -0
  373. package/dist/generated/types/instructionConstraintsClosed.js +24 -0
  374. package/dist/generated/types/instructionConstraintsClosed.js.map +1 -0
  375. package/dist/generated/types/instructionConstraintsCreated.d.ts +24 -0
  376. package/dist/generated/types/instructionConstraintsCreated.d.ts.map +1 -0
  377. package/dist/generated/types/instructionConstraintsCreated.js +28 -0
  378. package/dist/generated/types/instructionConstraintsCreated.js.map +1 -0
  379. package/dist/generated/types/instructionConstraintsUpdated.d.ts +24 -0
  380. package/dist/generated/types/instructionConstraintsUpdated.d.ts.map +1 -0
  381. package/dist/generated/types/instructionConstraintsUpdated.js +28 -0
  382. package/dist/generated/types/instructionConstraintsUpdated.js.map +1 -0
  383. package/dist/generated/types/policyChangeApplied.d.ts +20 -0
  384. package/dist/generated/types/policyChangeApplied.d.ts.map +1 -0
  385. package/dist/generated/types/policyChangeApplied.js +24 -0
  386. package/dist/generated/types/policyChangeApplied.js.map +1 -0
  387. package/dist/generated/types/policyChangeCancelled.d.ts +16 -0
  388. package/dist/generated/types/policyChangeCancelled.d.ts.map +1 -0
  389. package/dist/generated/types/policyChangeCancelled.js +18 -0
  390. package/dist/generated/types/policyChangeCancelled.js.map +1 -0
  391. package/dist/generated/types/policyChangeQueued.d.ts +20 -0
  392. package/dist/generated/types/policyChangeQueued.d.ts.map +1 -0
  393. package/dist/generated/types/policyChangeQueued.js +24 -0
  394. package/dist/generated/types/policyChangeQueued.js.map +1 -0
  395. package/dist/generated/types/policyUpdated.d.ts +34 -0
  396. package/dist/generated/types/policyUpdated.d.ts.map +1 -0
  397. package/dist/generated/types/policyUpdated.js +38 -0
  398. package/dist/generated/types/policyUpdated.js.map +1 -0
  399. package/dist/generated/types/positionsSynced.d.ts +24 -0
  400. package/dist/generated/types/positionsSynced.d.ts.map +1 -0
  401. package/dist/generated/types/positionsSynced.js +28 -0
  402. package/dist/generated/types/positionsSynced.js.map +1 -0
  403. package/dist/generated/types/protocolSpendCounter.d.ts +33 -0
  404. package/dist/generated/types/protocolSpendCounter.d.ts.map +1 -0
  405. package/dist/generated/types/protocolSpendCounter.js +26 -0
  406. package/dist/generated/types/protocolSpendCounter.js.map +1 -0
  407. package/dist/generated/types/sessionFinalized.d.ts +32 -0
  408. package/dist/generated/types/sessionFinalized.d.ts.map +1 -0
  409. package/dist/generated/types/sessionFinalized.js +36 -0
  410. package/dist/generated/types/sessionFinalized.js.map +1 -0
  411. package/dist/generated/types/vaultClosed.d.ts +22 -0
  412. package/dist/generated/types/vaultClosed.d.ts.map +1 -0
  413. package/dist/generated/types/vaultClosed.js +26 -0
  414. package/dist/generated/types/vaultClosed.js.map +1 -0
  415. package/dist/generated/types/vaultCreated.d.ts +24 -0
  416. package/dist/generated/types/vaultCreated.d.ts.map +1 -0
  417. package/dist/generated/types/vaultCreated.js +28 -0
  418. package/dist/generated/types/vaultCreated.js.map +1 -0
  419. package/dist/generated/types/vaultFrozen.d.ts +24 -0
  420. package/dist/generated/types/vaultFrozen.d.ts.map +1 -0
  421. package/dist/generated/types/vaultFrozen.js +28 -0
  422. package/dist/generated/types/vaultFrozen.js.map +1 -0
  423. package/dist/generated/types/vaultReactivated.d.ts +24 -0
  424. package/dist/generated/types/vaultReactivated.d.ts.map +1 -0
  425. package/dist/generated/types/vaultReactivated.js +28 -0
  426. package/dist/generated/types/vaultReactivated.js.map +1 -0
  427. package/dist/generated/types/vaultStatus.d.ts +19 -0
  428. package/dist/generated/types/vaultStatus.d.ts.map +1 -0
  429. package/dist/generated/types/vaultStatus.js +25 -0
  430. package/dist/generated/types/vaultStatus.js.map +1 -0
  431. package/dist/index.d.ts +74 -0
  432. package/dist/index.d.ts.map +1 -0
  433. package/dist/index.js +113 -0
  434. package/dist/index.js.map +1 -0
  435. package/dist/inscribe.d.ts +134 -0
  436. package/dist/inscribe.d.ts.map +1 -0
  437. package/dist/inscribe.js +149 -0
  438. package/dist/inscribe.js.map +1 -0
  439. package/dist/inspector.d.ts +85 -0
  440. package/dist/inspector.d.ts.map +1 -0
  441. package/dist/inspector.js +188 -0
  442. package/dist/inspector.js.map +1 -0
  443. package/dist/math-utils.d.ts +15 -0
  444. package/dist/math-utils.d.ts.map +1 -0
  445. package/dist/math-utils.js +29 -0
  446. package/dist/math-utils.js.map +1 -0
  447. package/dist/owner-transaction.d.ts +42 -0
  448. package/dist/owner-transaction.d.ts.map +1 -0
  449. package/dist/owner-transaction.js +71 -0
  450. package/dist/owner-transaction.js.map +1 -0
  451. package/dist/policies.d.ts +70 -0
  452. package/dist/policies.d.ts.map +1 -0
  453. package/dist/policies.js +87 -0
  454. package/dist/policies.js.map +1 -0
  455. package/dist/portfolio-analytics.d.ts +82 -0
  456. package/dist/portfolio-analytics.d.ts.map +1 -0
  457. package/dist/portfolio-analytics.js +232 -0
  458. package/dist/portfolio-analytics.js.map +1 -0
  459. package/dist/presets.d.ts +108 -0
  460. package/dist/presets.d.ts.map +1 -0
  461. package/dist/presets.js +110 -0
  462. package/dist/presets.js.map +1 -0
  463. package/dist/priority-fees.d.ts +49 -0
  464. package/dist/priority-fees.d.ts.map +1 -0
  465. package/dist/priority-fees.js +175 -0
  466. package/dist/priority-fees.js.map +1 -0
  467. package/dist/protocol-analytics.d.ts +35 -0
  468. package/dist/protocol-analytics.d.ts.map +1 -0
  469. package/dist/protocol-analytics.js +64 -0
  470. package/dist/protocol-analytics.js.map +1 -0
  471. package/dist/protocol-names.d.ts +9 -0
  472. package/dist/protocol-names.d.ts.map +1 -0
  473. package/dist/protocol-names.js +18 -0
  474. package/dist/protocol-names.js.map +1 -0
  475. package/dist/protocol-resolver.d.ts +54 -0
  476. package/dist/protocol-resolver.d.ts.map +1 -0
  477. package/dist/protocol-resolver.js +123 -0
  478. package/dist/protocol-resolver.js.map +1 -0
  479. package/dist/resolve-accounts.d.ts +38 -0
  480. package/dist/resolve-accounts.d.ts.map +1 -0
  481. package/dist/resolve-accounts.js +120 -0
  482. package/dist/resolve-accounts.js.map +1 -0
  483. package/dist/rpc-helpers.d.ts +50 -0
  484. package/dist/rpc-helpers.d.ts.map +1 -0
  485. package/dist/rpc-helpers.js +119 -0
  486. package/dist/rpc-helpers.js.map +1 -0
  487. package/dist/seal.d.ts +211 -0
  488. package/dist/seal.d.ts.map +1 -0
  489. package/dist/seal.js +569 -0
  490. package/dist/seal.js.map +1 -0
  491. package/dist/security-analytics.d.ts +85 -0
  492. package/dist/security-analytics.d.ts.map +1 -0
  493. package/dist/security-analytics.js +510 -0
  494. package/dist/security-analytics.js.map +1 -0
  495. package/dist/shield.d.ts +235 -0
  496. package/dist/shield.d.ts.map +1 -0
  497. package/dist/shield.js +701 -0
  498. package/dist/shield.js.map +1 -0
  499. package/dist/simulation.d.ts +111 -0
  500. package/dist/simulation.d.ts.map +1 -0
  501. package/dist/simulation.js +514 -0
  502. package/dist/simulation.js.map +1 -0
  503. package/dist/spending-analytics.d.ts +91 -0
  504. package/dist/spending-analytics.d.ts.map +1 -0
  505. package/dist/spending-analytics.js +217 -0
  506. package/dist/spending-analytics.js.map +1 -0
  507. package/dist/state-resolver.d.ts +173 -0
  508. package/dist/state-resolver.d.ts.map +1 -0
  509. package/dist/state-resolver.js +660 -0
  510. package/dist/state-resolver.js.map +1 -0
  511. package/dist/tee/cache.d.ts +28 -0
  512. package/dist/tee/cache.d.ts.map +1 -0
  513. package/dist/tee/cache.js +75 -0
  514. package/dist/tee/cache.js.map +1 -0
  515. package/dist/tee/index.d.ts +9 -0
  516. package/dist/tee/index.d.ts.map +1 -0
  517. package/dist/tee/index.js +9 -0
  518. package/dist/tee/index.js.map +1 -0
  519. package/dist/tee/nitro-root.d.ts +11 -0
  520. package/dist/tee/nitro-root.d.ts.map +1 -0
  521. package/dist/tee/nitro-root.js +24 -0
  522. package/dist/tee/nitro-root.js.map +1 -0
  523. package/dist/tee/providers/crossmint.d.ts +12 -0
  524. package/dist/tee/providers/crossmint.d.ts.map +1 -0
  525. package/dist/tee/providers/crossmint.js +73 -0
  526. package/dist/tee/providers/crossmint.js.map +1 -0
  527. package/dist/tee/providers/privy.d.ts +12 -0
  528. package/dist/tee/providers/privy.d.ts.map +1 -0
  529. package/dist/tee/providers/privy.js +73 -0
  530. package/dist/tee/providers/privy.js.map +1 -0
  531. package/dist/tee/providers/turnkey.d.ts +34 -0
  532. package/dist/tee/providers/turnkey.d.ts.map +1 -0
  533. package/dist/tee/providers/turnkey.js +401 -0
  534. package/dist/tee/providers/turnkey.js.map +1 -0
  535. package/dist/tee/types.d.ts +124 -0
  536. package/dist/tee/types.d.ts.map +1 -0
  537. package/dist/tee/types.js +51 -0
  538. package/dist/tee/types.js.map +1 -0
  539. package/dist/tee/verify.d.ts +34 -0
  540. package/dist/tee/verify.d.ts.map +1 -0
  541. package/dist/tee/verify.js +177 -0
  542. package/dist/tee/verify.js.map +1 -0
  543. package/dist/tee/wallet-types.d.ts +61 -0
  544. package/dist/tee/wallet-types.d.ts.map +1 -0
  545. package/dist/tee/wallet-types.js +42 -0
  546. package/dist/tee/wallet-types.js.map +1 -0
  547. package/dist/testing/devnet.d.ts +64 -0
  548. package/dist/testing/devnet.d.ts.map +1 -0
  549. package/dist/testing/devnet.js +222 -0
  550. package/dist/testing/devnet.js.map +1 -0
  551. package/dist/testing/index.d.ts +3 -0
  552. package/dist/testing/index.d.ts.map +1 -0
  553. package/dist/testing/index.js +9 -0
  554. package/dist/testing/index.js.map +1 -0
  555. package/dist/testing/mock-rpc.d.ts +31 -0
  556. package/dist/testing/mock-rpc.d.ts.map +1 -0
  557. package/dist/testing/mock-rpc.js +50 -0
  558. package/dist/testing/mock-rpc.js.map +1 -0
  559. package/dist/testing/mock-state.d.ts +35 -0
  560. package/dist/testing/mock-state.d.ts.map +1 -0
  561. package/dist/testing/mock-state.js +86 -0
  562. package/dist/testing/mock-state.js.map +1 -0
  563. package/dist/tokens.d.ts +35 -0
  564. package/dist/tokens.d.ts.map +1 -0
  565. package/dist/tokens.js +157 -0
  566. package/dist/tokens.js.map +1 -0
  567. package/dist/transaction-executor.d.ts +116 -0
  568. package/dist/transaction-executor.d.ts.map +1 -0
  569. package/dist/transaction-executor.js +165 -0
  570. package/dist/transaction-executor.js.map +1 -0
  571. package/dist/types.d.ts +102 -0
  572. package/dist/types.d.ts.map +1 -0
  573. package/dist/types.js +216 -0
  574. package/dist/types.js.map +1 -0
  575. package/dist/vault-analytics.d.ts +83 -0
  576. package/dist/vault-analytics.d.ts.map +1 -0
  577. package/dist/vault-analytics.js +175 -0
  578. package/dist/vault-analytics.js.map +1 -0
  579. package/dist/velocity-tracker.d.ts +79 -0
  580. package/dist/velocity-tracker.d.ts.map +1 -0
  581. package/dist/velocity-tracker.js +183 -0
  582. package/dist/velocity-tracker.js.map +1 -0
  583. package/dist/x402/amount-guard.d.ts +26 -0
  584. package/dist/x402/amount-guard.d.ts.map +1 -0
  585. package/dist/x402/amount-guard.js +80 -0
  586. package/dist/x402/amount-guard.js.map +1 -0
  587. package/dist/x402/audit-trail.d.ts +26 -0
  588. package/dist/x402/audit-trail.d.ts.map +1 -0
  589. package/dist/x402/audit-trail.js +32 -0
  590. package/dist/x402/audit-trail.js.map +1 -0
  591. package/dist/x402/codec.d.ts +26 -0
  592. package/dist/x402/codec.d.ts.map +1 -0
  593. package/dist/x402/codec.js +95 -0
  594. package/dist/x402/codec.js.map +1 -0
  595. package/dist/x402/errors.d.ts +34 -0
  596. package/dist/x402/errors.d.ts.map +1 -0
  597. package/dist/x402/errors.js +53 -0
  598. package/dist/x402/errors.js.map +1 -0
  599. package/dist/x402/facilitator-verify.d.ts +24 -0
  600. package/dist/x402/facilitator-verify.d.ts.map +1 -0
  601. package/dist/x402/facilitator-verify.js +74 -0
  602. package/dist/x402/facilitator-verify.js.map +1 -0
  603. package/dist/x402/index.d.ts +14 -0
  604. package/dist/x402/index.d.ts.map +1 -0
  605. package/dist/x402/index.js +23 -0
  606. package/dist/x402/index.js.map +1 -0
  607. package/dist/x402/nonce-tracker.d.ts +65 -0
  608. package/dist/x402/nonce-tracker.d.ts.map +1 -0
  609. package/dist/x402/nonce-tracker.js +123 -0
  610. package/dist/x402/nonce-tracker.js.map +1 -0
  611. package/dist/x402/payment-selector.d.ts +20 -0
  612. package/dist/x402/payment-selector.d.ts.map +1 -0
  613. package/dist/x402/payment-selector.js +49 -0
  614. package/dist/x402/payment-selector.js.map +1 -0
  615. package/dist/x402/policy-bridge.d.ts +23 -0
  616. package/dist/x402/policy-bridge.d.ts.map +1 -0
  617. package/dist/x402/policy-bridge.js +67 -0
  618. package/dist/x402/policy-bridge.js.map +1 -0
  619. package/dist/x402/shielded-fetch.d.ts +46 -0
  620. package/dist/x402/shielded-fetch.d.ts.map +1 -0
  621. package/dist/x402/shielded-fetch.js +342 -0
  622. package/dist/x402/shielded-fetch.js.map +1 -0
  623. package/dist/x402/transfer-builder.d.ts +43 -0
  624. package/dist/x402/transfer-builder.d.ts.map +1 -0
  625. package/dist/x402/transfer-builder.js +126 -0
  626. package/dist/x402/transfer-builder.js.map +1 -0
  627. package/dist/x402/types.d.ts +109 -0
  628. package/dist/x402/types.d.ts.map +1 -0
  629. package/dist/x402/types.js +8 -0
  630. package/dist/x402/types.js.map +1 -0
  631. package/package.json +98 -0
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Vault analytics — health assessment and one-call summary.
3
+ *
4
+ * getVaultHealth(): Pure function (no RPC) — derives health, cap metrics,
5
+ * security checks from already-resolved vault state.
6
+ *
7
+ * getVaultSummary(): Async function — parallel RPC calls for state, P&L,
8
+ * balances, pending policy. Returns everything a vault detail page needs.
9
+ */
10
+ import { VaultStatus } from "./generated/types/vaultStatus.js";
11
+ import { resolveVaultStateForOwner, getPendingPolicyForVault, } from "./state-resolver.js";
12
+ import { getVaultPnL, getVaultTokenBalances, } from "./balance-tracker.js";
13
+ import { getSpendingVelocity } from "./spending-analytics.js";
14
+ import { FULL_PERMISSIONS, PROTOCOL_MODE_ALLOWLIST, EPOCH_DURATION, NUM_EPOCHS, } from "./types.js";
15
+ // ─── getVaultHealth ──────────────────────────────────────────────────────────
16
+ /**
17
+ * Single-call vault health assessment. Pure function — no RPC.
18
+ *
19
+ * Derives isHealthy, capUtilization, capResetsIn, security checks from
20
+ * already-resolved vault state. The dashboard vault card renders this directly.
21
+ */
22
+ export function getVaultHealth(state, nowUnix) {
23
+ const { vault, policy, tracker, globalBudget, constraints } = state;
24
+ // VaultStatus is a numeric enum (Active=0, Frozen=1, Closed=2).
25
+ // Use reverse mapping for display string.
26
+ const STATUS_NAMES = {
27
+ [VaultStatus.Active]: "Active",
28
+ [VaultStatus.Frozen]: "Frozen",
29
+ [VaultStatus.Closed]: "Closed",
30
+ };
31
+ const status = STATUS_NAMES[vault.status] ?? "Closed";
32
+ const agentCount = vault.agents.length;
33
+ const pausedAgentCount = vault.agents.filter((a) => a.paused).length;
34
+ // Cap utilization
35
+ const capUtilization = globalBudget.cap > 0n
36
+ ? Number((globalBudget.spent24h * 10000n) / globalBudget.cap) / 100
37
+ : 0;
38
+ // Cap reset time: when does the oldest epoch in the window roll off?
39
+ let capResetsIn = 0;
40
+ if (tracker) {
41
+ const epochDuration = BigInt(EPOCH_DURATION);
42
+ const currentEpoch = nowUnix / epochDuration;
43
+ let oldestEpoch = currentEpoch;
44
+ for (const bucket of tracker.buckets) {
45
+ if (bucket.usdAmount > 0n && bucket.epochId > 0n) {
46
+ if (bucket.epochId >= currentEpoch - BigInt(NUM_EPOCHS) &&
47
+ bucket.epochId < oldestEpoch) {
48
+ oldestEpoch = bucket.epochId;
49
+ }
50
+ }
51
+ }
52
+ const expiresAt = (oldestEpoch + BigInt(NUM_EPOCHS)) * epochDuration;
53
+ capResetsIn = Math.max(0, Number(expiresAt - nowUnix));
54
+ }
55
+ // Velocity for time-to-cap
56
+ const velocity = getSpendingVelocity(tracker, nowUnix, globalBudget);
57
+ // Security checks
58
+ const securityChecks = [
59
+ {
60
+ id: "no-full-perms",
61
+ label: "No agent has full permissions",
62
+ passed: !vault.agents.some((a) => a.permissions === FULL_PERMISSIONS),
63
+ severity: "critical",
64
+ },
65
+ {
66
+ id: "cap-configured",
67
+ label: "Daily spending cap is configured",
68
+ passed: policy.dailySpendingCapUsd > 0n,
69
+ severity: "critical",
70
+ },
71
+ {
72
+ id: "agent-limits",
73
+ label: "All agents have spending limits",
74
+ passed: vault.agents.every((a) => a.spendingLimitUsd > 0n),
75
+ severity: "warning",
76
+ },
77
+ {
78
+ id: "protocol-allowlist",
79
+ label: "Protocol mode is allowlist",
80
+ passed: policy.protocolMode === PROTOCOL_MODE_ALLOWLIST,
81
+ severity: "warning",
82
+ },
83
+ {
84
+ id: "timelock-enabled",
85
+ label: "Policy timelock is enabled",
86
+ passed: policy.timelockDuration > 0n,
87
+ severity: "warning",
88
+ },
89
+ {
90
+ id: "slippage-reasonable",
91
+ label: "Max slippage below 10%",
92
+ passed: policy.maxSlippageBps < 1000,
93
+ severity: "warning",
94
+ },
95
+ {
96
+ id: "constraints-configured",
97
+ label: "Instruction constraints are set",
98
+ passed: constraints !== null,
99
+ severity: "info",
100
+ },
101
+ ];
102
+ const criticalFailures = securityChecks.filter((c) => c.severity === "critical" && !c.passed);
103
+ const isHealthy = status === "Active" &&
104
+ agentCount > 0 &&
105
+ pausedAgentCount < agentCount &&
106
+ capUtilization < 95 &&
107
+ criticalFailures.length === 0;
108
+ return {
109
+ status,
110
+ isHealthy,
111
+ agentCount,
112
+ pausedAgentCount,
113
+ openPositions: vault.openPositions,
114
+ activeEscrowCount: vault.activeEscrowCount,
115
+ capUtilization,
116
+ capRemaining: globalBudget.remaining,
117
+ capResetsIn,
118
+ timeToCapAtCurrentRate: velocity.timeToCapSeconds,
119
+ hasConstraints: constraints !== null,
120
+ hasTimelock: policy.timelockDuration > 0n,
121
+ timelockDuration: Number(policy.timelockDuration),
122
+ hasPendingPolicyChange: false, // Overridden by getVaultSummary()
123
+ lastActivityTimestamp: tracker && tracker.lastWriteEpoch > 0n
124
+ ? Number(tracker.lastWriteEpoch * BigInt(EPOCH_DURATION))
125
+ : 0,
126
+ securityChecks,
127
+ };
128
+ }
129
+ // ─── getVaultSummary ─────────────────────────────────────────────────────────
130
+ /**
131
+ * Complete vault summary in one call. Parallel RPC for state, P&L, balances,
132
+ * pending policy. Returns everything the vault detail page header needs.
133
+ */
134
+ export async function getVaultSummary(rpc, vault, network = "mainnet-beta") {
135
+ const [state, pnl, tokenBalances, pendingPolicy] = await Promise.all([
136
+ resolveVaultStateForOwner(rpc, vault, undefined, network),
137
+ getVaultPnL(rpc, vault, network),
138
+ getVaultTokenBalances(rpc, vault, network),
139
+ getPendingPolicyForVault(rpc, vault).catch(() => null),
140
+ ]);
141
+ const nowUnix = state.resolvedAtTimestamp;
142
+ const health = getVaultHealth(state, nowUnix);
143
+ health.hasPendingPolicyChange = pendingPolicy !== null;
144
+ const v = state.vault;
145
+ const createdAtSec = Number(v.createdAt);
146
+ const nowSec = Number(nowUnix);
147
+ const ageInDays = Math.max(1, Math.floor((nowSec - createdAtSec) / 86400));
148
+ const stats = {
149
+ totalTransactions: v.totalTransactions,
150
+ totalVolume: v.totalVolume,
151
+ totalFeesCollected: v.totalFeesCollected,
152
+ totalDeposited: v.totalDepositedUsd,
153
+ totalWithdrawn: v.totalWithdrawnUsd,
154
+ createdAt: v.createdAt,
155
+ ageInDays,
156
+ avgDailyVolume: ageInDays > 0 ? v.totalVolume / BigInt(ageInDays) : 0n,
157
+ avgTransactionSize: v.totalTransactions > 0n ? v.totalVolume / v.totalTransactions : 0n,
158
+ feeRate: v.totalVolume > 0n
159
+ ? Number((v.totalFeesCollected * 10000n) / v.totalVolume)
160
+ : 0,
161
+ };
162
+ const totalValueUsd = state.stablecoinBalances.usdc + state.stablecoinBalances.usdt;
163
+ return {
164
+ address: vault,
165
+ owner: v.owner,
166
+ vaultId: v.vaultId,
167
+ health,
168
+ pnl,
169
+ tokenBalances,
170
+ totalValueUsd,
171
+ state,
172
+ stats,
173
+ };
174
+ }
175
+ //# sourceMappingURL=vault-analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault-analytics.js","sourceRoot":"","sources":["../src/vault-analytics.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EACL,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,WAAW,EACX,qBAAqB,GAGtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,UAAU,GAEX,MAAM,YAAY,CAAC;AAiEpB,gFAAgF;AAEhF;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAsD,EAAE,OAAe;IACpG,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAEpE,gEAAgE;IAChE,0CAA0C;IAC1C,MAAM,YAAY,GAA0C;QAC1D,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ;QAC9B,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ;QAC9B,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ;KAC/B,CAAC;IACF,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,MAAgB,CAAC,IAAI,QAAQ,CAAC;IAChE,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACvC,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IAErE,kBAAkB;IAClB,MAAM,cAAc,GAClB,YAAY,CAAC,GAAG,GAAG,EAAE;QACnB,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG;QACnE,CAAC,CAAC,CAAC,CAAC;IAER,qEAAqE;IACrE,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;QAC7C,MAAM,YAAY,GAAG,OAAO,GAAG,aAAa,CAAC;QAC7C,IAAI,WAAW,GAAG,YAAY,CAAC;QAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,MAAM,CAAC,SAAS,GAAG,EAAE,IAAI,MAAM,CAAC,OAAO,GAAG,EAAE,EAAE,CAAC;gBACjD,IACE,MAAM,CAAC,OAAO,IAAI,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC;oBACnD,MAAM,CAAC,OAAO,GAAG,WAAW,EAC5B,CAAC;oBACD,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,SAAS,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,aAAa,CAAC;QACrE,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAErE,kBAAkB;IAClB,MAAM,cAAc,GAAyB;QAC3C;YACE,EAAE,EAAE,eAAe;YACnB,KAAK,EAAE,+BAA+B;YACtC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,gBAAgB,CAAC;YACrE,QAAQ,EAAE,UAAU;SACrB;QACD;YACE,EAAE,EAAE,gBAAgB;YACpB,KAAK,EAAE,kCAAkC;YACzC,MAAM,EAAE,MAAM,CAAC,mBAAmB,GAAG,EAAE;YACvC,QAAQ,EAAE,UAAU;SACrB;QACD;YACE,EAAE,EAAE,cAAc;YAClB,KAAK,EAAE,iCAAiC;YACxC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,GAAG,EAAE,CAAC;YAC1D,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,EAAE,EAAE,oBAAoB;YACxB,KAAK,EAAE,4BAA4B;YACnC,MAAM,EAAE,MAAM,CAAC,YAAY,KAAK,uBAAuB;YACvD,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,EAAE,EAAE,kBAAkB;YACtB,KAAK,EAAE,4BAA4B;YACnC,MAAM,EAAE,MAAM,CAAC,gBAAgB,GAAG,EAAE;YACpC,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,EAAE,EAAE,qBAAqB;YACzB,KAAK,EAAE,wBAAwB;YAC/B,MAAM,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI;YACpC,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,EAAE,EAAE,wBAAwB;YAC5B,KAAK,EAAE,iCAAiC;YACxC,MAAM,EAAE,WAAW,KAAK,IAAI;YAC5B,QAAQ,EAAE,MAAM;SACjB;KACF,CAAC;IAEF,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,MAAM,CAC9C,CAAC;IAEF,MAAM,SAAS,GACb,MAAM,KAAK,QAAQ;QACnB,UAAU,GAAG,CAAC;QACd,gBAAgB,GAAG,UAAU;QAC7B,cAAc,GAAG,EAAE;QACnB,gBAAgB,CAAC,MAAM,KAAK,CAAC,CAAC;IAEhC,OAAO;QACL,MAAM;QACN,SAAS;QACT,UAAU;QACV,gBAAgB;QAChB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,cAAc;QACd,YAAY,EAAE,YAAY,CAAC,SAAS;QACpC,WAAW;QACX,sBAAsB,EAAE,QAAQ,CAAC,gBAAgB;QACjD,cAAc,EAAE,WAAW,KAAK,IAAI;QACpC,WAAW,EAAE,MAAM,CAAC,gBAAgB,GAAG,EAAE;QACzC,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACjD,sBAAsB,EAAE,KAAK,EAAE,kCAAkC;QACjE,qBAAqB,EACnB,OAAO,IAAI,OAAO,CAAC,cAAc,GAAG,EAAE;YACpC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;QACP,cAAc;KACf,CAAC;AACJ,CAAC;AAED,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAAsB,EACtB,KAAc,EACd,UAAmB,cAAc;IAEjC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACnE,yBAAyB,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC;QACzD,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC;QAChC,qBAAqB,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC;QAC1C,wBAAwB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;KACvD,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,KAAK,CAAC,mBAAmB,CAAC;IAC1C,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,CAAC,sBAAsB,GAAG,aAAa,KAAK,IAAI,CAAC;IAEvD,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IACtB,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAE3E,MAAM,KAAK,GAAe;QACxB,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;QACtC,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,kBAAkB,EAAE,CAAC,CAAC,kBAAkB;QACxC,cAAc,EAAE,CAAC,CAAC,iBAAiB;QACnC,cAAc,EAAE,CAAC,CAAC,iBAAiB;QACnC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,SAAS;QACT,cAAc,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;QACtE,kBAAkB,EAChB,CAAC,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;QACrE,OAAO,EACL,CAAC,CAAC,WAAW,GAAG,EAAE;YAChB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;YACzD,CAAC,CAAC,CAAC;KACR,CAAC;IAEF,MAAM,aAAa,GACjB,KAAK,CAAC,kBAAkB,CAAC,IAAI,GAAG,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC;IAEhE,OAAO;QACL,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,MAAM;QACN,GAAG;QACH,aAAa;QACb,aAAa;QACb,KAAK;QACL,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * VelocityTracker — Kit-native Agent Manipulation Defense
3
+ *
4
+ * Monitors transaction velocity (TX/min, TX/hr, USD/hr) and detects
5
+ * rapid-fire transaction patterns that may indicate agent manipulation.
6
+ *
7
+ * Integrates with ShieldState for unified spending tracking.
8
+ */
9
+ import type { Address } from "@solana/kit";
10
+ import type { ShieldState } from "./shield.js";
11
+ export interface SpendStatus {
12
+ globalSpent24h: bigint;
13
+ globalCap: bigint | null;
14
+ globalRemaining: bigint | null;
15
+ agentSpent24h: bigint | null;
16
+ agentCap: bigint | null;
17
+ source: "on-chain" | "client-side";
18
+ }
19
+ export interface VelocityConfig {
20
+ /** Max transactions per minute (default: 10) */
21
+ maxTxPerMinute?: number;
22
+ /** Max transactions per hour (default: 60) */
23
+ maxTxPerHour?: number;
24
+ /** Max USD spend per hour in base units (default: 500_000_000n = $500) */
25
+ maxUsdPerHour?: bigint;
26
+ /** Rapid-fire detection: count transactions within windowMs */
27
+ rapidFireThreshold?: {
28
+ count: number;
29
+ windowMs: number;
30
+ };
31
+ /** Cooldown period in ms after velocity breach (default: 30_000 = 30s) */
32
+ cooldownMs?: number;
33
+ }
34
+ export declare class VelocityTracker {
35
+ private readonly state;
36
+ private readonly config;
37
+ private cooldownUntil;
38
+ private txTimestamps;
39
+ constructor(state: ShieldState, config?: VelocityConfig);
40
+ /**
41
+ * Check velocity constraints. Throws ShieldDeniedError (code 7022) on breach.
42
+ *
43
+ * @param signerAddress - The signer to check
44
+ * @param dryRun - S-6: When true, checks without incrementing the rapid-fire counter.
45
+ * Useful for precheck queries that shouldn't pollute velocity state.
46
+ */
47
+ check(signerAddress: Address, dryRun?: boolean): void;
48
+ /**
49
+ * Record a transaction after successful send.
50
+ */
51
+ recordTransaction(usdAmount?: bigint): void;
52
+ /**
53
+ * Whether the tracker is in a cooldown period after a velocity breach.
54
+ */
55
+ isInCooldown(): boolean;
56
+ /**
57
+ * Get remaining cooldown time in ms. Returns 0 if not in cooldown.
58
+ */
59
+ getCooldownRemainingMs(): number;
60
+ /**
61
+ * Reset the tracker (clears cooldown and timestamps).
62
+ */
63
+ reset(): void;
64
+ /**
65
+ * Get current spend status. Returns on-chain data when ShieldState is synced.
66
+ */
67
+ getSpendStatus(): SpendStatus;
68
+ /**
69
+ * Get current velocity stats.
70
+ */
71
+ getStats(): {
72
+ txPerMinute: number;
73
+ txPerHour: number;
74
+ usdPerHour: bigint;
75
+ inCooldown: boolean;
76
+ cooldownRemainingMs: number;
77
+ };
78
+ }
79
+ //# sourceMappingURL=velocity-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"velocity-tracker.d.ts","sourceRoot":"","sources":["../src/velocity-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,UAAU,GAAG,aAAa,CAAC;CACpC;AAID,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAYD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,YAAY,CAAgB;gBAExB,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,cAAc;IAYvD;;;;;;OAMG;IACH,KAAK,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,UAAQ,GAAG,IAAI;IAuFnD;;OAEG;IACH,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAO3C;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,sBAAsB,IAAI,MAAM;IAKhC;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,cAAc,IAAI,WAAW;IAuB7B;;OAEG;IACH,QAAQ,IAAI;QACV,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,OAAO,CAAC;QACpB,mBAAmB,EAAE,MAAM,CAAC;KAC7B;CASF"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * VelocityTracker — Kit-native Agent Manipulation Defense
3
+ *
4
+ * Monitors transaction velocity (TX/min, TX/hr, USD/hr) and detects
5
+ * rapid-fire transaction patterns that may indicate agent manipulation.
6
+ *
7
+ * Integrates with ShieldState for unified spending tracking.
8
+ */
9
+ import { ShieldDeniedError } from "./shield.js";
10
+ const DEFAULT_CONFIG = {
11
+ maxTxPerMinute: 10,
12
+ maxTxPerHour: 60,
13
+ maxUsdPerHour: 500000000n,
14
+ rapidFireThreshold: { count: 5, windowMs: 10_000 },
15
+ cooldownMs: 30_000,
16
+ };
17
+ // ─── VelocityTracker ────────────────────────────────────────────────────────
18
+ export class VelocityTracker {
19
+ state;
20
+ config;
21
+ cooldownUntil = 0;
22
+ txTimestamps = [];
23
+ constructor(state, config) {
24
+ this.state = state;
25
+ this.config = {
26
+ maxTxPerMinute: config?.maxTxPerMinute ?? DEFAULT_CONFIG.maxTxPerMinute,
27
+ maxTxPerHour: config?.maxTxPerHour ?? DEFAULT_CONFIG.maxTxPerHour,
28
+ maxUsdPerHour: config?.maxUsdPerHour ?? DEFAULT_CONFIG.maxUsdPerHour,
29
+ rapidFireThreshold: config?.rapidFireThreshold ?? DEFAULT_CONFIG.rapidFireThreshold,
30
+ cooldownMs: config?.cooldownMs ?? DEFAULT_CONFIG.cooldownMs,
31
+ };
32
+ }
33
+ /**
34
+ * Check velocity constraints. Throws ShieldDeniedError (code 7022) on breach.
35
+ *
36
+ * @param signerAddress - The signer to check
37
+ * @param dryRun - S-6: When true, checks without incrementing the rapid-fire counter.
38
+ * Useful for precheck queries that shouldn't pollute velocity state.
39
+ */
40
+ check(signerAddress, dryRun = false) {
41
+ const violations = [];
42
+ // 0. Cooldown check
43
+ if (this.isInCooldown()) {
44
+ const remainingMs = this.cooldownUntil - Date.now();
45
+ throw new ShieldDeniedError([
46
+ {
47
+ rule: "velocity_cooldown",
48
+ message: `Velocity cooldown active — ${Math.ceil(remainingMs / 1000)}s remaining`,
49
+ suggestion: "Wait for the cooldown period to expire",
50
+ },
51
+ ]);
52
+ }
53
+ // 1. TX/minute check
54
+ const txPerMinute = this.state.getTransactionCountInWindow(60_000);
55
+ if (txPerMinute >= this.config.maxTxPerMinute) {
56
+ violations.push({
57
+ rule: "velocity_tx_per_minute",
58
+ message: `Transaction rate ${txPerMinute}/${this.config.maxTxPerMinute} per minute exceeded`,
59
+ suggestion: "Wait before sending more transactions",
60
+ });
61
+ }
62
+ // 2. TX/hour check
63
+ const txPerHour = this.state.getTransactionCountInWindow(3_600_000);
64
+ if (txPerHour >= this.config.maxTxPerHour) {
65
+ violations.push({
66
+ rule: "velocity_tx_per_hour",
67
+ message: `Transaction rate ${txPerHour}/${this.config.maxTxPerHour} per hour exceeded`,
68
+ suggestion: "Wait before sending more transactions",
69
+ });
70
+ }
71
+ // 3. USD/hour check (cross-mint aggregation — BUG-3 fix)
72
+ const usdPerHour = this.state.getTotalSpendInWindow(3_600_000);
73
+ if (usdPerHour >= this.config.maxUsdPerHour) {
74
+ violations.push({
75
+ rule: "velocity_usd_per_hour",
76
+ message: `Hourly USD spend ${usdPerHour} exceeds ceiling ${this.config.maxUsdPerHour}`,
77
+ suggestion: "Reduce transaction amounts or wait for the window to reset",
78
+ });
79
+ }
80
+ // 3b. On-chain 24h cap check (when synced)
81
+ const rs = this.state.resolvedState;
82
+ if (rs) {
83
+ const effectiveSpent = this.state.getEffectiveGlobalSpent24h();
84
+ if (effectiveSpent >= rs.globalBudget.cap) {
85
+ violations.push({
86
+ rule: "velocity_on_chain_cap",
87
+ message: `On-chain daily cap reached: ${effectiveSpent} >= ${rs.globalBudget.cap}`,
88
+ suggestion: "Wait for the 24h rolling window to expire some spend",
89
+ });
90
+ }
91
+ }
92
+ // 4. Rapid-fire detection
93
+ const now = Date.now();
94
+ // S-6: Filter existing timestamps regardless of dryRun
95
+ const cutoff = now - this.config.rapidFireThreshold.windowMs;
96
+ this.txTimestamps = this.txTimestamps.filter((t) => t >= cutoff);
97
+ // Compute what the count would be if we added this check
98
+ const wouldBeCount = this.txTimestamps.length + 1;
99
+ if (wouldBeCount >= this.config.rapidFireThreshold.count) {
100
+ violations.push({
101
+ rule: "velocity_rapid_fire",
102
+ message: `Rapid-fire detected: ${wouldBeCount} transactions in ${this.config.rapidFireThreshold.windowMs}ms`,
103
+ suggestion: "Possible agent manipulation — transactions blocked",
104
+ });
105
+ }
106
+ if (violations.length > 0) {
107
+ // Trigger cooldown
108
+ this.cooldownUntil = now + this.config.cooldownMs;
109
+ throw new ShieldDeniedError(violations);
110
+ }
111
+ // S-6: Only push timestamp if not a dry run
112
+ if (!dryRun) {
113
+ this.txTimestamps.push(now);
114
+ }
115
+ }
116
+ /**
117
+ * Record a transaction after successful send.
118
+ */
119
+ recordTransaction(usdAmount) {
120
+ this.state.recordTransaction();
121
+ if (usdAmount !== undefined) {
122
+ this.state.recordSpend("", usdAmount);
123
+ }
124
+ }
125
+ /**
126
+ * Whether the tracker is in a cooldown period after a velocity breach.
127
+ */
128
+ isInCooldown() {
129
+ return Date.now() < this.cooldownUntil;
130
+ }
131
+ /**
132
+ * Get remaining cooldown time in ms. Returns 0 if not in cooldown.
133
+ */
134
+ getCooldownRemainingMs() {
135
+ const remaining = this.cooldownUntil - Date.now();
136
+ return remaining > 0 ? remaining : 0;
137
+ }
138
+ /**
139
+ * Reset the tracker (clears cooldown and timestamps).
140
+ */
141
+ reset() {
142
+ this.cooldownUntil = 0;
143
+ this.txTimestamps = [];
144
+ }
145
+ /**
146
+ * Get current spend status. Returns on-chain data when ShieldState is synced.
147
+ */
148
+ getSpendStatus() {
149
+ const rs = this.state.resolvedState;
150
+ if (rs) {
151
+ return {
152
+ globalSpent24h: this.state.getEffectiveGlobalSpent24h(),
153
+ globalCap: rs.globalBudget.cap,
154
+ globalRemaining: this.state.getEffectiveGlobalRemaining(),
155
+ agentSpent24h: this.state.getEffectiveAgentSpent24h(),
156
+ agentCap: rs.agentBudget?.cap ?? null,
157
+ source: "on-chain",
158
+ };
159
+ }
160
+ const clientSpend = this.state.getTotalSpendInWindow(86_400_000);
161
+ return {
162
+ globalSpent24h: clientSpend,
163
+ globalCap: null,
164
+ globalRemaining: null,
165
+ agentSpent24h: null,
166
+ agentCap: null,
167
+ source: "client-side",
168
+ };
169
+ }
170
+ /**
171
+ * Get current velocity stats.
172
+ */
173
+ getStats() {
174
+ return {
175
+ txPerMinute: this.state.getTransactionCountInWindow(60_000),
176
+ txPerHour: this.state.getTransactionCountInWindow(3_600_000),
177
+ usdPerHour: this.state.getTotalSpendInWindow(3_600_000),
178
+ inCooldown: this.isInCooldown(),
179
+ cooldownRemainingMs: this.getCooldownRemainingMs(),
180
+ };
181
+ }
182
+ }
183
+ //# sourceMappingURL=velocity-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"velocity-tracker.js","sourceRoot":"","sources":["../src/velocity-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * x402 Amount Guard — Kit-native
3
+ *
4
+ * Validates payment amounts beyond simple maxPayment ceiling.
5
+ * Detects zero, negative, NaN, per-request ceiling, and spike anomalies.
6
+ */
7
+ import type { X402Config } from "./types.js";
8
+ /**
9
+ * Validate a payment amount against sanity checks.
10
+ *
11
+ * @throws X402PaymentError on invalid or suspicious amounts
12
+ */
13
+ export declare function validatePaymentAmount(amount: string, config?: X402Config): bigint;
14
+ /**
15
+ * Record a successful payment amount for spike detection.
16
+ */
17
+ export declare function recordPaymentAmount(amount: bigint): void;
18
+ /**
19
+ * Reset the recent payments history (for testing).
20
+ */
21
+ export declare function resetPaymentHistory(): void;
22
+ /**
23
+ * Get the current payment history length (for testing).
24
+ */
25
+ export declare function getPaymentHistoryLength(): number;
26
+ //# sourceMappingURL=amount-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amount-guard.d.ts","sourceRoot":"","sources":["../../src/x402/amount-guard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAe7C;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,UAAU,GAClB,MAAM,CAuCR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAKxD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * x402 Amount Guard — Kit-native
3
+ *
4
+ * Validates payment amounts beyond simple maxPayment ceiling.
5
+ * Detects zero, negative, NaN, per-request ceiling, and spike anomalies.
6
+ */
7
+ import { X402PaymentError } from "./errors.js";
8
+ /**
9
+ * Recent payment amounts for spike detection.
10
+ * Intentionally module-level (global): all shieldedFetch instances share spike
11
+ * history so cross-instance spike detection catches manipulation attempts.
12
+ * Use resetPaymentHistory() in tests to clear between suites.
13
+ */
14
+ const recentPayments = [];
15
+ const MAX_RECENT = 20;
16
+ /** Spike detection threshold: payment > 10x median = suspicious */
17
+ const SPIKE_MULTIPLIER = 10n;
18
+ /**
19
+ * Validate a payment amount against sanity checks.
20
+ *
21
+ * @throws X402PaymentError on invalid or suspicious amounts
22
+ */
23
+ export function validatePaymentAmount(amount, config) {
24
+ // 1. Parse and validate
25
+ let parsed;
26
+ try {
27
+ parsed = BigInt(amount);
28
+ }
29
+ catch {
30
+ throw new X402PaymentError(`Invalid payment amount: "${amount}" is not a valid integer`);
31
+ }
32
+ // 2. Reject zero and negative
33
+ if (parsed <= 0n) {
34
+ throw new X402PaymentError(`Invalid payment amount: ${amount} must be positive`);
35
+ }
36
+ // 3. Per-request ceiling
37
+ if (config?.maxPaymentPerRequest !== undefined &&
38
+ parsed > config.maxPaymentPerRequest) {
39
+ throw new X402PaymentError(`Payment amount ${amount} exceeds per-request ceiling ${config.maxPaymentPerRequest}`);
40
+ }
41
+ // 4. Spike detection: if payment > 10x median of recent payments
42
+ if (recentPayments.length >= 3) {
43
+ const median = getMedian(recentPayments);
44
+ if (median > 0n && parsed > median * SPIKE_MULTIPLIER) {
45
+ throw new X402PaymentError(`Suspicious payment spike: ${amount} is > 10x the median of recent payments (${median})`);
46
+ }
47
+ }
48
+ return parsed;
49
+ }
50
+ /**
51
+ * Record a successful payment amount for spike detection.
52
+ */
53
+ export function recordPaymentAmount(amount) {
54
+ recentPayments.push(amount);
55
+ if (recentPayments.length > MAX_RECENT) {
56
+ recentPayments.shift();
57
+ }
58
+ }
59
+ /**
60
+ * Reset the recent payments history (for testing).
61
+ */
62
+ export function resetPaymentHistory() {
63
+ recentPayments.length = 0;
64
+ }
65
+ /**
66
+ * Get the current payment history length (for testing).
67
+ */
68
+ export function getPaymentHistoryLength() {
69
+ return recentPayments.length;
70
+ }
71
+ /** Compute median of a bigint array. */
72
+ function getMedian(arr) {
73
+ const sorted = [...arr].sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));
74
+ const mid = Math.floor(sorted.length / 2);
75
+ if (sorted.length % 2 === 0) {
76
+ return (sorted[mid - 1] + sorted[mid]) / 2n;
77
+ }
78
+ return sorted[mid];
79
+ }
80
+ //# sourceMappingURL=amount-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amount-guard.js","sourceRoot":"","sources":["../../src/x402/amount-guard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,cAAc,GAAa,EAAE,CAAC;AACpC,MAAM,UAAU,GAAG,EAAE,CAAC;AAEtB,mEAAmE;AACnE,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAc,EACd,MAAmB;IAEnB,wBAAwB;IACxB,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,gBAAgB,CACxB,4BAA4B,MAAM,0BAA0B,CAC7D,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,gBAAgB,CACxB,2BAA2B,MAAM,mBAAmB,CACrD,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,IACE,MAAM,EAAE,oBAAoB,KAAK,SAAS;QAC1C,MAAM,GAAG,MAAM,CAAC,oBAAoB,EACpC,CAAC;QACD,MAAM,IAAI,gBAAgB,CACxB,kBAAkB,MAAM,gCAAgC,MAAM,CAAC,oBAAoB,EAAE,CACtF,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;QACzC,IAAI,MAAM,GAAG,EAAE,IAAI,MAAM,GAAG,MAAM,GAAG,gBAAgB,EAAE,CAAC;YACtD,MAAM,IAAI,gBAAgB,CACxB,6BAA6B,MAAM,4CAA4C,MAAM,GAAG,CACzF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,cAAc,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;QACvC,cAAc,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,cAAc,CAAC,MAAM,CAAC;AAC/B,CAAC;AAED,wCAAwC;AACxC,SAAS,SAAS,CAAC,GAAa;IAC9B,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAC9C,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * x402 Audit Trail — Kit-native
3
+ *
4
+ * Structured X402PaymentEvent emitter.
5
+ * Calls config.onPayment() if configured.
6
+ */
7
+ import type { X402Config, X402PaymentEvent, SettleResponse } from "./types.js";
8
+ /**
9
+ * Emit a structured payment event through the audit callback.
10
+ */
11
+ export declare function emitPaymentEvent(config: X402Config | undefined, event: X402PaymentEvent): void;
12
+ /**
13
+ * Create a payment event from the flow parameters.
14
+ */
15
+ export declare function createPaymentEvent(params: {
16
+ url: string;
17
+ payTo: string;
18
+ asset: string;
19
+ amount: string;
20
+ paid: boolean;
21
+ deniedReason?: string;
22
+ settlement?: SettleResponse;
23
+ startTime: number;
24
+ nonce?: string;
25
+ }): X402PaymentEvent;
26
+ //# sourceMappingURL=audit-trail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-trail.d.ts","sourceRoot":"","sources":["../../src/x402/audit-trail.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/E;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,GAAG,SAAS,EAC9B,KAAK,EAAE,gBAAgB,GACtB,IAAI,CAIN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,gBAAgB,CAanB"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * x402 Audit Trail — Kit-native
3
+ *
4
+ * Structured X402PaymentEvent emitter.
5
+ * Calls config.onPayment() if configured.
6
+ */
7
+ /**
8
+ * Emit a structured payment event through the audit callback.
9
+ */
10
+ export function emitPaymentEvent(config, event) {
11
+ if (config?.onPayment) {
12
+ config.onPayment(event);
13
+ }
14
+ }
15
+ /**
16
+ * Create a payment event from the flow parameters.
17
+ */
18
+ export function createPaymentEvent(params) {
19
+ return {
20
+ timestamp: Date.now(),
21
+ url: params.url,
22
+ payTo: params.payTo,
23
+ asset: params.asset,
24
+ amount: params.amount,
25
+ paid: params.paid,
26
+ deniedReason: params.deniedReason,
27
+ settlement: params.settlement,
28
+ nonce: params.nonce,
29
+ durationMs: Date.now() - params.startTime,
30
+ };
31
+ }
32
+ //# sourceMappingURL=audit-trail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-trail.js","sourceRoot":"","sources":["../../src/x402/audit-trail.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAA8B,EAC9B,KAAuB;IAEvB,IAAI,MAAM,EAAE,SAAS,EAAE,CAAC;QACtB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAUlC;IACC,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS;KAC1C,CAAC;AACJ,CAAC"}