@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,49 @@
1
+ /**
2
+ * x402 Payment Option Selector — Kit-native
3
+ *
4
+ * Selects a Solana-compatible payment option from the accepts array.
5
+ * Includes SECURITY-CRITICAL payTo destination allowlisting.
6
+ */
7
+ import { X402UnsupportedError, X402DestinationBlockedError } from "./errors.js";
8
+ /**
9
+ * Select a Solana-compatible payment option from the accepts array.
10
+ *
11
+ * Filtering order:
12
+ * 1. Network: must start with "solana:" (CAIP-2 format)
13
+ * 2. Token allowlist: asset must be in config.allowedTokens (if set)
14
+ * 3. payTo allowlist: destination must be in config.allowedDestinations (if set) — SECURITY-CRITICAL
15
+ *
16
+ * @throws X402DestinationBlockedError if Solana options exist but all destinations are blocked
17
+ * @throws X402UnsupportedError if no compatible Solana option found
18
+ */
19
+ export function selectPaymentOption(paymentRequired, config) {
20
+ const solanaOptions = [];
21
+ let hasBlockedDestination = false;
22
+ for (const option of paymentRequired.accepts) {
23
+ // 1. Network filter: must be Solana
24
+ if (!option.network.startsWith("solana:")) {
25
+ continue;
26
+ }
27
+ // 2. Token allowlist filter
28
+ if (config?.allowedTokens &&
29
+ !config.allowedTokens.has(option.asset)) {
30
+ continue;
31
+ }
32
+ solanaOptions.push(option);
33
+ // 3. payTo destination allowlist — SECURITY-CRITICAL
34
+ // Defense against prompt injection: malicious API returns attacker's payTo
35
+ if (config?.allowedDestinations &&
36
+ !config.allowedDestinations.has(option.payTo)) {
37
+ hasBlockedDestination = true;
38
+ continue;
39
+ }
40
+ return option;
41
+ }
42
+ // Specific error when Solana options exist but all destinations are blocked
43
+ if (solanaOptions.length > 0 && hasBlockedDestination) {
44
+ throw new X402DestinationBlockedError(solanaOptions[0].payTo, `All ${solanaOptions.length} Solana payment option(s) have blocked payTo destinations. ` +
45
+ "Add trusted destinations to X402Config.allowedDestinations.");
46
+ }
47
+ throw new X402UnsupportedError("No compatible Solana payment option found in accepts array");
48
+ }
49
+ //# sourceMappingURL=payment-selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-selector.js","sourceRoot":"","sources":["../../src/x402/payment-selector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAEhF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,eAAgC,EAChC,MAAmB;IAEnB,MAAM,aAAa,GAA0B,EAAE,CAAC;IAChD,IAAI,qBAAqB,GAAG,KAAK,CAAC;IAElC,KAAK,MAAM,MAAM,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;QAC7C,oCAAoC;QACpC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1C,SAAS;QACX,CAAC;QAED,4BAA4B;QAC5B,IACE,MAAM,EAAE,aAAa;YACrB,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,KAAgB,CAAC,EAClD,CAAC;YACD,SAAS;QACX,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3B,qDAAqD;QACrD,2EAA2E;QAC3E,IACE,MAAM,EAAE,mBAAmB;YAC3B,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,KAAgB,CAAC,EACxD,CAAC;YACD,qBAAqB,GAAG,IAAI,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,4EAA4E;IAC5E,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,qBAAqB,EAAE,CAAC;QACtD,MAAM,IAAI,2BAA2B,CACnC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,EACtB,OAAO,aAAa,CAAC,MAAM,6DAA6D;YACtF,6DAA6D,CAChE,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,oBAAoB,CAC5B,4DAA4D,CAC7D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * x402 Policy Bridge — Kit-native
3
+ *
4
+ * Bridges x402 payments to Kit ShieldState for spending integration.
5
+ * x402 payments share the SAME spending state as DeFi operations.
6
+ */
7
+ import type { Address } from "@solana/kit";
8
+ import type { ShieldedContext } from "../shield.js";
9
+ import type { PaymentRequirements, X402Config } from "./types.js";
10
+ /**
11
+ * Evaluate an x402 payment against Kit Shield policies.
12
+ * Pre-check only — does NOT record spend.
13
+ *
14
+ * @throws X402PaymentError if shield is paused
15
+ * @returns violations array (empty = approved)
16
+ */
17
+ export declare function evaluateX402Payment(selected: PaymentRequirements, shieldCtx: ShieldedContext, config?: X402Config, signerAddress?: Address): string[];
18
+ /**
19
+ * Record an x402 payment in ShieldState after successful payment.
20
+ * x402 payments share the SAME spending state as DeFi operations.
21
+ */
22
+ export declare function recordX402Spend(shieldCtx: ShieldedContext, asset: string, amount: bigint): void;
23
+ //# sourceMappingURL=policy-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-bridge.d.ts","sourceRoot":"","sources":["../../src/x402/policy-bridge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAIlE;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,eAAe,EAC1B,MAAM,CAAC,EAAE,UAAU,EACnB,aAAa,CAAC,EAAE,OAAO,GACtB,MAAM,EAAE,CAuDV;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,IAAI,CAGN"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * x402 Policy Bridge — Kit-native
3
+ *
4
+ * Bridges x402 payments to Kit ShieldState for spending integration.
5
+ * x402 payments share the SAME spending state as DeFi operations.
6
+ */
7
+ import { X402PaymentError } from "./errors.js";
8
+ import { TOKEN_PROGRAM_ID } from "./transfer-builder.js";
9
+ /**
10
+ * Evaluate an x402 payment against Kit Shield policies.
11
+ * Pre-check only — does NOT record spend.
12
+ *
13
+ * @throws X402PaymentError if shield is paused
14
+ * @returns violations array (empty = approved)
15
+ */
16
+ export function evaluateX402Payment(selected, shieldCtx, config, signerAddress) {
17
+ const violations = [];
18
+ // 1. Shield paused = block all x402 payments
19
+ if (shieldCtx.isPaused) {
20
+ throw new X402PaymentError("Shield is paused — all x402 payments are blocked until resume()");
21
+ }
22
+ // 2. Cumulative spend check via ShieldState
23
+ if (config?.maxCumulativeSpend !== undefined) {
24
+ const windowMs = config.cumulativeWindowMs ?? 86_400_000;
25
+ const currentSpend = shieldCtx.state.getTotalSpendInWindow(windowMs);
26
+ const paymentAmount = BigInt(selected.amount);
27
+ if (currentSpend + paymentAmount > config.maxCumulativeSpend) {
28
+ violations.push(`Cumulative x402 spend ${currentSpend + paymentAmount} exceeds limit ${config.maxCumulativeSpend} ` +
29
+ `in ${windowMs}ms window`);
30
+ }
31
+ }
32
+ // 3. Per-request ceiling
33
+ if (config?.maxPaymentPerRequest !== undefined) {
34
+ const paymentAmount = BigInt(selected.amount);
35
+ if (paymentAmount > config.maxPaymentPerRequest) {
36
+ violations.push(`Payment ${selected.amount} exceeds per-request ceiling ${config.maxPaymentPerRequest}`);
37
+ }
38
+ }
39
+ // 4. Delegate to Shield's instruction check with synthetic transfer instruction
40
+ if (signerAddress) {
41
+ const syntheticIx = {
42
+ programAddress: TOKEN_PROGRAM_ID,
43
+ accounts: [
44
+ { address: signerAddress },
45
+ { address: selected.asset },
46
+ { address: selected.payTo },
47
+ { address: signerAddress },
48
+ ],
49
+ };
50
+ const checkResult = shieldCtx.check([syntheticIx], signerAddress);
51
+ if (!checkResult.allowed) {
52
+ for (const v of checkResult.violations) {
53
+ violations.push(v.message);
54
+ }
55
+ }
56
+ }
57
+ return violations;
58
+ }
59
+ /**
60
+ * Record an x402 payment in ShieldState after successful payment.
61
+ * x402 payments share the SAME spending state as DeFi operations.
62
+ */
63
+ export function recordX402Spend(shieldCtx, asset, amount) {
64
+ shieldCtx.state.recordSpend(asset, amount);
65
+ shieldCtx.state.recordTransaction();
66
+ }
67
+ //# sourceMappingURL=policy-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-bridge.js","sourceRoot":"","sources":["../../src/x402/policy-bridge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAA6B,EAC7B,SAA0B,EAC1B,MAAmB,EACnB,aAAuB;IAEvB,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,6CAA6C;IAC7C,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QACvB,MAAM,IAAI,gBAAgB,CACxB,iEAAiE,CAClE,CAAC;IACJ,CAAC;IAED,4CAA4C;IAC5C,IAAI,MAAM,EAAE,kBAAkB,KAAK,SAAS,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,kBAAkB,IAAI,UAAU,CAAC;QACzD,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACrE,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAE9C,IAAI,YAAY,GAAG,aAAa,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC7D,UAAU,CAAC,IAAI,CACb,yBAAyB,YAAY,GAAG,aAAa,kBAAkB,MAAM,CAAC,kBAAkB,GAAG;gBACjG,MAAM,QAAQ,WAAW,CAC5B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,IAAI,MAAM,EAAE,oBAAoB,KAAK,SAAS,EAAE,CAAC;QAC/C,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,aAAa,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAChD,UAAU,CAAC,IAAI,CACb,WAAW,QAAQ,CAAC,MAAM,gCAAgC,MAAM,CAAC,oBAAoB,EAAE,CACxF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,gFAAgF;IAChF,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,WAAW,GAA2B;YAC1C,cAAc,EAAE,gBAAgB;YAChC,QAAQ,EAAE;gBACR,EAAE,OAAO,EAAE,aAAa,EAAE;gBAC1B,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAgB,EAAE;gBACtC,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAgB,EAAE;gBACtC,EAAE,OAAO,EAAE,aAAa,EAAE;aAC3B;SACF,CAAC;QAEF,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,CAAC;QAClE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;gBACvC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,SAA0B,EAC1B,KAAa,EACb,MAAc;IAEd,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3C,SAAS,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;AACtC,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * x402 shieldedFetch — Kit-native
3
+ *
4
+ * Core 17-step flow for HTTP 402 Payment Required support.
5
+ * Uses Kit TransactionSigner, zero web3.js dependency.
6
+ *
7
+ * x402 payments are simple SPL transfers — NOT Sigil-composed transactions.
8
+ * Shield enforcement happens at the policy-bridge level, not the signer level.
9
+ */
10
+ import type { Rpc, SolanaRpcApi, TransactionSigner } from "@solana/kit";
11
+ import type { ShieldedContext } from "../shield.js";
12
+ import type { X402Config, ShieldedFetchOptions, ShieldedFetchResponse } from "./types.js";
13
+ /**
14
+ * Fetch a URL with automatic x402 payment support — Kit-native.
15
+ *
16
+ * 17-step flow:
17
+ * 1. URL protocol validation
18
+ * 2. Initial fetch
19
+ * 3. Non-402 passthrough
20
+ * 4. Extract PAYMENT-REQUIRED header
21
+ * 5. Non-x402 402 passthrough
22
+ * 6. Infinite loop guard
23
+ * 7. Decode + validate header
24
+ * 8. Select payment option with payTo allowlisting
25
+ * 9. Replay check
26
+ * 10. Amount sanity
27
+ * 11. Policy pre-check (does NOT record spend)
28
+ * 12. Dry-run exit point
29
+ * 13. Build TransferChecked instruction
30
+ * 14. Compose + sign transaction
31
+ * 15. Retry with PAYMENT-SIGNATURE header
32
+ * 16. Validate settlement response
33
+ * 17. Record spend, emit audit event, return response
34
+ */
35
+ export declare function shieldedFetch(signer: TransactionSigner, url: string | URL, config?: X402Config, shieldCtx?: ShieldedContext, rpc?: Rpc<SolanaRpcApi>, fetchOptions?: ShieldedFetchOptions): Promise<ShieldedFetchResponse>;
36
+ /**
37
+ * Create a wallet-bound fetch function with automatic x402 payment support.
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const fetch402 = createShieldedFetch(signer, config, shieldCtx, rpc);
42
+ * const res = await fetch402('https://api.example.com/paid-endpoint');
43
+ * ```
44
+ */
45
+ export declare function createShieldedFetch(signer: TransactionSigner, config?: X402Config, shieldCtx?: ShieldedContext, rpc?: Rpc<SolanaRpcApi>): (url: string | URL, init?: ShieldedFetchOptions) => Promise<ShieldedFetchResponse>;
46
+ //# sourceMappingURL=shielded-fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shielded-fetch.d.ts","sourceRoot":"","sources":["../../src/x402/shielded-fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAEV,GAAG,EACH,YAAY,EACZ,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAUrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EACV,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EAEtB,MAAM,YAAY,CAAC;AAmDpB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,iBAAiB,EACzB,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,MAAM,CAAC,EAAE,UAAU,EACnB,SAAS,CAAC,EAAE,eAAe,EAC3B,GAAG,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,EACvB,YAAY,CAAC,EAAE,oBAAoB,GAClC,OAAO,CAAC,qBAAqB,CAAC,CAwUhC;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,iBAAiB,EACzB,MAAM,CAAC,EAAE,UAAU,EACnB,SAAS,CAAC,EAAE,eAAe,EAC3B,GAAG,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,GACtB,CACD,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,IAAI,CAAC,EAAE,oBAAoB,KACxB,OAAO,CAAC,qBAAqB,CAAC,CAGlC"}
@@ -0,0 +1,342 @@
1
+ /**
2
+ * x402 shieldedFetch — Kit-native
3
+ *
4
+ * Core 17-step flow for HTTP 402 Payment Required support.
5
+ * Uses Kit TransactionSigner, zero web3.js dependency.
6
+ *
7
+ * x402 payments are simple SPL transfers — NOT Sigil-composed transactions.
8
+ * Shield enforcement happens at the policy-bridge level, not the signer level.
9
+ */
10
+ import { pipe, createTransactionMessage, setTransactionMessageFeePayer, setTransactionMessageLifetimeUsingBlockhash, appendTransactionMessageInstruction, compileTransaction, getBase58Decoder, } from "@solana/kit";
11
+ import { X402PaymentError } from "./errors.js";
12
+ import { signAndEncode } from "../rpc-helpers.js";
13
+ import { decodePaymentRequiredHeader, encodePaymentSignatureHeader, decodePaymentResponseHeader, } from "./codec.js";
14
+ import { selectPaymentOption } from "./payment-selector.js";
15
+ import { NonceTracker } from "./nonce-tracker.js";
16
+ import { validatePaymentAmount, recordPaymentAmount } from "./amount-guard.js";
17
+ import { evaluateX402Payment, recordX402Spend } from "./policy-bridge.js";
18
+ import { validateSettlement } from "./facilitator-verify.js";
19
+ import { emitPaymentEvent, createPaymentEvent } from "./audit-trail.js";
20
+ import { buildX402TransferInstruction } from "./transfer-builder.js";
21
+ import { resolveToken } from "../tokens.js";
22
+ // Global nonce tracker instance
23
+ const globalNonceTracker = new NonceTracker();
24
+ /**
25
+ * Poll getSignatureStatuses() to confirm a payment TX landed on-chain.
26
+ * Returns 3-state result:
27
+ * 'confirmed' — TX confirmed/finalized on-chain
28
+ * 'failed' — TX explicitly errored on-chain (definitive failure)
29
+ * 'timeout' — No definitive answer within timeout
30
+ * Pattern reused from rpc-helpers.ts sendAndConfirmTransaction polling.
31
+ */
32
+ async function confirmSettlementOnChain(rpc, txSignature, timeoutMs) {
33
+ const deadline = Date.now() + timeoutMs;
34
+ let delay = 500;
35
+ while (Date.now() < deadline) {
36
+ const result = await rpc.getSignatureStatuses([txSignature]).send();
37
+ const statuses = result.value;
38
+ if (statuses?.[0]) {
39
+ const status = statuses[0];
40
+ if (status.err)
41
+ return "failed";
42
+ if (status.confirmationStatus === "confirmed" || status.confirmationStatus === "finalized") {
43
+ return "confirmed";
44
+ }
45
+ }
46
+ await new Promise(r => setTimeout(r, delay));
47
+ delay = Math.min(delay * 1.5, 3000);
48
+ }
49
+ return "timeout";
50
+ }
51
+ /**
52
+ * Fetch a URL with automatic x402 payment support — Kit-native.
53
+ *
54
+ * 17-step flow:
55
+ * 1. URL protocol validation
56
+ * 2. Initial fetch
57
+ * 3. Non-402 passthrough
58
+ * 4. Extract PAYMENT-REQUIRED header
59
+ * 5. Non-x402 402 passthrough
60
+ * 6. Infinite loop guard
61
+ * 7. Decode + validate header
62
+ * 8. Select payment option with payTo allowlisting
63
+ * 9. Replay check
64
+ * 10. Amount sanity
65
+ * 11. Policy pre-check (does NOT record spend)
66
+ * 12. Dry-run exit point
67
+ * 13. Build TransferChecked instruction
68
+ * 14. Compose + sign transaction
69
+ * 15. Retry with PAYMENT-SIGNATURE header
70
+ * 16. Validate settlement response
71
+ * 17. Record spend, emit audit event, return response
72
+ */
73
+ export async function shieldedFetch(signer, url, config, shieldCtx, rpc, fetchOptions) {
74
+ const startTime = Date.now();
75
+ const urlStr = url.toString();
76
+ const maxRetries = Math.min(Math.max(config?.maxRetries ?? 1, 1), 3);
77
+ const effectiveRpc = fetchOptions?.rpc ?? rpc;
78
+ // Step 0: Config warnings
79
+ if (!config?.allowedDestinations || config.allowedDestinations.size === 0) {
80
+ console.warn("[x402] No allowedDestinations configured — accepting all payTo destinations. " +
81
+ "Set X402Config.allowedDestinations for production use.");
82
+ }
83
+ // Step 1: URL protocol validation (HTTPS only unless test override)
84
+ if (!config?.allowInsecureUrls) {
85
+ if (!urlStr.startsWith("https://")) {
86
+ throw new X402PaymentError("Only HTTPS URLs are supported for x402 payments. " +
87
+ "Set allowInsecureUrls in X402Config for testing only.");
88
+ }
89
+ }
90
+ else {
91
+ if (!urlStr.startsWith("https://") && !urlStr.startsWith("http://")) {
92
+ throw new X402PaymentError("Only HTTP/HTTPS URLs are supported for x402 payments");
93
+ }
94
+ }
95
+ // Build fetch init, stripping custom options
96
+ const init = { ...fetchOptions };
97
+ delete init.rpc;
98
+ delete init.dryRun;
99
+ delete init.maxPayment;
100
+ // Step 2: Initial fetch
101
+ const response = await globalThis.fetch(urlStr, init);
102
+ // Step 3: Non-402 passthrough
103
+ if (response.status !== 402) {
104
+ return response;
105
+ }
106
+ // Step 4: Extract PAYMENT-REQUIRED header (case-insensitive)
107
+ const paymentRequiredHeader = response.headers.get("payment-required") ??
108
+ response.headers.get("PAYMENT-REQUIRED");
109
+ // Step 5: Non-x402 402 passthrough
110
+ if (!paymentRequiredHeader) {
111
+ return response;
112
+ }
113
+ // Step 6: Infinite loop guard — reject if PAYMENT-SIGNATURE already sent
114
+ if (hasPaymentSignatureHeader(init.headers)) {
115
+ throw new X402PaymentError("Payment already attempted — refusing to retry to prevent infinite loops");
116
+ }
117
+ // Step 7: Decode + validate header
118
+ const paymentRequired = decodePaymentRequiredHeader(paymentRequiredHeader);
119
+ // Step 8: Select payment option with payTo allowlisting
120
+ const selected = selectPaymentOption(paymentRequired, config);
121
+ // Step 9: Replay check
122
+ if (config?.enableReplayProtection !== false) {
123
+ await globalNonceTracker.checkOrThrow(urlStr, selected.payTo, selected.amount);
124
+ }
125
+ // Step 10: Amount sanity
126
+ const parsedAmount = validatePaymentAmount(selected.amount, config);
127
+ // Override maxPayment from fetch options
128
+ if (fetchOptions?.maxPayment !== undefined &&
129
+ parsedAmount > fetchOptions.maxPayment) {
130
+ throw new X402PaymentError(`Server requires ${selected.amount} but maxPayment is ${fetchOptions.maxPayment}`);
131
+ }
132
+ // Step 11: Policy pre-check (does NOT record spend)
133
+ if (shieldCtx) {
134
+ const violations = evaluateX402Payment(selected, shieldCtx, config, signer.address);
135
+ if (violations.length > 0) {
136
+ const event = createPaymentEvent({
137
+ url: urlStr,
138
+ payTo: selected.payTo,
139
+ asset: selected.asset,
140
+ amount: selected.amount,
141
+ paid: false,
142
+ deniedReason: violations.join("; "),
143
+ startTime,
144
+ });
145
+ emitPaymentEvent(config, event);
146
+ throw new X402PaymentError(`x402 payment denied by policy: ${violations.join("; ")}`);
147
+ }
148
+ }
149
+ // Step 12: Dry-run exit point
150
+ if (fetchOptions?.dryRun) {
151
+ const dryResponse = new Response(null, {
152
+ status: 402,
153
+ });
154
+ dryResponse.x402 = {
155
+ paid: false,
156
+ amountPaid: selected.amount,
157
+ asset: selected.asset,
158
+ payTo: selected.payTo,
159
+ };
160
+ return dryResponse;
161
+ }
162
+ // Step 13: Build TransferChecked instruction
163
+ if (!effectiveRpc) {
164
+ throw new X402PaymentError("RPC connection required for x402 payments. Pass rpc in options.");
165
+ }
166
+ const tokenInfo = resolveToken(selected.asset, "mainnet-beta");
167
+ const decimals = tokenInfo?.decimals ?? 6;
168
+ const transferIx = await buildX402TransferInstruction({
169
+ from: signer.address,
170
+ payTo: selected.payTo,
171
+ asset: selected.asset,
172
+ amount: parsedAmount,
173
+ decimals,
174
+ });
175
+ // Step 14: Compose + sign transaction using Kit pipe()
176
+ const { value: blockhashInfo } = await effectiveRpc
177
+ .getLatestBlockhash()
178
+ .send();
179
+ const txMessage = pipe(createTransactionMessage({ version: 0 }), (tx) => setTransactionMessageFeePayer(signer.address, tx), (tx) => setTransactionMessageLifetimeUsingBlockhash(blockhashInfo, tx), (tx) => appendTransactionMessageInstruction(transferIx, tx));
180
+ const compiledTx = compileTransaction(txMessage);
181
+ // Sign + encode using shared utility
182
+ const wireBase64 = await signAndEncode(signer, compiledTx);
183
+ // Extract client's expected TX signature from wire format
184
+ // Wire format: 1 byte (compact-u16 sig count) + 64 bytes (first signature)
185
+ let expectedTxSig;
186
+ try {
187
+ const wireBinary = atob(wireBase64);
188
+ if (wireBinary.length > 64) {
189
+ const sigBytes = new Uint8Array(64);
190
+ for (let i = 0; i < 64; i++)
191
+ sigBytes[i] = wireBinary.charCodeAt(i + 1);
192
+ expectedTxSig = getBase58Decoder().decode(sigBytes);
193
+ }
194
+ }
195
+ catch {
196
+ // Non-fatal — sig extraction is for audit, not blocking
197
+ }
198
+ // Encode x402 payload
199
+ const encodedPayload = encodePaymentSignatureHeader({
200
+ x402Version: 2,
201
+ resource: paymentRequired.resource,
202
+ accepted: selected,
203
+ payload: { transaction: wireBase64 },
204
+ });
205
+ // Step 15: Retry with PAYMENT-SIGNATURE header
206
+ const retryHeaders = new Headers(init.headers);
207
+ retryHeaders.set("PAYMENT-SIGNATURE", encodedPayload);
208
+ let retryResponse = (await globalThis.fetch(urlStr, {
209
+ ...init,
210
+ headers: retryHeaders,
211
+ }));
212
+ for (let attempt = 1; attempt < maxRetries &&
213
+ !(retryResponse.status >= 200 && retryResponse.status < 300); attempt++) {
214
+ retryResponse = (await globalThis.fetch(urlStr, {
215
+ ...init,
216
+ headers: retryHeaders,
217
+ }));
218
+ }
219
+ // Step 16: Validate settlement response
220
+ const paymentResponseHeader = retryResponse.headers.get("payment-response") ??
221
+ retryResponse.headers.get("PAYMENT-RESPONSE");
222
+ let settlement;
223
+ if (paymentResponseHeader) {
224
+ try {
225
+ settlement = decodePaymentResponseHeader(paymentResponseHeader);
226
+ const verification = await validateSettlement(settlement);
227
+ if (verification.warnings.length > 0) {
228
+ console.warn("[x402] Settlement warnings:", verification.warnings);
229
+ }
230
+ }
231
+ catch {
232
+ // Non-fatal — settlement data is optional
233
+ }
234
+ }
235
+ // Settlement signature verification (D1: signature comparison)
236
+ if (expectedTxSig &&
237
+ settlement?.transaction &&
238
+ settlement.transaction !== expectedTxSig) {
239
+ emitPaymentEvent(config, createPaymentEvent({
240
+ url: urlStr,
241
+ payTo: selected.payTo,
242
+ asset: selected.asset,
243
+ amount: selected.amount,
244
+ paid: true,
245
+ deniedReason: `Settlement signature mismatch: expected ${expectedTxSig}, got ${settlement.transaction}`,
246
+ startTime,
247
+ }));
248
+ }
249
+ // Step 17: Record spend after on-chain confirmation (2.9.2 fix)
250
+ if (retryResponse.ok) {
251
+ if (config?.enableReplayProtection !== false) {
252
+ await globalNonceTracker.record(urlStr, selected.payTo, selected.amount);
253
+ }
254
+ recordPaymentAmount(parsedAmount);
255
+ // On-chain confirmation gate (2.9.2):
256
+ // confirmed → record spend
257
+ // failed → DON'T record (TX errored on-chain)
258
+ // timeout → record spend (defense-in-depth, can't confirm either way)
259
+ // disabled → record spend (confirmPayment: false)
260
+ let shouldRecordSpend = true;
261
+ if (config?.confirmPayment !== false &&
262
+ settlement?.transaction &&
263
+ effectiveRpc) {
264
+ const timeout = config?.confirmPaymentTimeoutMs ?? 10_000;
265
+ const status = await confirmSettlementOnChain(effectiveRpc, settlement.transaction, timeout);
266
+ if (status === "failed") {
267
+ shouldRecordSpend = false;
268
+ console.warn(`[x402] Payment TX ${settlement.transaction} failed on-chain — spend NOT recorded`);
269
+ }
270
+ else if (status === "timeout") {
271
+ console.warn(`[x402] Payment TX ${settlement.transaction} not confirmed within ${timeout}ms — recording spend (defense-in-depth)`);
272
+ }
273
+ }
274
+ if (shieldCtx && shouldRecordSpend) {
275
+ recordX402Spend(shieldCtx, selected.asset, parsedAmount);
276
+ }
277
+ const event = createPaymentEvent({
278
+ url: urlStr,
279
+ payTo: selected.payTo,
280
+ asset: selected.asset,
281
+ amount: selected.amount,
282
+ paid: true,
283
+ settlement,
284
+ startTime,
285
+ nonce: NonceTracker.buildKey(urlStr, selected.payTo, selected.amount),
286
+ });
287
+ emitPaymentEvent(config, event);
288
+ retryResponse.x402 = {
289
+ paid: true,
290
+ amountPaid: selected.amount,
291
+ asset: selected.asset,
292
+ payTo: selected.payTo,
293
+ settlement,
294
+ };
295
+ }
296
+ else {
297
+ const failEvent = createPaymentEvent({
298
+ url: urlStr,
299
+ payTo: selected.payTo,
300
+ asset: selected.asset,
301
+ amount: selected.amount,
302
+ paid: false,
303
+ deniedReason: `Server returned ${retryResponse.status} after payment attempt`,
304
+ startTime,
305
+ });
306
+ emitPaymentEvent(config, failEvent);
307
+ retryResponse.x402 = {
308
+ paid: false,
309
+ amountPaid: selected.amount,
310
+ asset: selected.asset,
311
+ payTo: selected.payTo,
312
+ settlement,
313
+ };
314
+ }
315
+ return retryResponse;
316
+ }
317
+ /**
318
+ * Create a wallet-bound fetch function with automatic x402 payment support.
319
+ *
320
+ * @example
321
+ * ```typescript
322
+ * const fetch402 = createShieldedFetch(signer, config, shieldCtx, rpc);
323
+ * const res = await fetch402('https://api.example.com/paid-endpoint');
324
+ * ```
325
+ */
326
+ export function createShieldedFetch(signer, config, shieldCtx, rpc) {
327
+ return (url, init) => shieldedFetch(signer, url, config, shieldCtx, rpc, init);
328
+ }
329
+ // ─── Internal Helpers ───────────────────────────────────────────────────────
330
+ function hasPaymentSignatureHeader(headers) {
331
+ if (!headers)
332
+ return false;
333
+ if (headers instanceof Headers) {
334
+ return headers.has("PAYMENT-SIGNATURE") || headers.has("payment-signature");
335
+ }
336
+ if (Array.isArray(headers)) {
337
+ return headers.some(([k]) => k.toLowerCase() === "payment-signature");
338
+ }
339
+ const rec = headers;
340
+ return Object.keys(rec).some((k) => k.toLowerCase() === "payment-signature");
341
+ }
342
+ //# sourceMappingURL=shielded-fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shielded-fetch.js","sourceRoot":"","sources":["../../src/x402/shielded-fetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * x402 Transfer Builder — Kit-native
3
+ *
4
+ * Builds SPL TransferChecked instructions from raw bytes.
5
+ * Zero dependency on @solana-program/token — the instruction is 10 bytes
6
+ * of data + 4 accounts, trivial to encode directly.
7
+ */
8
+ import type { Address, Instruction } from "@solana/kit";
9
+ import type { InspectableInstruction } from "../inspector.js";
10
+ export declare const TOKEN_PROGRAM_ID: Address;
11
+ export declare const ATA_PROGRAM_ID: Address;
12
+ /**
13
+ * Derive an Associated Token Account address.
14
+ * Seeds: [owner, TOKEN_PROGRAM_ID, mint]
15
+ */
16
+ export declare function deriveAta(owner: Address, mint: Address): Promise<Address>;
17
+ /**
18
+ * Build an SPL TransferChecked instruction for an x402 payment.
19
+ *
20
+ * Instruction data layout:
21
+ * [0]: 12 (TransferChecked discriminator)
22
+ * [1-8]: amount as u64 LE
23
+ * [9]: decimals
24
+ *
25
+ * Accounts:
26
+ * 0: source ATA (writable)
27
+ * 1: mint (readonly)
28
+ * 2: destination ATA (writable)
29
+ * 3: authority/owner (signer)
30
+ */
31
+ export declare function buildX402TransferInstruction(params: {
32
+ from: Address;
33
+ payTo: Address;
34
+ asset: Address;
35
+ amount: bigint;
36
+ decimals: number;
37
+ }): Promise<Instruction>;
38
+ /**
39
+ * Convert a built transfer instruction to an InspectableInstruction
40
+ * for Shield policy evaluation.
41
+ */
42
+ export declare function transferToInspectable(ix: Instruction): InspectableInstruction;
43
+ //# sourceMappingURL=transfer-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer-builder.d.ts","sourceRoot":"","sources":["../../src/x402/transfer-builder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAI9D,eAAO,MAAM,gBAAgB,EACsB,OAAO,CAAC;AAC3D,eAAO,MAAM,cAAc,EACyB,OAAO,CAAC;AAO5D;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,OAAO,CAAC,CAalB;AAkBD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,4BAA4B,CAAC,MAAM,EAAE;IACzD,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,WAAW,CAAC,CA0BvB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,WAAW,GAAG,sBAAsB,CAM7E"}