@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,401 @@
1
+ /**
2
+ * Turnkey TEE Attestation Provider
3
+ *
4
+ * Two-layer verification:
5
+ * 1. Boot Proof — COSE_Sign1 (P-384 ECDSA) with AWS Nitro cert chain + PCR3
6
+ * 2. App Proof — P-256 ECDSA signature binding the app public key to the boot attestation
7
+ *
8
+ * COSE_Sign1 structure (CBOR tag 18):
9
+ * [protected_headers, unprotected_headers, payload, signature]
10
+ *
11
+ * Sig_structure for verification:
12
+ * CBOR(["Signature1", protected_bytes, b'', payload_bytes])
13
+ *
14
+ * The cert chain is extracted from unprotected headers key 33 (x5chain).
15
+ * Each cert in the chain must chain to the embedded AWS Nitro Root CA.
16
+ *
17
+ * PCR3 is the SHA-384 hash of the IAM role ARN — used to bind the enclave
18
+ * identity to a specific AWS IAM role (Turnkey's production enclave).
19
+ */
20
+ import * as crypto from "node:crypto";
21
+ import { getAddressEncoder } from "@solana/kit";
22
+ import { AttestationStatus, } from "../types.js";
23
+ import { AWS_NITRO_ROOT_CA_PEM } from "../nitro-root.js";
24
+ import { TeeAttestationError, AttestationCertChainError, AttestationPcrMismatchError, } from "../wallet-types.js";
25
+ // Allow overriding the root CA for testing
26
+ let rootCaPem = AWS_NITRO_ROOT_CA_PEM;
27
+ /** Override the root CA PEM for testing. Only available in test environments. */
28
+ export function setTestRootCa(pem) {
29
+ if (typeof process === "undefined" || process.env.NODE_ENV !== "test") {
30
+ throw new Error("setTestRootCa() is only available in test environments (NODE_ENV=test)");
31
+ }
32
+ rootCaPem = pem;
33
+ }
34
+ /** Restore the production root CA PEM. */
35
+ export function restoreProductionRootCa() {
36
+ rootCaPem = AWS_NITRO_ROOT_CA_PEM;
37
+ }
38
+ /**
39
+ * Convert a raw ECDSA signature (r || s concatenation) to DER format
40
+ * for Node.js crypto.verify().
41
+ */
42
+ function rawSigToDer(rawSig, curveByteLen) {
43
+ if (rawSig.length !== curveByteLen * 2) {
44
+ throw new TeeAttestationError(`Invalid raw ECDSA signature: expected ${curveByteLen * 2} bytes, got ${rawSig.length}`);
45
+ }
46
+ const r = rawSig.subarray(0, curveByteLen);
47
+ const s = rawSig.subarray(curveByteLen, curveByteLen * 2);
48
+ // Encode each integer, adding leading zero if high bit set
49
+ function encodeInt(val) {
50
+ // Strip leading zeros but keep at least one byte
51
+ let start = 0;
52
+ while (start < val.length - 1 && val[start] === 0)
53
+ start++;
54
+ val = val.subarray(start);
55
+ const needsPad = val[0] >= 0x80;
56
+ const len = val.length + (needsPad ? 1 : 0);
57
+ const out = Buffer.alloc(2 + len);
58
+ out[0] = 0x02; // INTEGER tag
59
+ out[1] = len;
60
+ if (needsPad) {
61
+ out[2] = 0x00;
62
+ val.copy(out, 3);
63
+ }
64
+ else {
65
+ val.copy(out, 2);
66
+ }
67
+ return out;
68
+ }
69
+ const rDer = encodeInt(r);
70
+ const sDer = encodeInt(s);
71
+ const seqLen = rDer.length + sDer.length;
72
+ // SEQUENCE header
73
+ const header = seqLen < 128
74
+ ? Buffer.from([0x30, seqLen])
75
+ : Buffer.from([0x30, 0x81, seqLen]);
76
+ return Buffer.concat([header, rDer, sDer]);
77
+ }
78
+ /**
79
+ * Decode a CBOR-encoded COSE_Sign1 structure.
80
+ * Uses cbor-x for CBOR decoding.
81
+ */
82
+ async function decodeCoseSign1(cborBytes) {
83
+ // Dynamic import to handle optional dependency gracefully
84
+ const cbor = await import("cbor-x");
85
+ const decoded = cbor.decode(cborBytes);
86
+ // COSE_Sign1 is a CBOR array of 4 elements
87
+ // May be wrapped in a CBOR tag (tag 18 for COSE_Sign1)
88
+ let arr;
89
+ if (Array.isArray(decoded)) {
90
+ arr = decoded;
91
+ }
92
+ else if (decoded &&
93
+ typeof decoded === "object" &&
94
+ "value" in decoded &&
95
+ Array.isArray(decoded.value)) {
96
+ // M2: Validate COSE_Sign1 tag (18) when present
97
+ if ("tag" in decoded && decoded.tag !== 18) {
98
+ throw new TeeAttestationError(`Invalid COSE tag: expected 18 (COSE_Sign1), got ${decoded.tag}`);
99
+ }
100
+ arr = decoded.value;
101
+ }
102
+ else {
103
+ throw new TeeAttestationError("Invalid COSE_Sign1: expected 4-element array");
104
+ }
105
+ if (arr.length !== 4) {
106
+ throw new TeeAttestationError(`Invalid COSE_Sign1: expected 4 elements, got ${arr.length}`);
107
+ }
108
+ // M3: Type-guard COSE_Sign1 byte-string elements
109
+ function assertByteString(val, name) {
110
+ if (val instanceof Uint8Array || Buffer.isBuffer(val))
111
+ return val;
112
+ throw new TeeAttestationError(`Invalid COSE_Sign1: ${name} must be a byte string`);
113
+ }
114
+ const protectedHeaders = Buffer.from(assertByteString(arr[0], "protected_headers"));
115
+ // Unprotected headers: may be a Map or plain object
116
+ let unprotectedHeaders;
117
+ if (arr[1] instanceof Map) {
118
+ unprotectedHeaders = arr[1];
119
+ }
120
+ else if (arr[1] && typeof arr[1] === "object") {
121
+ unprotectedHeaders = new Map(Object.entries(arr[1]).map(([k, v]) => [
122
+ parseInt(k, 10),
123
+ v,
124
+ ]));
125
+ }
126
+ else {
127
+ unprotectedHeaders = new Map();
128
+ }
129
+ const payload = Buffer.from(assertByteString(arr[2], "payload"));
130
+ const signature = Buffer.from(assertByteString(arr[3], "signature"));
131
+ return { protectedHeaders, unprotectedHeaders, payload, signature };
132
+ }
133
+ /**
134
+ * Build the Sig_structure for COSE_Sign1 verification:
135
+ * CBOR(["Signature1", protected_bytes, b'', payload_bytes])
136
+ */
137
+ async function buildSigStructure(protectedHeaders, payload) {
138
+ const cbor = await import("cbor-x");
139
+ return Buffer.from(cbor.encode([
140
+ "Signature1",
141
+ protectedHeaders,
142
+ Buffer.alloc(0), // external_aad = empty
143
+ payload,
144
+ ]));
145
+ }
146
+ /**
147
+ * Validate a certificate chain against the root CA.
148
+ * Each certificate must be signed by the next certificate in the chain,
149
+ * and the last certificate must chain to the root CA.
150
+ */
151
+ function validateCertChain(certs) {
152
+ if (certs.length === 0) {
153
+ throw new AttestationCertChainError("Empty certificate chain");
154
+ }
155
+ // Build X509Certificate objects
156
+ const x509Certs = certs.map((certDer) => {
157
+ const pem = "-----BEGIN CERTIFICATE-----\n" +
158
+ certDer
159
+ .toString("base64")
160
+ .match(/.{1,64}/g)
161
+ .join("\n") +
162
+ "\n-----END CERTIFICATE-----";
163
+ return new crypto.X509Certificate(pem);
164
+ });
165
+ const rootCert = new crypto.X509Certificate(rootCaPem);
166
+ // Verify chain from leaf to root
167
+ // certs[0] = leaf (signing cert), certs[N-1] = closest to root
168
+ for (let i = 0; i < x509Certs.length; i++) {
169
+ const cert = x509Certs[i];
170
+ const issuer = i + 1 < x509Certs.length ? x509Certs[i + 1] : rootCert;
171
+ if (!cert.checkIssued(issuer)) {
172
+ throw new AttestationCertChainError(`Certificate at index ${i} was not issued by certificate at index ${i + 1}`);
173
+ }
174
+ // Verify the signature
175
+ const issuerPublicKey = issuer.publicKey;
176
+ if (!cert.verify(issuerPublicKey)) {
177
+ throw new AttestationCertChainError(`Certificate signature verification failed at chain index ${i}`);
178
+ }
179
+ // F1: Verify certificate is within its validity period
180
+ const now = new Date();
181
+ if (now < new Date(cert.validFrom) || now > new Date(cert.validTo)) {
182
+ throw new AttestationCertChainError(`Certificate at index ${i} is outside its validity period ` +
183
+ `(${cert.validFrom} to ${cert.validTo})`);
184
+ }
185
+ }
186
+ // Verify the last cert chains to root
187
+ if (x509Certs.length > 0) {
188
+ const lastCert = x509Certs[x509Certs.length - 1];
189
+ if (!lastCert.checkIssued(rootCert) ||
190
+ !lastCert.verify(rootCert.publicKey)) {
191
+ throw new AttestationCertChainError("Certificate chain does not terminate at the AWS Nitro Root CA");
192
+ }
193
+ }
194
+ // Return the leaf certificate (signing cert)
195
+ return x509Certs[0];
196
+ }
197
+ /**
198
+ * Extract PCR values from a decoded Nitro attestation document payload.
199
+ */
200
+ function extractPcrValues(attestationDoc) {
201
+ const pcrs = attestationDoc.pcrs;
202
+ if (!pcrs)
203
+ return {};
204
+ const getHex = (index) => {
205
+ const val = pcrs instanceof Map
206
+ ? pcrs.get(index)
207
+ : pcrs[index];
208
+ return val ? Buffer.from(val).toString("hex") : undefined;
209
+ };
210
+ return {
211
+ pcr0: getHex(0),
212
+ pcr1: getHex(1),
213
+ pcr2: getHex(2),
214
+ pcr3: getHex(3),
215
+ };
216
+ }
217
+ /**
218
+ * Verify a Turnkey wallet's TEE attestation.
219
+ *
220
+ * Expects the wallet to have a `getAttestation()` method that returns
221
+ * a TurnkeyAttestationBundle. If the method doesn't exist or returns null,
222
+ * falls back to ProviderTrusted.
223
+ */
224
+ export async function verifyTurnkey(wallet, config) {
225
+ // Kit Address is already base58 — no conversion needed
226
+ const publicKey = wallet.publicKey;
227
+ // Check if wallet provides attestation data
228
+ const walletRecord = wallet;
229
+ const getAttestation = typeof walletRecord.getAttestation === "function"
230
+ ? walletRecord.getAttestation
231
+ : undefined;
232
+ // H2: Turnkey wallets without getAttestation() cannot be cryptographically
233
+ // verified. Return Unavailable instead of ProviderTrusted to prevent
234
+ // spoofed wallets from passing requireAttestation.
235
+ if (!getAttestation) {
236
+ return {
237
+ status: AttestationStatus.Unavailable,
238
+ provider: "turnkey",
239
+ publicKey,
240
+ metadata: {
241
+ provider: "turnkey",
242
+ enclaveType: "nitro",
243
+ verifiedAt: Date.now(),
244
+ },
245
+ message: "Turnkey wallet does not expose getAttestation() — " +
246
+ "cannot verify enclave identity. Pass a wallet with getAttestation() " +
247
+ "for cryptographic verification.",
248
+ };
249
+ }
250
+ const ATTESTATION_TIMEOUT_MS = 30_000;
251
+ let bundle;
252
+ try {
253
+ let timer;
254
+ bundle = await Promise.race([
255
+ getAttestation.call(wallet).finally(() => clearTimeout(timer)),
256
+ new Promise((_, reject) => {
257
+ timer = setTimeout(() => reject(new TeeAttestationError("Turnkey getAttestation() timed out after 30s")), ATTESTATION_TIMEOUT_MS);
258
+ }),
259
+ ]);
260
+ }
261
+ catch (err) {
262
+ if (err instanceof TeeAttestationError)
263
+ throw err;
264
+ return {
265
+ status: AttestationStatus.Failed,
266
+ provider: "turnkey",
267
+ publicKey,
268
+ metadata: { provider: "turnkey", verifiedAt: Date.now() },
269
+ message: `Failed to fetch attestation bundle: ${err.message ?? err}`,
270
+ };
271
+ }
272
+ if (!bundle) {
273
+ return {
274
+ status: AttestationStatus.Unavailable,
275
+ provider: "turnkey",
276
+ publicKey,
277
+ metadata: {
278
+ provider: "turnkey",
279
+ enclaveType: "nitro",
280
+ verifiedAt: Date.now(),
281
+ },
282
+ message: "Turnkey getAttestation() returned null — cannot verify enclave identity.",
283
+ };
284
+ }
285
+ // === Boot Proof Verification (COSE_Sign1 + P-384) ===
286
+ try {
287
+ // F9: Validate bundle field types before processing
288
+ if (typeof bundle.bootProof !== "string" || bundle.bootProof.length === 0) {
289
+ throw new TeeAttestationError("Invalid attestation bundle: bootProof must be a non-empty base64 string");
290
+ }
291
+ // F2: Enforce size limit to prevent OOM from malicious payloads
292
+ const MAX_ATTESTATION_BYTES = 64 * 1024; // 64KB — Nitro docs are ~3-5KB
293
+ const bootBytes = Buffer.from(bundle.bootProof, "base64");
294
+ if (bootBytes.length > MAX_ATTESTATION_BYTES) {
295
+ throw new TeeAttestationError(`Boot proof exceeds maximum size (${bootBytes.length} > ${MAX_ATTESTATION_BYTES} bytes)`);
296
+ }
297
+ const { protectedHeaders, unprotectedHeaders, payload, signature } = await decodeCoseSign1(bootBytes);
298
+ // Extract certificate chain from unprotected headers key 33 (x5chain)
299
+ const x5chain = unprotectedHeaders.get(33);
300
+ if (!x5chain || !Array.isArray(x5chain)) {
301
+ throw new AttestationCertChainError("No x5chain (key 33) in COSE_Sign1 unprotected headers");
302
+ }
303
+ const certBuffers = x5chain.map((c, i) => {
304
+ if (!(c instanceof Uint8Array) && !Buffer.isBuffer(c)) {
305
+ throw new AttestationCertChainError(`x5chain entry at index ${i} is not a byte string`);
306
+ }
307
+ return Buffer.from(c);
308
+ });
309
+ const signingCert = validateCertChain(certBuffers);
310
+ // Build Sig_structure and verify ECDSA P-384 signature
311
+ const sigStructure = await buildSigStructure(protectedHeaders, payload);
312
+ const derSig = rawSigToDer(signature, 48); // P-384 = 48 bytes per component
313
+ const verified = crypto.verify("SHA384", sigStructure, {
314
+ key: signingCert.publicKey,
315
+ dsaEncoding: "der",
316
+ }, derSig);
317
+ if (!verified) {
318
+ throw new TeeAttestationError("COSE_Sign1 signature verification failed");
319
+ }
320
+ // Decode the attestation document payload
321
+ const cbor = await import("cbor-x");
322
+ const attestationDoc = cbor.decode(payload);
323
+ // Extract and check PCR values
324
+ const pcrValues = extractPcrValues(attestationDoc);
325
+ // C4: Check PCR3 if expected value is provided — require it to be present
326
+ if (config?.expectedPcr3) {
327
+ if (!pcrValues.pcr3) {
328
+ throw new AttestationPcrMismatchError(3, config.expectedPcr3, "<absent>");
329
+ }
330
+ if (pcrValues.pcr3.toLowerCase() !== config.expectedPcr3.toLowerCase()) {
331
+ throw new AttestationPcrMismatchError(3, config.expectedPcr3, pcrValues.pcr3);
332
+ }
333
+ }
334
+ // Extract the boot public key from the attestation document
335
+ const bootPublicKeyBytes = attestationDoc.public_key;
336
+ // === App Proof Verification (P-256 ECDSA) ===
337
+ // F3: Use explicit undefined/null checks — empty strings must not silently skip verification
338
+ const hasAppProof = bundle.appSignature !== undefined && bundle.appPublicKey !== undefined;
339
+ if (hasAppProof) {
340
+ // C2: If app proof is provided, bootPublicKeyBytes MUST be present in the
341
+ // attestation document — otherwise there is no enclave binding.
342
+ if (!bootPublicKeyBytes || Buffer.from(bootPublicKeyBytes).length === 0) {
343
+ throw new TeeAttestationError("App proof provided but attestation document lacks public_key — cannot bind enclave to wallet");
344
+ }
345
+ if (!bundle.appSignature || !bundle.appPublicKey) {
346
+ throw new TeeAttestationError("App proof fields present but empty — possible attestation tampering");
347
+ }
348
+ // Validate app proof field types
349
+ if (typeof bundle.appSignature !== "string" ||
350
+ typeof bundle.appPublicKey !== "string") {
351
+ throw new TeeAttestationError("Invalid attestation bundle: appSignature and appPublicKey must be strings");
352
+ }
353
+ const appPubKeyBytes = Buffer.from(bundle.appPublicKey, "hex");
354
+ // F5: Reject invalid P-256 key format immediately
355
+ if (appPubKeyBytes.length !== 65) {
356
+ throw new TeeAttestationError(`Invalid app public key: expected 65 bytes (uncompressed P-256), got ${appPubKeyBytes.length}`);
357
+ }
358
+ // C1: Always verify the P-256 signature binding the wallet key to the enclave.
359
+ // The app signature proves the wallet's Ed25519 public key was generated inside
360
+ // the attested enclave. This MUST be checked regardless of whether the app key
361
+ // matches the boot key — the signature is the binding proof, not key equality.
362
+ const appSig = Buffer.from(bundle.appSignature, "hex");
363
+ // Kit Address → 32-byte Ed25519 public key via encoder
364
+ const walletPubKeyBytes = Buffer.from(getAddressEncoder().encode(wallet.publicKey));
365
+ const keyObj = crypto.createPublicKey({
366
+ key: Buffer.concat([
367
+ // SubjectPublicKeyInfo header for P-256 uncompressed point
368
+ Buffer.from("3059301306072a8648ce3d020106082a8648ce3d030107034200", "hex"),
369
+ appPubKeyBytes,
370
+ ]),
371
+ format: "der",
372
+ type: "spki",
373
+ });
374
+ const appVerified = crypto.verify("SHA256", walletPubKeyBytes, { key: keyObj, dsaEncoding: "der" }, appSig);
375
+ if (!appVerified) {
376
+ throw new TeeAttestationError("App proof P-256 signature verification failed");
377
+ }
378
+ }
379
+ return {
380
+ status: AttestationStatus.CryptographicallyVerified,
381
+ provider: "turnkey",
382
+ publicKey,
383
+ metadata: {
384
+ provider: "turnkey",
385
+ enclaveType: "nitro",
386
+ pcrValues,
387
+ certChainLength: certBuffers.length,
388
+ verifiedAt: Date.now(),
389
+ },
390
+ message: "Turnkey attestation cryptographically verified: " +
391
+ "COSE_Sign1 P-384 signature valid, cert chain trusted, PCR values checked.",
392
+ };
393
+ }
394
+ catch (err) {
395
+ // F8: Only base class check needed — subclasses extend TeeAttestationError
396
+ if (err instanceof TeeAttestationError)
397
+ throw err;
398
+ throw new TeeAttestationError(`Turnkey attestation verification failed: ${err.message ?? err}`);
399
+ }
400
+ }
401
+ //# sourceMappingURL=turnkey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turnkey.js","sourceRoot":"","sources":["../../../src/tee/providers/turnkey.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * TEE Remote Attestation — Core Types
3
+ *
4
+ * Defines the provider enum, attestation result/config interfaces,
5
+ * and provider-specific metadata types.
6
+ */
7
+ /** Supported TEE custody providers. */
8
+ export type TeeProvider = "crossmint" | "turnkey" | "privy";
9
+ /** Attestation verification result status. */
10
+ export declare enum AttestationStatus {
11
+ /**
12
+ * Full cryptographic verification passed — COSE_Sign1 signature validated,
13
+ * certificate chain verified against AWS Nitro root, and PCR values checked.
14
+ * This is the strongest guarantee: mathematical proof that the key lives in
15
+ * a specific enclave image. Currently only Turnkey provides this level.
16
+ */
17
+ CryptographicallyVerified = "cryptographically_verified",
18
+ /**
19
+ * Provider API confirmed custody of the wallet key. The SDK called the
20
+ * provider's API (e.g. Crossmint getWallet, Privy wallets.get) and verified
21
+ * the returned address matches this wallet's public key.
22
+ *
23
+ * **What this proves:** The provider's API server acknowledges that this
24
+ * address exists in their custody system and is managed by their TEE
25
+ * infrastructure. An attacker cannot spoof this without access to valid
26
+ * API credentials for the correct app/account.
27
+ *
28
+ * **What this does NOT prove:** There is no cryptographic chain from the
29
+ * enclave hardware to this verification. You are trusting the provider's
30
+ * API server to report custody truthfully. A compromised provider API or
31
+ * a man-in-the-middle could theoretically return false confirmations.
32
+ *
33
+ * Use `minAttestationLevel: "cryptographic"` if you require hardware-rooted proof.
34
+ */
35
+ ProviderVerified = "provider_verified",
36
+ /**
37
+ * The wallet declares a known TEE provider but no custody verification was
38
+ * performed. This happens when: (1) the wallet does not implement
39
+ * `verifyProviderCustody()`, or (2) the custody API call failed and this
40
+ * is a fallback result.
41
+ *
42
+ * **Security implication:** Any object with `{ provider: "crossmint" }` can
43
+ * reach this status. Use `minAttestationLevel: "provider_verified"` to require
44
+ * at least API-confirmed custody.
45
+ */
46
+ ProviderTrusted = "provider_trusted",
47
+ /** Attestation verification failed. */
48
+ Failed = "failed",
49
+ /** No attestation data available (provider doesn't support it). */
50
+ Unavailable = "unavailable"
51
+ }
52
+ /** AWS Nitro Enclave PCR values (SHA-384 hashes). */
53
+ export interface NitroPcrValues {
54
+ /** PCR0: Enclave image hash */
55
+ pcr0?: string;
56
+ /** PCR1: Linux kernel hash */
57
+ pcr1?: string;
58
+ /** PCR2: Application hash */
59
+ pcr2?: string;
60
+ /** PCR3: IAM role ARN hash (used by Turnkey for identity binding) */
61
+ pcr3?: string;
62
+ }
63
+ /** Turnkey-specific attestation bundle containing boot + app proofs. */
64
+ export interface TurnkeyAttestationBundle {
65
+ /** COSE_Sign1 encoded boot attestation document (base64) */
66
+ bootProof: string;
67
+ /** P-256 ECDSA signature over the app public key (hex). Optional — omit when no app proof is available. */
68
+ appSignature?: string;
69
+ /** App public key derived from boot attestation (hex). Optional — omit when no app proof is available. */
70
+ appPublicKey?: string;
71
+ }
72
+ /** Metadata attached to an attestation result. */
73
+ export interface AttestationMetadata {
74
+ /** TEE provider name */
75
+ provider: TeeProvider;
76
+ /** Enclave type (e.g. "nitro", "tdx", "sgx") */
77
+ enclaveType?: string;
78
+ /** PCR values (AWS Nitro specific) */
79
+ pcrValues?: NitroPcrValues;
80
+ /** Certificate chain used for verification */
81
+ certChainLength?: number;
82
+ /** When the attestation was verified */
83
+ verifiedAt: number;
84
+ /** Raw attestation data for advanced consumers */
85
+ rawAttestation?: unknown;
86
+ }
87
+ /** Result of a TEE attestation verification. */
88
+ export interface AttestationResult {
89
+ /** Verification status */
90
+ status: AttestationStatus;
91
+ /** Provider that was verified */
92
+ provider: TeeProvider;
93
+ /** Base58-encoded public key of the attested wallet */
94
+ publicKey: string;
95
+ /** Detailed metadata about the attestation */
96
+ metadata: AttestationMetadata;
97
+ /** Human-readable message */
98
+ message: string;
99
+ }
100
+ /** Minimum attestation level required. Ordered from weakest to strongest. */
101
+ export type AttestationLevel = "provider_trusted" | "provider_verified" | "cryptographic";
102
+ /** Configuration for TEE attestation verification. */
103
+ export interface AttestationConfig {
104
+ /** Require attestation to pass — throws on failure. Default: false */
105
+ requireAttestation?: boolean;
106
+ /** Cache TTL in milliseconds. Default: 3_600_000 (1 hour). Set to 0 to disable caching. */
107
+ cacheTtlMs?: number;
108
+ /** Callback fired after successful verification. */
109
+ onVerified?: (result: AttestationResult) => void;
110
+ /** Expected PCR3 value for Turnkey (SHA-384 hash of IAM role ARN). */
111
+ expectedPcr3?: string;
112
+ /** Minimum acceptable verification level. Default: "provider_trusted" (backward-compatible). */
113
+ minAttestationLevel?: AttestationLevel;
114
+ }
115
+ /** A wallet that has passed TEE attestation verification. */
116
+ export interface VerifiedTeeWallet {
117
+ /** The attestation result */
118
+ attestation: AttestationResult;
119
+ /** Base58 public key */
120
+ publicKey: string;
121
+ /** The provider that was verified */
122
+ provider: TeeProvider;
123
+ }
124
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tee/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,uCAAuC;AACvC,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;AAE5D,8CAA8C;AAC9C,oBAAY,iBAAiB;IAC3B;;;;;OAKG;IACH,yBAAyB,+BAA+B;IACxD;;;;;;;;;;;;;;;;OAgBG;IACH,gBAAgB,sBAAsB;IACtC;;;;;;;;;OASG;IACH,eAAe,qBAAqB;IACpC,uCAAuC;IACvC,MAAM,WAAW;IACjB,mEAAmE;IACnE,WAAW,gBAAgB;CAC5B;AAED,qDAAqD;AACrD,MAAM,WAAW,cAAc;IAC7B,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wEAAwE;AACxE,MAAM,WAAW,wBAAwB;IACvC,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,2GAA2G;IAC3G,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0GAA0G;IAC1G,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,kDAAkD;AAClD,MAAM,WAAW,mBAAmB;IAClC,wBAAwB;IACxB,QAAQ,EAAE,WAAW,CAAC;IACtB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,gDAAgD;AAChD,MAAM,WAAW,iBAAiB;IAChC,0BAA0B;IAC1B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,iCAAiC;IACjC,QAAQ,EAAE,WAAW,CAAC;IACtB,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,6EAA6E;AAC7E,MAAM,MAAM,gBAAgB,GACxB,kBAAkB,GAClB,mBAAmB,GACnB,eAAe,CAAC;AAEpB,sDAAsD;AACtD,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,2FAA2F;IAC3F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACjD,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gGAAgG;IAChG,mBAAmB,CAAC,EAAE,gBAAgB,CAAC;CACxC;AAED,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,6BAA6B;IAC7B,WAAW,EAAE,iBAAiB,CAAC;IAC/B,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,QAAQ,EAAE,WAAW,CAAC;CACvB"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * TEE Remote Attestation — Core Types
3
+ *
4
+ * Defines the provider enum, attestation result/config interfaces,
5
+ * and provider-specific metadata types.
6
+ */
7
+ /** Attestation verification result status. */
8
+ export var AttestationStatus;
9
+ (function (AttestationStatus) {
10
+ /**
11
+ * Full cryptographic verification passed — COSE_Sign1 signature validated,
12
+ * certificate chain verified against AWS Nitro root, and PCR values checked.
13
+ * This is the strongest guarantee: mathematical proof that the key lives in
14
+ * a specific enclave image. Currently only Turnkey provides this level.
15
+ */
16
+ AttestationStatus["CryptographicallyVerified"] = "cryptographically_verified";
17
+ /**
18
+ * Provider API confirmed custody of the wallet key. The SDK called the
19
+ * provider's API (e.g. Crossmint getWallet, Privy wallets.get) and verified
20
+ * the returned address matches this wallet's public key.
21
+ *
22
+ * **What this proves:** The provider's API server acknowledges that this
23
+ * address exists in their custody system and is managed by their TEE
24
+ * infrastructure. An attacker cannot spoof this without access to valid
25
+ * API credentials for the correct app/account.
26
+ *
27
+ * **What this does NOT prove:** There is no cryptographic chain from the
28
+ * enclave hardware to this verification. You are trusting the provider's
29
+ * API server to report custody truthfully. A compromised provider API or
30
+ * a man-in-the-middle could theoretically return false confirmations.
31
+ *
32
+ * Use `minAttestationLevel: "cryptographic"` if you require hardware-rooted proof.
33
+ */
34
+ AttestationStatus["ProviderVerified"] = "provider_verified";
35
+ /**
36
+ * The wallet declares a known TEE provider but no custody verification was
37
+ * performed. This happens when: (1) the wallet does not implement
38
+ * `verifyProviderCustody()`, or (2) the custody API call failed and this
39
+ * is a fallback result.
40
+ *
41
+ * **Security implication:** Any object with `{ provider: "crossmint" }` can
42
+ * reach this status. Use `minAttestationLevel: "provider_verified"` to require
43
+ * at least API-confirmed custody.
44
+ */
45
+ AttestationStatus["ProviderTrusted"] = "provider_trusted";
46
+ /** Attestation verification failed. */
47
+ AttestationStatus["Failed"] = "failed";
48
+ /** No attestation data available (provider doesn't support it). */
49
+ AttestationStatus["Unavailable"] = "unavailable";
50
+ })(AttestationStatus || (AttestationStatus = {}));
51
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tee/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,8CAA8C;AAC9C,MAAM,CAAN,IAAY,iBAyCX;AAzCD,WAAY,iBAAiB;IAC3B;;;;;OAKG;IACH,6EAAwD,CAAA;IACxD;;;;;;;;;;;;;;;;OAgBG;IACH,2DAAsC,CAAA;IACtC;;;;;;;;;OASG;IACH,yDAAoC,CAAA;IACpC,uCAAuC;IACvC,sCAAiB,CAAA;IACjB,mEAAmE;IACnE,gDAA2B,CAAA;AAC7B,CAAC,EAzCW,iBAAiB,KAAjB,iBAAiB,QAyC5B"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * TEE Attestation Dispatcher
3
+ *
4
+ * Main entry point for TEE attestation verification.
5
+ * Detects the provider from the wallet, routes to the appropriate verifier,
6
+ * manages caching, and enforces requireAttestation + minAttestationLevel.
7
+ */
8
+ import type { WalletLike } from "./wallet-types.js";
9
+ import { AttestationCache } from "./cache.js";
10
+ import { type AttestationResult, type AttestationConfig } from "./types.js";
11
+ /**
12
+ * Verify TEE attestation for a wallet.
13
+ *
14
+ * Flow:
15
+ * 1. Check cache (unless cacheTtlMs === 0)
16
+ * 2. Detect provider from wallet
17
+ * 3. Route to provider-specific verifier
18
+ * 4. Cache result
19
+ * 5. Fire onVerified callback on success
20
+ * 6. If requireAttestation is true and verification failed, throw
21
+ * 7. If minAttestationLevel is set and not met, throw
22
+ */
23
+ export declare function verifyTeeAttestation(wallet: WalletLike, config?: AttestationConfig): Promise<AttestationResult>;
24
+ /** Clear the global attestation cache (useful for testing). */
25
+ export declare function clearAttestationCache(): void;
26
+ /** Delete a single entry from the global cache. */
27
+ /** Delete all cache entries for a wallet (including PCR3-suffixed variants). */
28
+ export declare function deleteFromAttestationCache(publicKey: string): boolean;
29
+ /**
30
+ * Get the global attestation cache instance (for testing/inspection only).
31
+ * @internal
32
+ */
33
+ export declare function getGlobalCache(): AttestationCache;
34
+ //# sourceMappingURL=verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/tee/verify.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,mBAAmB,CAAC;AAG/D,OAAO,EAAE,gBAAgB,EAAwB,MAAM,YAAY,CAAC;AACpE,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EAGvB,MAAM,YAAY,CAAC;AA0CpB;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,UAAU,EAClB,MAAM,CAAC,EAAE,iBAAiB,GACzB,OAAO,CAAC,iBAAiB,CAAC,CAuH5B;AAED,+DAA+D;AAC/D,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,mDAAmD;AACnD,gFAAgF;AAChF,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAIrE;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,gBAAgB,CAEjD"}