@usesigil/kit 0.15.0 → 0.17.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 (627) hide show
  1. package/README.md +56 -0
  2. package/dist/advanced-analytics.d.ts +3 -2
  3. package/dist/advanced-analytics.d.ts.map +1 -1
  4. package/dist/advanced-analytics.js +9 -42
  5. package/dist/advanced-analytics.js.map +1 -1
  6. package/dist/agent-bootstrap.d.ts +117 -0
  7. package/dist/agent-bootstrap.d.ts.map +1 -0
  8. package/dist/agent-bootstrap.js +211 -0
  9. package/dist/agent-bootstrap.js.map +1 -0
  10. package/dist/agent-errors.d.ts +20 -4
  11. package/dist/agent-errors.d.ts.map +1 -1
  12. package/dist/agent-errors.js +947 -377
  13. package/dist/agent-errors.js.map +1 -1
  14. package/dist/audit-log.d.ts +101 -0
  15. package/dist/audit-log.d.ts.map +1 -0
  16. package/dist/audit-log.js +145 -0
  17. package/dist/audit-log.js.map +1 -0
  18. package/dist/build-unsigned.d.ts +152 -0
  19. package/dist/build-unsigned.d.ts.map +1 -0
  20. package/dist/build-unsigned.js +152 -0
  21. package/dist/build-unsigned.js.map +1 -0
  22. package/dist/caip2-network.d.ts +171 -0
  23. package/dist/caip2-network.d.ts.map +1 -0
  24. package/dist/caip2-network.js +202 -0
  25. package/dist/caip2-network.js.map +1 -0
  26. package/dist/canonical-encode.d.ts +59 -0
  27. package/dist/canonical-encode.d.ts.map +1 -0
  28. package/dist/canonical-encode.js +141 -0
  29. package/dist/canonical-encode.js.map +1 -0
  30. package/dist/cosign-helper.d.ts +264 -0
  31. package/dist/cosign-helper.d.ts.map +1 -0
  32. package/dist/cosign-helper.js +147 -0
  33. package/dist/cosign-helper.js.map +1 -0
  34. package/dist/create-vault.d.ts +102 -1
  35. package/dist/create-vault.d.ts.map +1 -1
  36. package/dist/create-vault.js +108 -9
  37. package/dist/create-vault.js.map +1 -1
  38. package/dist/dashboard/close-vault.d.ts +110 -0
  39. package/dist/dashboard/close-vault.d.ts.map +1 -0
  40. package/dist/dashboard/close-vault.js +165 -0
  41. package/dist/dashboard/close-vault.js.map +1 -0
  42. package/dist/dashboard/errors.d.ts +37 -0
  43. package/dist/dashboard/errors.d.ts.map +1 -1
  44. package/dist/dashboard/errors.js +81 -1
  45. package/dist/dashboard/errors.js.map +1 -1
  46. package/dist/dashboard/from-json.d.ts.map +1 -1
  47. package/dist/dashboard/from-json.js +1 -2
  48. package/dist/dashboard/from-json.js.map +1 -1
  49. package/dist/dashboard/index.d.ts +204 -31
  50. package/dist/dashboard/index.d.ts.map +1 -1
  51. package/dist/dashboard/index.js +290 -49
  52. package/dist/dashboard/index.js.map +1 -1
  53. package/dist/dashboard/mutations.d.ts +160 -10
  54. package/dist/dashboard/mutations.d.ts.map +1 -1
  55. package/dist/dashboard/mutations.js +584 -66
  56. package/dist/dashboard/mutations.js.map +1 -1
  57. package/dist/dashboard/post-assertion-validation.d.ts +88 -0
  58. package/dist/dashboard/post-assertion-validation.d.ts.map +1 -0
  59. package/dist/dashboard/post-assertion-validation.js +312 -0
  60. package/dist/dashboard/post-assertion-validation.js.map +1 -0
  61. package/dist/dashboard/reads.d.ts +92 -1
  62. package/dist/dashboard/reads.d.ts.map +1 -1
  63. package/dist/dashboard/reads.js +244 -26
  64. package/dist/dashboard/reads.js.map +1 -1
  65. package/dist/dashboard/types.d.ts +172 -21
  66. package/dist/dashboard/types.d.ts.map +1 -1
  67. package/dist/errors/agent-errors.generated.d.ts +21 -0
  68. package/dist/errors/agent-errors.generated.d.ts.map +1 -0
  69. package/dist/errors/agent-errors.generated.js +133 -0
  70. package/dist/errors/agent-errors.generated.js.map +1 -0
  71. package/dist/errors/codes.d.ts +21 -2
  72. package/dist/errors/codes.d.ts.map +1 -1
  73. package/dist/errors/codes.js +20 -1
  74. package/dist/errors/codes.js.map +1 -1
  75. package/dist/errors/context.d.ts +9 -1
  76. package/dist/errors/context.d.ts.map +1 -1
  77. package/dist/event-analytics.d.ts +1 -3
  78. package/dist/event-analytics.d.ts.map +1 -1
  79. package/dist/event-analytics.js +28 -81
  80. package/dist/event-analytics.js.map +1 -1
  81. package/dist/events.d.ts.map +1 -1
  82. package/dist/events.js +23 -13
  83. package/dist/events.js.map +1 -1
  84. package/dist/generated/accounts/agentSpendOverlay.d.ts +60 -0
  85. package/dist/generated/accounts/agentSpendOverlay.d.ts.map +1 -1
  86. package/dist/generated/accounts/agentSpendOverlay.js +6 -2
  87. package/dist/generated/accounts/agentSpendOverlay.js.map +1 -1
  88. package/dist/generated/accounts/agentVault.d.ts +168 -4
  89. package/dist/generated/accounts/agentVault.d.ts.map +1 -1
  90. package/dist/generated/accounts/agentVault.js +11 -3
  91. package/dist/generated/accounts/agentVault.js.map +1 -1
  92. package/dist/generated/accounts/auditLogRejected.d.ts +66 -0
  93. package/dist/generated/accounts/auditLogRejected.d.ts.map +1 -0
  94. package/dist/generated/accounts/auditLogRejected.js +68 -0
  95. package/dist/generated/accounts/auditLogRejected.js.map +1 -0
  96. package/dist/generated/accounts/auditLogSuccess.d.ts +78 -0
  97. package/dist/generated/accounts/auditLogSuccess.d.ts.map +1 -0
  98. package/dist/generated/accounts/auditLogSuccess.js +68 -0
  99. package/dist/generated/accounts/auditLogSuccess.js.map +1 -0
  100. package/dist/generated/accounts/index.d.ts +4 -4
  101. package/dist/generated/accounts/index.d.ts.map +1 -1
  102. package/dist/generated/accounts/index.js +4 -4
  103. package/dist/generated/accounts/index.js.map +1 -1
  104. package/dist/generated/accounts/pendingAgentGrant.d.ts +199 -0
  105. package/dist/generated/accounts/pendingAgentGrant.d.ts.map +1 -0
  106. package/dist/generated/accounts/pendingAgentGrant.js +75 -0
  107. package/dist/generated/accounts/pendingAgentGrant.js.map +1 -0
  108. package/dist/generated/accounts/pendingAgentPermissionsUpdate.d.ts +76 -0
  109. package/dist/generated/accounts/pendingAgentPermissionsUpdate.d.ts.map +1 -1
  110. package/dist/generated/accounts/pendingAgentPermissionsUpdate.js +9 -1
  111. package/dist/generated/accounts/pendingAgentPermissionsUpdate.js.map +1 -1
  112. package/dist/generated/accounts/pendingOwnershipTransfer.d.ts +131 -0
  113. package/dist/generated/accounts/pendingOwnershipTransfer.d.ts.map +1 -0
  114. package/dist/generated/accounts/pendingOwnershipTransfer.js +76 -0
  115. package/dist/generated/accounts/pendingOwnershipTransfer.js.map +1 -0
  116. package/dist/generated/accounts/pendingPolicyUpdate.d.ts +220 -4
  117. package/dist/generated/accounts/pendingPolicyUpdate.d.ts.map +1 -1
  118. package/dist/generated/accounts/pendingPolicyUpdate.js +25 -5
  119. package/dist/generated/accounts/pendingPolicyUpdate.js.map +1 -1
  120. package/dist/generated/accounts/policyConfig.d.ts +495 -34
  121. package/dist/generated/accounts/policyConfig.d.ts.map +1 -1
  122. package/dist/generated/accounts/policyConfig.js +34 -7
  123. package/dist/generated/accounts/policyConfig.js.map +1 -1
  124. package/dist/generated/accounts/postExecutionAssertions.d.ts +2 -2
  125. package/dist/generated/accounts/postExecutionAssertions.d.ts.map +1 -1
  126. package/dist/generated/accounts/postExecutionAssertions.js +3 -3
  127. package/dist/generated/accounts/sessionAuthority.d.ts +154 -12
  128. package/dist/generated/accounts/sessionAuthority.d.ts.map +1 -1
  129. package/dist/generated/accounts/sessionAuthority.js +12 -10
  130. package/dist/generated/accounts/sessionAuthority.js.map +1 -1
  131. package/dist/generated/accounts/spendTracker.d.ts +83 -3
  132. package/dist/generated/accounts/spendTracker.d.ts.map +1 -1
  133. package/dist/generated/accounts/spendTracker.js +14 -2
  134. package/dist/generated/accounts/spendTracker.js.map +1 -1
  135. package/dist/generated/errors/sigil.d.ts +160 -100
  136. package/dist/generated/errors/sigil.d.ts.map +1 -1
  137. package/dist/generated/errors/sigil.js +214 -124
  138. package/dist/generated/errors/sigil.js.map +1 -1
  139. package/dist/generated/event-discriminators.d.ts.map +1 -1
  140. package/dist/generated/event-discriminators.js +11 -13
  141. package/dist/generated/event-discriminators.js.map +1 -1
  142. package/dist/generated/instructions/acceptOwnershipTransfer.d.ts +142 -0
  143. package/dist/generated/instructions/acceptOwnershipTransfer.d.ts.map +1 -0
  144. package/dist/generated/instructions/acceptOwnershipTransfer.js +171 -0
  145. package/dist/generated/instructions/acceptOwnershipTransfer.js.map +1 -0
  146. package/dist/generated/instructions/acceptOwnershipTransferMultisig.d.ts +142 -0
  147. package/dist/generated/instructions/acceptOwnershipTransferMultisig.d.ts.map +1 -0
  148. package/dist/generated/instructions/acceptOwnershipTransferMultisig.js +171 -0
  149. package/dist/generated/instructions/acceptOwnershipTransferMultisig.js.map +1 -0
  150. package/dist/generated/instructions/applyAgentGrant.d.ts +100 -0
  151. package/dist/generated/instructions/applyAgentGrant.d.ts.map +1 -0
  152. package/dist/generated/instructions/{applyConstraintsUpdate.js → applyAgentGrant.js} +66 -42
  153. package/dist/generated/instructions/applyAgentGrant.js.map +1 -0
  154. package/dist/generated/instructions/applyAgentPermissionsUpdate.d.ts +31 -8
  155. package/dist/generated/instructions/applyAgentPermissionsUpdate.d.ts.map +1 -1
  156. package/dist/generated/instructions/applyAgentPermissionsUpdate.js +38 -2
  157. package/dist/generated/instructions/applyAgentPermissionsUpdate.js.map +1 -1
  158. package/dist/generated/instructions/applyPendingPolicy.d.ts +18 -7
  159. package/dist/generated/instructions/applyPendingPolicy.d.ts.map +1 -1
  160. package/dist/generated/instructions/applyPendingPolicy.js +38 -2
  161. package/dist/generated/instructions/applyPendingPolicy.js.map +1 -1
  162. package/dist/generated/instructions/cancelAgentGrant.d.ts +106 -0
  163. package/dist/generated/instructions/cancelAgentGrant.d.ts.map +1 -0
  164. package/dist/generated/instructions/{allocatePendingConstraintsPda.js → cancelAgentGrant.js} +54 -42
  165. package/dist/generated/instructions/cancelAgentGrant.js.map +1 -0
  166. package/dist/generated/instructions/cancelOwnershipTransfer.d.ts +121 -0
  167. package/dist/generated/instructions/cancelOwnershipTransfer.d.ts.map +1 -0
  168. package/dist/generated/instructions/{queueCloseConstraints.js → cancelOwnershipTransfer.js} +58 -44
  169. package/dist/generated/instructions/cancelOwnershipTransfer.js.map +1 -0
  170. package/dist/generated/instructions/closePostAssertions.d.ts +6 -1
  171. package/dist/generated/instructions/closePostAssertions.d.ts.map +1 -1
  172. package/dist/generated/instructions/closePostAssertions.js +11 -3
  173. package/dist/generated/instructions/closePostAssertions.js.map +1 -1
  174. package/dist/generated/instructions/closeVault.d.ts +40 -8
  175. package/dist/generated/instructions/closeVault.d.ts.map +1 -1
  176. package/dist/generated/instructions/closeVault.js +40 -2
  177. package/dist/generated/instructions/closeVault.js.map +1 -1
  178. package/dist/generated/instructions/createPostAssertions.d.ts +4 -0
  179. package/dist/generated/instructions/createPostAssertions.d.ts.map +1 -1
  180. package/dist/generated/instructions/createPostAssertions.js +2 -0
  181. package/dist/generated/instructions/createPostAssertions.js.map +1 -1
  182. package/dist/generated/instructions/depositFunds.d.ts +21 -10
  183. package/dist/generated/instructions/depositFunds.d.ts.map +1 -1
  184. package/dist/generated/instructions/depositFunds.js +37 -2
  185. package/dist/generated/instructions/depositFunds.js.map +1 -1
  186. package/dist/generated/instructions/finalizeSession.d.ts +49 -7
  187. package/dist/generated/instructions/finalizeSession.d.ts.map +1 -1
  188. package/dist/generated/instructions/finalizeSession.js +59 -2
  189. package/dist/generated/instructions/finalizeSession.js.map +1 -1
  190. package/dist/generated/instructions/freezeVault.d.ts +39 -5
  191. package/dist/generated/instructions/freezeVault.d.ts.map +1 -1
  192. package/dist/generated/instructions/freezeVault.js +77 -5
  193. package/dist/generated/instructions/freezeVault.js.map +1 -1
  194. package/dist/generated/instructions/index.d.ts +10 -14
  195. package/dist/generated/instructions/index.d.ts.map +1 -1
  196. package/dist/generated/instructions/index.js +10 -14
  197. package/dist/generated/instructions/index.js.map +1 -1
  198. package/dist/generated/instructions/initializeVault.d.ts +79 -13
  199. package/dist/generated/instructions/initializeVault.d.ts.map +1 -1
  200. package/dist/generated/instructions/initializeVault.js +57 -5
  201. package/dist/generated/instructions/initializeVault.js.map +1 -1
  202. package/dist/generated/instructions/initiateOwnershipTransfer.d.ts +106 -0
  203. package/dist/generated/instructions/initiateOwnershipTransfer.d.ts.map +1 -0
  204. package/dist/generated/instructions/initiateOwnershipTransfer.js +181 -0
  205. package/dist/generated/instructions/initiateOwnershipTransfer.js.map +1 -0
  206. package/dist/generated/instructions/pauseAgent.d.ts +49 -5
  207. package/dist/generated/instructions/pauseAgent.d.ts.map +1 -1
  208. package/dist/generated/instructions/pauseAgent.js +80 -5
  209. package/dist/generated/instructions/pauseAgent.js.map +1 -1
  210. package/dist/generated/instructions/promoteGraylistDestination.d.ts +56 -0
  211. package/dist/generated/instructions/promoteGraylistDestination.d.ts.map +1 -0
  212. package/dist/generated/instructions/{createInstructionConstraints.js → promoteGraylistDestination.js} +23 -40
  213. package/dist/generated/instructions/promoteGraylistDestination.js.map +1 -0
  214. package/dist/generated/instructions/queueAgentGrant.d.ts +113 -0
  215. package/dist/generated/instructions/queueAgentGrant.d.ts.map +1 -0
  216. package/dist/generated/instructions/queueAgentGrant.js +181 -0
  217. package/dist/generated/instructions/queueAgentGrant.js.map +1 -0
  218. package/dist/generated/instructions/queueAgentPermissionsUpdate.d.ts +8 -0
  219. package/dist/generated/instructions/queueAgentPermissionsUpdate.d.ts.map +1 -1
  220. package/dist/generated/instructions/queueAgentPermissionsUpdate.js +4 -0
  221. package/dist/generated/instructions/queueAgentPermissionsUpdate.js.map +1 -1
  222. package/dist/generated/instructions/queuePolicyUpdate.d.ts +40 -8
  223. package/dist/generated/instructions/queuePolicyUpdate.d.ts.map +1 -1
  224. package/dist/generated/instructions/queuePolicyUpdate.js +21 -5
  225. package/dist/generated/instructions/queuePolicyUpdate.js.map +1 -1
  226. package/dist/generated/instructions/reactivateVault.d.ts +71 -5
  227. package/dist/generated/instructions/reactivateVault.d.ts.map +1 -1
  228. package/dist/generated/instructions/reactivateVault.js +80 -5
  229. package/dist/generated/instructions/reactivateVault.js.map +1 -1
  230. package/dist/generated/instructions/recordAgentViolation.d.ts +89 -0
  231. package/dist/generated/instructions/recordAgentViolation.d.ts.map +1 -0
  232. package/dist/generated/instructions/recordAgentViolation.js +152 -0
  233. package/dist/generated/instructions/recordAgentViolation.js.map +1 -0
  234. package/dist/generated/instructions/registerAgent.d.ts +84 -6
  235. package/dist/generated/instructions/registerAgent.d.ts.map +1 -1
  236. package/dist/generated/instructions/registerAgent.js +81 -4
  237. package/dist/generated/instructions/registerAgent.js.map +1 -1
  238. package/dist/generated/instructions/revokeAgent.d.ts +49 -6
  239. package/dist/generated/instructions/revokeAgent.d.ts.map +1 -1
  240. package/dist/generated/instructions/revokeAgent.js +81 -4
  241. package/dist/generated/instructions/revokeAgent.js.map +1 -1
  242. package/dist/generated/instructions/setObserveOnly.d.ts +56 -0
  243. package/dist/generated/instructions/setObserveOnly.d.ts.map +1 -0
  244. package/dist/generated/instructions/setObserveOnly.js +111 -0
  245. package/dist/generated/instructions/setObserveOnly.js.map +1 -0
  246. package/dist/generated/instructions/unpauseAgent.d.ts +46 -5
  247. package/dist/generated/instructions/unpauseAgent.d.ts.map +1 -1
  248. package/dist/generated/instructions/unpauseAgent.js +80 -5
  249. package/dist/generated/instructions/unpauseAgent.js.map +1 -1
  250. package/dist/generated/instructions/validateAndAuthorize.d.ts +29 -0
  251. package/dist/generated/instructions/validateAndAuthorize.d.ts.map +1 -1
  252. package/dist/generated/instructions/validateAndAuthorize.js +4 -0
  253. package/dist/generated/instructions/validateAndAuthorize.js.map +1 -1
  254. package/dist/generated/instructions/withdrawFunds.d.ts +53 -11
  255. package/dist/generated/instructions/withdrawFunds.d.ts.map +1 -1
  256. package/dist/generated/instructions/withdrawFunds.js +51 -2
  257. package/dist/generated/instructions/withdrawFunds.js.map +1 -1
  258. package/dist/generated/programs/sigil.d.ts +79 -95
  259. package/dist/generated/programs/sigil.d.ts.map +1 -1
  260. package/dist/generated/programs/sigil.js +139 -187
  261. package/dist/generated/programs/sigil.js.map +1 -1
  262. package/dist/generated/types/actionAuthorized.d.ts +0 -2
  263. package/dist/generated/types/actionAuthorized.d.ts.map +1 -1
  264. package/dist/generated/types/actionAuthorized.js +0 -2
  265. package/dist/generated/types/actionAuthorized.js.map +1 -1
  266. package/dist/generated/types/agentAutoRevoked.d.ts +31 -0
  267. package/dist/generated/types/agentAutoRevoked.d.ts.map +1 -0
  268. package/dist/generated/types/{pdaAllocated.js → agentAutoRevoked.js} +12 -10
  269. package/dist/generated/types/agentAutoRevoked.js.map +1 -0
  270. package/dist/generated/types/agentEntry.d.ts +48 -0
  271. package/dist/generated/types/agentEntry.d.ts.map +1 -1
  272. package/dist/generated/types/agentEntry.js +4 -2
  273. package/dist/generated/types/agentEntry.js.map +1 -1
  274. package/dist/generated/types/agentGrantApplied.d.ts +38 -0
  275. package/dist/generated/types/agentGrantApplied.d.ts.map +1 -0
  276. package/dist/generated/types/agentGrantApplied.js +34 -0
  277. package/dist/generated/types/agentGrantApplied.js.map +1 -0
  278. package/dist/generated/types/agentGrantCancelled.d.ts +33 -0
  279. package/dist/generated/types/agentGrantCancelled.d.ts.map +1 -0
  280. package/dist/generated/types/agentGrantCancelled.js +28 -0
  281. package/dist/generated/types/agentGrantCancelled.js.map +1 -0
  282. package/dist/generated/types/agentGrantQueued.d.ts +38 -0
  283. package/dist/generated/types/agentGrantQueued.d.ts.map +1 -0
  284. package/dist/generated/types/agentGrantQueued.js +32 -0
  285. package/dist/generated/types/agentGrantQueued.js.map +1 -0
  286. package/dist/generated/types/auditEntry.d.ts +120 -0
  287. package/dist/generated/types/auditEntry.d.ts.map +1 -0
  288. package/dist/generated/types/auditEntry.js +34 -0
  289. package/dist/generated/types/auditEntry.js.map +1 -0
  290. package/dist/generated/types/destinationGraylistEntry.d.ts +32 -0
  291. package/dist/generated/types/destinationGraylistEntry.d.ts.map +1 -0
  292. package/dist/generated/types/destinationGraylistEntry.js +24 -0
  293. package/dist/generated/types/destinationGraylistEntry.js.map +1 -0
  294. package/dist/generated/types/graylistEntered.d.ts +31 -0
  295. package/dist/generated/types/graylistEntered.d.ts.map +1 -0
  296. package/dist/generated/types/graylistEntered.js +30 -0
  297. package/dist/generated/types/graylistEntered.js.map +1 -0
  298. package/dist/generated/types/graylistPromoted.d.ts +29 -0
  299. package/dist/generated/types/graylistPromoted.d.ts.map +1 -0
  300. package/dist/generated/types/graylistPromoted.js +28 -0
  301. package/dist/generated/types/graylistPromoted.js.map +1 -0
  302. package/dist/generated/types/index.d.ts +13 -21
  303. package/dist/generated/types/index.d.ts.map +1 -1
  304. package/dist/generated/types/index.js +13 -21
  305. package/dist/generated/types/index.js.map +1 -1
  306. package/dist/generated/types/observeOnlyChanged.d.ts +33 -0
  307. package/dist/generated/types/observeOnlyChanged.d.ts.map +1 -0
  308. package/dist/generated/types/observeOnlyChanged.js +32 -0
  309. package/dist/generated/types/observeOnlyChanged.js.map +1 -0
  310. package/dist/generated/types/ownershipTransferAccepted.d.ts +32 -0
  311. package/dist/generated/types/ownershipTransferAccepted.d.ts.map +1 -0
  312. package/dist/generated/types/ownershipTransferAccepted.js +30 -0
  313. package/dist/generated/types/ownershipTransferAccepted.js.map +1 -0
  314. package/dist/generated/types/ownershipTransferCancelled.d.ts +29 -0
  315. package/dist/generated/types/ownershipTransferCancelled.d.ts.map +1 -0
  316. package/dist/generated/types/ownershipTransferCancelled.js +28 -0
  317. package/dist/generated/types/ownershipTransferCancelled.js.map +1 -0
  318. package/dist/generated/types/ownershipTransferInitiated.d.ts +33 -0
  319. package/dist/generated/types/ownershipTransferInitiated.d.ts.map +1 -0
  320. package/dist/generated/types/ownershipTransferInitiated.js +30 -0
  321. package/dist/generated/types/ownershipTransferInitiated.js.map +1 -0
  322. package/dist/generated/types/perRecipientCounter.d.ts +61 -0
  323. package/dist/generated/types/perRecipientCounter.d.ts.map +1 -0
  324. package/dist/generated/types/perRecipientCounter.js +26 -0
  325. package/dist/generated/types/perRecipientCounter.js.map +1 -0
  326. package/dist/generated/types/postAssertionEntry.d.ts +14 -7
  327. package/dist/generated/types/postAssertionEntry.d.ts.map +1 -1
  328. package/dist/generated/types/postAssertionEntry.js +5 -7
  329. package/dist/generated/types/postAssertionEntry.js.map +1 -1
  330. package/dist/generated/types/postAssertionEntryZC.d.ts +53 -22
  331. package/dist/generated/types/postAssertionEntryZC.d.ts.map +1 -1
  332. package/dist/generated/types/postAssertionEntryZC.js +4 -6
  333. package/dist/generated/types/postAssertionEntryZC.js.map +1 -1
  334. package/dist/generated/types/sessionFinalized.d.ts +0 -4
  335. package/dist/generated/types/sessionFinalized.d.ts.map +1 -1
  336. package/dist/generated/types/sessionFinalized.js +0 -2
  337. package/dist/generated/types/sessionFinalized.js.map +1 -1
  338. package/dist/generated/types/vaultFrozen.d.ts +26 -0
  339. package/dist/generated/types/vaultFrozen.d.ts.map +1 -1
  340. package/dist/generated/types/vaultFrozen.js +5 -1
  341. package/dist/generated/types/vaultFrozen.js.map +1 -1
  342. package/dist/index.d.ts +35 -6
  343. package/dist/index.d.ts.map +1 -1
  344. package/dist/index.js +81 -7
  345. package/dist/index.js.map +1 -1
  346. package/dist/inscribe.d.ts +0 -4
  347. package/dist/inscribe.d.ts.map +1 -1
  348. package/dist/inscribe.js +0 -1
  349. package/dist/inscribe.js.map +1 -1
  350. package/dist/inspector.d.ts +0 -23
  351. package/dist/inspector.d.ts.map +1 -1
  352. package/dist/inspector.js +0 -52
  353. package/dist/inspector.js.map +1 -1
  354. package/dist/kit-adapter.d.ts +1 -1
  355. package/dist/kit-adapter.d.ts.map +1 -1
  356. package/dist/kit-adapter.js +1 -1
  357. package/dist/kit-adapter.js.map +1 -1
  358. package/dist/logger.d.ts +48 -0
  359. package/dist/logger.d.ts.map +1 -1
  360. package/dist/logger.js +36 -0
  361. package/dist/logger.js.map +1 -1
  362. package/dist/multisig-detection.d.ts +83 -0
  363. package/dist/multisig-detection.d.ts.map +1 -0
  364. package/dist/multisig-detection.js +128 -0
  365. package/dist/multisig-detection.js.map +1 -0
  366. package/dist/owner-transaction.d.ts +8 -0
  367. package/dist/owner-transaction.d.ts.map +1 -1
  368. package/dist/owner-transaction.js +1 -0
  369. package/dist/owner-transaction.js.map +1 -1
  370. package/dist/ownership-transfer.d.ts +79 -0
  371. package/dist/ownership-transfer.d.ts.map +1 -0
  372. package/dist/ownership-transfer.js +66 -0
  373. package/dist/ownership-transfer.js.map +1 -0
  374. package/dist/policy/compute-cosign-digest.d.ts +193 -0
  375. package/dist/policy/compute-cosign-digest.d.ts.map +1 -0
  376. package/dist/policy/compute-cosign-digest.js +318 -0
  377. package/dist/policy/compute-cosign-digest.js.map +1 -0
  378. package/dist/policy/compute-policy-preview-digest.d.ts +258 -0
  379. package/dist/policy/compute-policy-preview-digest.d.ts.map +1 -0
  380. package/dist/policy/compute-policy-preview-digest.js +351 -0
  381. package/dist/policy/compute-policy-preview-digest.js.map +1 -0
  382. package/dist/policy-attestation.d.ts +51 -0
  383. package/dist/policy-attestation.d.ts.map +1 -0
  384. package/dist/policy-attestation.js +43 -0
  385. package/dist/policy-attestation.js.map +1 -0
  386. package/dist/presets.d.ts +1 -7
  387. package/dist/presets.d.ts.map +1 -1
  388. package/dist/presets.js +0 -5
  389. package/dist/presets.js.map +1 -1
  390. package/dist/preview-create-vault.d.ts +280 -0
  391. package/dist/preview-create-vault.d.ts.map +1 -0
  392. package/dist/preview-create-vault.js +498 -0
  393. package/dist/preview-create-vault.js.map +1 -0
  394. package/dist/resolve-accounts.d.ts +75 -10
  395. package/dist/resolve-accounts.d.ts.map +1 -1
  396. package/dist/resolve-accounts.js +68 -32
  397. package/dist/resolve-accounts.js.map +1 -1
  398. package/dist/rpc-helpers.d.ts +29 -3
  399. package/dist/rpc-helpers.d.ts.map +1 -1
  400. package/dist/rpc-helpers.js +51 -12
  401. package/dist/rpc-helpers.js.map +1 -1
  402. package/dist/seal/intent-digest.d.ts +195 -0
  403. package/dist/seal/intent-digest.d.ts.map +1 -0
  404. package/dist/seal/intent-digest.js +372 -0
  405. package/dist/seal/intent-digest.js.map +1 -0
  406. package/dist/seal.d.ts +166 -3
  407. package/dist/seal.d.ts.map +1 -1
  408. package/dist/seal.js +428 -8
  409. package/dist/seal.js.map +1 -1
  410. package/dist/security-analytics.d.ts +3 -3
  411. package/dist/security-analytics.d.ts.map +1 -1
  412. package/dist/security-analytics.js +13 -128
  413. package/dist/security-analytics.js.map +1 -1
  414. package/dist/session-mint.d.ts +72 -0
  415. package/dist/session-mint.d.ts.map +1 -0
  416. package/dist/session-mint.js +59 -0
  417. package/dist/session-mint.js.map +1 -0
  418. package/dist/sigil.d.ts +0 -4
  419. package/dist/sigil.d.ts.map +1 -1
  420. package/dist/simulation.d.ts +19 -0
  421. package/dist/simulation.d.ts.map +1 -1
  422. package/dist/simulation.js +211 -138
  423. package/dist/simulation.js.map +1 -1
  424. package/dist/squads-detection.d.ts +135 -0
  425. package/dist/squads-detection.d.ts.map +1 -0
  426. package/dist/squads-detection.js +124 -0
  427. package/dist/squads-detection.js.map +1 -0
  428. package/dist/state-resolver.d.ts +0 -16
  429. package/dist/state-resolver.d.ts.map +1 -1
  430. package/dist/state-resolver.js +162 -97
  431. package/dist/state-resolver.js.map +1 -1
  432. package/dist/testing/devnet.d.ts +40 -1
  433. package/dist/testing/devnet.d.ts.map +1 -1
  434. package/dist/testing/devnet.js +333 -45
  435. package/dist/testing/devnet.js.map +1 -1
  436. package/dist/testing/errors/expect.d.ts +137 -0
  437. package/dist/testing/errors/expect.d.ts.map +1 -0
  438. package/dist/testing/errors/expect.js +372 -0
  439. package/dist/testing/errors/expect.js.map +1 -0
  440. package/dist/testing/errors/index.d.ts +3 -0
  441. package/dist/testing/errors/index.d.ts.map +1 -0
  442. package/dist/testing/errors/index.js +8 -0
  443. package/dist/testing/errors/index.js.map +1 -0
  444. package/dist/testing/errors/names.generated.d.ts +211 -0
  445. package/dist/testing/errors/names.generated.d.ts.map +1 -0
  446. package/dist/testing/errors/names.generated.js +206 -0
  447. package/dist/testing/errors/names.generated.js.map +1 -0
  448. package/dist/testing/index.d.ts +1 -0
  449. package/dist/testing/index.d.ts.map +1 -1
  450. package/dist/testing/index.js +8 -0
  451. package/dist/testing/index.js.map +1 -1
  452. package/dist/testing/mock-rpc.d.ts +16 -0
  453. package/dist/testing/mock-rpc.d.ts.map +1 -1
  454. package/dist/testing/mock-rpc.js +27 -0
  455. package/dist/testing/mock-rpc.js.map +1 -1
  456. package/dist/testing/mock-state.d.ts +2 -0
  457. package/dist/testing/mock-state.d.ts.map +1 -1
  458. package/dist/testing/mock-state.js +45 -6
  459. package/dist/testing/mock-state.js.map +1 -1
  460. package/dist/types.d.ts +5 -15
  461. package/dist/types.d.ts.map +1 -1
  462. package/dist/types.js +11 -69
  463. package/dist/types.js.map +1 -1
  464. package/dist/vault-analytics.d.ts +0 -2
  465. package/dist/vault-analytics.d.ts.map +1 -1
  466. package/dist/vault-analytics.js +1 -9
  467. package/dist/vault-analytics.js.map +1 -1
  468. package/package.json +12 -5
  469. package/dist/dashboard/constraint-reads.d.ts +0 -50
  470. package/dist/dashboard/constraint-reads.d.ts.map +0 -1
  471. package/dist/dashboard/constraint-reads.js +0 -119
  472. package/dist/dashboard/constraint-reads.js.map +0 -1
  473. package/dist/generated/accounts/escrowDeposit.d.ts +0 -50
  474. package/dist/generated/accounts/escrowDeposit.d.ts.map +0 -1
  475. package/dist/generated/accounts/escrowDeposit.js +0 -76
  476. package/dist/generated/accounts/escrowDeposit.js.map +0 -1
  477. package/dist/generated/accounts/instructionConstraints.d.ts +0 -46
  478. package/dist/generated/accounts/instructionConstraints.d.ts.map +0 -1
  479. package/dist/generated/accounts/instructionConstraints.js +0 -73
  480. package/dist/generated/accounts/instructionConstraints.js.map +0 -1
  481. package/dist/generated/accounts/pendingCloseConstraints.d.ts +0 -37
  482. package/dist/generated/accounts/pendingCloseConstraints.d.ts.map +0 -1
  483. package/dist/generated/accounts/pendingCloseConstraints.js +0 -66
  484. package/dist/generated/accounts/pendingCloseConstraints.js.map +0 -1
  485. package/dist/generated/accounts/pendingConstraintsUpdate.d.ts +0 -62
  486. package/dist/generated/accounts/pendingConstraintsUpdate.d.ts.map +0 -1
  487. package/dist/generated/accounts/pendingConstraintsUpdate.js +0 -75
  488. package/dist/generated/accounts/pendingConstraintsUpdate.js.map +0 -1
  489. package/dist/generated/instructions/allocateConstraintsPda.d.ts +0 -62
  490. package/dist/generated/instructions/allocateConstraintsPda.d.ts.map +0 -1
  491. package/dist/generated/instructions/allocateConstraintsPda.js +0 -134
  492. package/dist/generated/instructions/allocateConstraintsPda.js.map +0 -1
  493. package/dist/generated/instructions/allocatePendingConstraintsPda.d.ts +0 -66
  494. package/dist/generated/instructions/allocatePendingConstraintsPda.d.ts.map +0 -1
  495. package/dist/generated/instructions/allocatePendingConstraintsPda.js.map +0 -1
  496. package/dist/generated/instructions/applyCloseConstraints.d.ts +0 -59
  497. package/dist/generated/instructions/applyCloseConstraints.d.ts.map +0 -1
  498. package/dist/generated/instructions/applyCloseConstraints.js +0 -143
  499. package/dist/generated/instructions/applyCloseConstraints.js.map +0 -1
  500. package/dist/generated/instructions/applyConstraintsUpdate.d.ts +0 -62
  501. package/dist/generated/instructions/applyConstraintsUpdate.d.ts.map +0 -1
  502. package/dist/generated/instructions/applyConstraintsUpdate.js.map +0 -1
  503. package/dist/generated/instructions/cancelCloseConstraints.d.ts +0 -51
  504. package/dist/generated/instructions/cancelCloseConstraints.d.ts.map +0 -1
  505. package/dist/generated/instructions/cancelCloseConstraints.js +0 -115
  506. package/dist/generated/instructions/cancelCloseConstraints.js.map +0 -1
  507. package/dist/generated/instructions/cancelConstraintsUpdate.d.ts +0 -51
  508. package/dist/generated/instructions/cancelConstraintsUpdate.d.ts.map +0 -1
  509. package/dist/generated/instructions/cancelConstraintsUpdate.js +0 -115
  510. package/dist/generated/instructions/cancelConstraintsUpdate.js.map +0 -1
  511. package/dist/generated/instructions/closeSettledEscrow.d.ts +0 -72
  512. package/dist/generated/instructions/closeSettledEscrow.d.ts.map +0 -1
  513. package/dist/generated/instructions/closeSettledEscrow.js +0 -127
  514. package/dist/generated/instructions/closeSettledEscrow.js.map +0 -1
  515. package/dist/generated/instructions/createEscrow.d.ts +0 -131
  516. package/dist/generated/instructions/createEscrow.d.ts.map +0 -1
  517. package/dist/generated/instructions/createEscrow.js +0 -272
  518. package/dist/generated/instructions/createEscrow.js.map +0 -1
  519. package/dist/generated/instructions/createInstructionConstraints.d.ts +0 -68
  520. package/dist/generated/instructions/createInstructionConstraints.d.ts.map +0 -1
  521. package/dist/generated/instructions/createInstructionConstraints.js.map +0 -1
  522. package/dist/generated/instructions/extendPda.d.ts +0 -52
  523. package/dist/generated/instructions/extendPda.d.ts.map +0 -1
  524. package/dist/generated/instructions/extendPda.js +0 -86
  525. package/dist/generated/instructions/extendPda.js.map +0 -1
  526. package/dist/generated/instructions/queueCloseConstraints.d.ts +0 -66
  527. package/dist/generated/instructions/queueCloseConstraints.d.ts.map +0 -1
  528. package/dist/generated/instructions/queueCloseConstraints.js.map +0 -1
  529. package/dist/generated/instructions/queueConstraintsUpdate.d.ts +0 -75
  530. package/dist/generated/instructions/queueConstraintsUpdate.d.ts.map +0 -1
  531. package/dist/generated/instructions/queueConstraintsUpdate.js +0 -154
  532. package/dist/generated/instructions/queueConstraintsUpdate.js.map +0 -1
  533. package/dist/generated/instructions/refundEscrow.d.ts +0 -74
  534. package/dist/generated/instructions/refundEscrow.d.ts.map +0 -1
  535. package/dist/generated/instructions/refundEscrow.js +0 -142
  536. package/dist/generated/instructions/refundEscrow.js.map +0 -1
  537. package/dist/generated/instructions/settleEscrow.d.ts +0 -80
  538. package/dist/generated/instructions/settleEscrow.d.ts.map +0 -1
  539. package/dist/generated/instructions/settleEscrow.js +0 -173
  540. package/dist/generated/instructions/settleEscrow.js.map +0 -1
  541. package/dist/generated/types/accountConstraint.d.ts +0 -18
  542. package/dist/generated/types/accountConstraint.d.ts.map +0 -1
  543. package/dist/generated/types/accountConstraint.js +0 -24
  544. package/dist/generated/types/accountConstraint.js.map +0 -1
  545. package/dist/generated/types/accountConstraintZC.d.ts +0 -18
  546. package/dist/generated/types/accountConstraintZC.d.ts.map +0 -1
  547. package/dist/generated/types/accountConstraintZC.js +0 -26
  548. package/dist/generated/types/accountConstraintZC.js.map +0 -1
  549. package/dist/generated/types/closeConstraintsApplied.d.ts +0 -20
  550. package/dist/generated/types/closeConstraintsApplied.d.ts.map +0 -1
  551. package/dist/generated/types/closeConstraintsApplied.js +0 -24
  552. package/dist/generated/types/closeConstraintsApplied.js.map +0 -1
  553. package/dist/generated/types/closeConstraintsCancelled.d.ts +0 -16
  554. package/dist/generated/types/closeConstraintsCancelled.d.ts.map +0 -1
  555. package/dist/generated/types/closeConstraintsCancelled.js +0 -18
  556. package/dist/generated/types/closeConstraintsCancelled.js.map +0 -1
  557. package/dist/generated/types/closeConstraintsQueued.d.ts +0 -20
  558. package/dist/generated/types/closeConstraintsQueued.d.ts.map +0 -1
  559. package/dist/generated/types/closeConstraintsQueued.js +0 -24
  560. package/dist/generated/types/closeConstraintsQueued.js.map +0 -1
  561. package/dist/generated/types/constraintEntry.d.ts +0 -39
  562. package/dist/generated/types/constraintEntry.d.ts.map +0 -1
  563. package/dist/generated/types/constraintEntry.js +0 -31
  564. package/dist/generated/types/constraintEntry.js.map +0 -1
  565. package/dist/generated/types/constraintEntryZC.d.ts +0 -68
  566. package/dist/generated/types/constraintEntryZC.d.ts.map +0 -1
  567. package/dist/generated/types/constraintEntryZC.js +0 -49
  568. package/dist/generated/types/constraintEntryZC.js.map +0 -1
  569. package/dist/generated/types/constraintOperator.d.ts +0 -22
  570. package/dist/generated/types/constraintOperator.d.ts.map +0 -1
  571. package/dist/generated/types/constraintOperator.js +0 -28
  572. package/dist/generated/types/constraintOperator.js.map +0 -1
  573. package/dist/generated/types/constraintsChangeApplied.d.ts +0 -30
  574. package/dist/generated/types/constraintsChangeApplied.d.ts.map +0 -1
  575. package/dist/generated/types/constraintsChangeApplied.js +0 -32
  576. package/dist/generated/types/constraintsChangeApplied.js.map +0 -1
  577. package/dist/generated/types/constraintsChangeCancelled.d.ts +0 -16
  578. package/dist/generated/types/constraintsChangeCancelled.d.ts.map +0 -1
  579. package/dist/generated/types/constraintsChangeCancelled.js +0 -18
  580. package/dist/generated/types/constraintsChangeCancelled.js.map +0 -1
  581. package/dist/generated/types/constraintsChangeQueued.d.ts +0 -30
  582. package/dist/generated/types/constraintsChangeQueued.d.ts.map +0 -1
  583. package/dist/generated/types/constraintsChangeQueued.js +0 -32
  584. package/dist/generated/types/constraintsChangeQueued.js.map +0 -1
  585. package/dist/generated/types/dataConstraint.d.ts +0 -23
  586. package/dist/generated/types/dataConstraint.d.ts.map +0 -1
  587. package/dist/generated/types/dataConstraint.js +0 -27
  588. package/dist/generated/types/dataConstraint.js.map +0 -1
  589. package/dist/generated/types/dataConstraintZC.d.ts +0 -20
  590. package/dist/generated/types/dataConstraintZC.d.ts.map +0 -1
  591. package/dist/generated/types/dataConstraintZC.js +0 -30
  592. package/dist/generated/types/dataConstraintZC.js.map +0 -1
  593. package/dist/generated/types/discriminatorFormat.d.ts +0 -25
  594. package/dist/generated/types/discriminatorFormat.d.ts.map +0 -1
  595. package/dist/generated/types/discriminatorFormat.js +0 -31
  596. package/dist/generated/types/discriminatorFormat.js.map +0 -1
  597. package/dist/generated/types/escrowCreated.d.ts +0 -30
  598. package/dist/generated/types/escrowCreated.d.ts.map +0 -1
  599. package/dist/generated/types/escrowCreated.js +0 -34
  600. package/dist/generated/types/escrowCreated.js.map +0 -1
  601. package/dist/generated/types/escrowRefunded.d.ts +0 -26
  602. package/dist/generated/types/escrowRefunded.d.ts.map +0 -1
  603. package/dist/generated/types/escrowRefunded.js +0 -30
  604. package/dist/generated/types/escrowRefunded.js.map +0 -1
  605. package/dist/generated/types/escrowSettled.d.ts +0 -26
  606. package/dist/generated/types/escrowSettled.d.ts.map +0 -1
  607. package/dist/generated/types/escrowSettled.js +0 -30
  608. package/dist/generated/types/escrowSettled.js.map +0 -1
  609. package/dist/generated/types/escrowStatus.d.ts +0 -18
  610. package/dist/generated/types/escrowStatus.d.ts.map +0 -1
  611. package/dist/generated/types/escrowStatus.js +0 -24
  612. package/dist/generated/types/escrowStatus.js.map +0 -1
  613. package/dist/generated/types/instructionConstraintsCreated.d.ts +0 -34
  614. package/dist/generated/types/instructionConstraintsCreated.d.ts.map +0 -1
  615. package/dist/generated/types/instructionConstraintsCreated.js +0 -36
  616. package/dist/generated/types/instructionConstraintsCreated.js.map +0 -1
  617. package/dist/generated/types/pdaAllocated.d.ts +0 -24
  618. package/dist/generated/types/pdaAllocated.d.ts.map +0 -1
  619. package/dist/generated/types/pdaAllocated.js.map +0 -1
  620. package/dist/generated/types/pdaExtended.d.ts +0 -24
  621. package/dist/generated/types/pdaExtended.d.ts.map +0 -1
  622. package/dist/generated/types/pdaExtended.js +0 -28
  623. package/dist/generated/types/pdaExtended.js.map +0 -1
  624. package/dist/integrations/protocol-handler.d.ts +0 -59
  625. package/dist/integrations/protocol-handler.d.ts.map +0 -1
  626. package/dist/integrations/protocol-handler.js +0 -9
  627. package/dist/integrations/protocol-handler.js.map +0 -1
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Canonical Borsh-style encoder primitives — shared utilities.
3
+ *
4
+ * APPEND-ONLY DISCIPLINE. The TA-19 policy preview digest
5
+ * (`policy/compute-policy-preview-digest.ts`) and the AL3 SealInput intent
6
+ * digest (`seal/intent-digest.ts`, Phase 9 Batch I) both depend on these
7
+ * primitives being byte-stable across SDK versions. Adding a new primitive
8
+ * is fine; CHANGING the byte layout of an existing one would break every
9
+ * downstream cross-impl Rust↔TS hash and silently invalidate every
10
+ * previously-signed policy preview digest.
11
+ *
12
+ * Mirrors the Rust-side conventions used by `solana_program::hash::hash`
13
+ * over Borsh-encoded structs:
14
+ * - Little-endian for all multi-byte integers (u16/u32/u64).
15
+ * - Vec<T> = u32 LE length prefix ++ flat element bytes (no per-element
16
+ * framing).
17
+ * - bool encoded as u8 (0 or 1; the canonical Borsh wire format).
18
+ * - Pubkey = raw 32 bytes (base58 decoded).
19
+ * - SHA-256 over the canonical-encoded byte string.
20
+ *
21
+ * Primitives are deliberately small, stateless, and side-effect-free so
22
+ * they can be unit-tested in isolation and reused without surprises.
23
+ */
24
+ import { sha256 as nobleSha256 } from "@noble/hashes/sha2";
25
+ // ── Base58 decode (no external dep) ─────────────────────────────────────────
26
+ //
27
+ // Solana pubkeys are base58 strings; we need the raw 32 bytes. The SDK has
28
+ // many base58 helpers downstream but importing from `kit-adapter` here would
29
+ // create a cycle (kit-adapter imports from `core/` which is consumed by
30
+ // digest helpers). Inline a small standard-Bitcoin-alphabet decoder.
31
+ const BASE58_ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
32
+ const BASE58_INDEX = (() => {
33
+ const r = Object.create(null);
34
+ for (let i = 0; i < BASE58_ALPHABET.length; i++) {
35
+ r[BASE58_ALPHABET[i]] = i;
36
+ }
37
+ return r;
38
+ })();
39
+ /**
40
+ * Decode a Solana base58 pubkey to its 32-byte raw form. Throws on any
41
+ * input that doesn't decode to exactly 32 bytes (catches malformed
42
+ * pubkeys before they corrupt the canonical encoding).
43
+ *
44
+ * @throws Error if `s` is empty, contains an invalid base58 character,
45
+ * or decodes to a byte length other than 32.
46
+ */
47
+ export function base58Decode32(s) {
48
+ if (s.length === 0) {
49
+ throw new Error("base58Decode32: empty input");
50
+ }
51
+ let leadingZeros = 0;
52
+ while (leadingZeros < s.length && s[leadingZeros] === "1") {
53
+ leadingZeros++;
54
+ }
55
+ // Big integer mode: walk digits, base-256 carry.
56
+ const bytes = [];
57
+ for (let i = 0; i < s.length; i++) {
58
+ const c = s[i];
59
+ const v = BASE58_INDEX[c];
60
+ if (v === undefined) {
61
+ throw new Error(`base58Decode32: invalid char '${c}'`);
62
+ }
63
+ let carry = v;
64
+ for (let j = 0; j < bytes.length; j++) {
65
+ carry += bytes[j] * 58;
66
+ bytes[j] = carry & 0xff;
67
+ carry >>>= 8;
68
+ }
69
+ while (carry > 0) {
70
+ bytes.push(carry & 0xff);
71
+ carry >>>= 8;
72
+ }
73
+ }
74
+ // bytes is little-endian; reverse and prepend leading zeros.
75
+ const out = new Uint8Array(leadingZeros + bytes.length);
76
+ for (let i = 0; i < bytes.length; i++) {
77
+ out[leadingZeros + (bytes.length - 1 - i)] = bytes[i];
78
+ }
79
+ if (out.length !== 32) {
80
+ throw new Error(`base58Decode32: expected 32-byte pubkey, got ${out.length} bytes`);
81
+ }
82
+ return out;
83
+ }
84
+ // ── Cursor writers ──────────────────────────────────────────────────────────
85
+ //
86
+ // Each writer takes a DataView + offset and returns the new offset. The
87
+ // `DataView` interface is browser- and Node-portable. All multi-byte integers
88
+ // are little-endian (matching `solana_program` + Borsh canonical encoding).
89
+ /** Write u8 (single byte). Returns new offset. */
90
+ export function writeU8(view, offset, v) {
91
+ view.setUint8(offset, v & 0xff);
92
+ return offset + 1;
93
+ }
94
+ /** Write u16 little-endian. Returns new offset. */
95
+ export function writeU16Le(view, offset, v) {
96
+ view.setUint16(offset, v, true);
97
+ return offset + 2;
98
+ }
99
+ /** Write u32 little-endian. Returns new offset. */
100
+ export function writeU32Le(view, offset, v) {
101
+ view.setUint32(offset, v, true);
102
+ return offset + 4;
103
+ }
104
+ /** Write u64 little-endian. Returns new offset. */
105
+ export function writeU64Le(view, offset, v) {
106
+ view.setBigUint64(offset, v, true);
107
+ return offset + 8;
108
+ }
109
+ /** Write a bool as a single 0/1 byte. Returns new offset. */
110
+ export function writeBool(view, offset, v) {
111
+ view.setUint8(offset, v ? 1 : 0);
112
+ return offset + 1;
113
+ }
114
+ // ── SHA-256 hasher ──────────────────────────────────────────────────────────
115
+ /**
116
+ * SHA-256 over the input bytes. Backed by `@noble/hashes/sha256` — pure
117
+ * JS, browser- and Bun-compatible, byte-identical to Node's `node:crypto`
118
+ * for the same input (TA-19 cross-impl fixture suite verifies this).
119
+ *
120
+ * Phase 9 Batch I switched the backend from `node:crypto` to noble so AL3
121
+ * intent-digest can ship the same primitive across Node, Bun, and the
122
+ * browser without runtime-conditional imports.
123
+ */
124
+ export function sha256(input) {
125
+ return nobleSha256(input);
126
+ }
127
+ /**
128
+ * Constant-time digest comparison (true if `a` and `b` are byte-equal).
129
+ * Uses XOR-accumulate with no early exit so timing leaks don't reveal
130
+ * which prefix matched. Used by cosign + policy-digest verification.
131
+ */
132
+ export function digestsEqual(a, b) {
133
+ if (a.length !== b.length)
134
+ return false;
135
+ let acc = 0;
136
+ for (let i = 0; i < a.length; i++) {
137
+ acc |= (a[i] ^ b[i]) & 0xff;
138
+ }
139
+ return acc === 0;
140
+ }
141
+ //# sourceMappingURL=canonical-encode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical-encode.js","sourceRoot":"","sources":["../src/canonical-encode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,264 @@
1
+ /**
2
+ * G4 (audit close) — TA-09 client-side cosign helper.
3
+ *
4
+ * Closes the G4 gate of Phase 6: the on-chain TA-09 cosign workflow is
5
+ * implemented at `queue_policy_update.rs` (handler lines 286-328) and
6
+ * re-validated at `apply_pending_policy.rs` (handler lines 70-84), but the
7
+ * SDK previously had NO client-side path to PRODUCE a valid cosign session +
8
+ * digest. This file ships that path.
9
+ *
10
+ * Usage (illustrative — non-Kit caller):
11
+ *
12
+ * import { buildCosignBundle } from "@usesigil/kit";
13
+ *
14
+ * const bundle = buildCosignBundle({
15
+ * cosignSessionPubkey: cosigner.address,
16
+ * ownerSigner: owner, // unused at digest time — see note below
17
+ * dailySpendingCapUsd: 800_000_000n, // raise from 500_000_000 → elevated
18
+ * });
19
+ *
20
+ * await queuePolicyUpdate({
21
+ * ...args,
22
+ * cosignSession: bundle.cosignSession,
23
+ * newPolicyPreviewDigest: previewDigest, // separate TA-19 digest
24
+ * // cosign digest IS NOT a queue arg — the on-chain handler RECOMPUTES
25
+ * // it from the queue args + cosign_session pubkey and stores the
26
+ * // result on PendingPolicyUpdate. Apply re-validates by recomputing.
27
+ * });
28
+ *
29
+ * Why the helper exists if the cosign digest isn't a queue arg:
30
+ * - The on-chain handler classifies an "elevated mutation" via comparing
31
+ * `Option::Some(new) > live` (raises) / `new.contains(p) where !live.contains(p)`
32
+ * (expansions). If you're queueing what you BELIEVE is elevated, this
33
+ * helper produces the digest you EXPECT the on-chain handler to store,
34
+ * so your client can:
35
+ * (a) sanity-check elevation up-front before submitting a tx (and ask
36
+ * the user for the cosigner signature explicitly), and
37
+ * (b) compare against `PendingPolicyUpdate.cosignDigest` after queue,
38
+ * catching any silent SDK encoder drift.
39
+ * - The cosign session pubkey IS a queue arg (`cosign_session: Pubkey`).
40
+ * For elevated mutations the handler rejects `Pubkey::default()` with
41
+ * `ErrCosignRequired`, and ALSO requires the corresponding signer in
42
+ * `remaining_accounts` with `is_signer == true`.
43
+ *
44
+ * G3 + G6 elevation triggers — what counts as "elevated" (all bound by this
45
+ * digest as of Round 2 B4 F-1, 2026-05-19):
46
+ * - raises_daily_cap = daily_spending_cap_usd: Some(new) > live
47
+ * - raises_max_tx = max_transaction_amount_usd: Some(new) > live
48
+ * - expands_destinations = allowed_destinations: any new pubkey not in live
49
+ * OR new.len() > live.len()
50
+ * - expands_protocols = protocols: any new pubkey not in live OR
51
+ * new.len() > live.len()
52
+ * - lowers_floor = stable_balance_floor: Some(new) < live (G3)
53
+ * - raises_per_recipient_cap = per_recipient_daily_cap_usd:
54
+ * Some(new) > live (G3)
55
+ * - disables_protocol_caps = has_protocol_caps: Some(false) while live=true (G3)
56
+ * - shrinks_or_raises_caps = protocol_caps: any entry mutated (G3)
57
+ * - disables_cosign = cosign_required: Some(false) while live=true (G6)
58
+ *
59
+ * Round 2 B4 F-1 fix (2026-05-19): the cosign digest binding now extends to
60
+ * ALL G3 + G6 triggers. Previously the digest only bound positions 1-5
61
+ * (cosign_session, daily/max-tx caps, destinations, protocols) — the G3/G6
62
+ * elevation triggers ELEVATED the queue but were NOT bound by this digest
63
+ * (they were bound only by TA-19 policy_preview_digest). That left a gap:
64
+ * a tampered SDK or discriminator-collision attack on the pending PDA
65
+ * could mutate those triggers between queue and apply without producing a
66
+ * cosign-digest mismatch. With the extension, every elevation trigger is
67
+ * now bound by BOTH the cosign digest (intent) and TA-19 (byte safety).
68
+ *
69
+ * Phase 4 PEN-CROSS-3 pattern reference:
70
+ * PEN-CROSS-3 introduced sibling-handler digest binding (constraints/post-
71
+ * assertion flips). The same defense-in-depth pattern applies here: the
72
+ * on-chain TA-09 handler recomputes the cosign digest at BOTH queue (queue
73
+ * binding) AND apply (re-validation). A rogue program with the same
74
+ * discriminator on the pending PDA cannot rewrite args between queue and
75
+ * apply without producing a digest mismatch.
76
+ *
77
+ * @see `programs/sigil/src/utils/cosign_digest.rs` — canonical Rust impl
78
+ * @see `programs/sigil/src/instructions/queue_policy_update.rs:286-328` —
79
+ * queue-time gate + digest binding
80
+ * @see `programs/sigil/src/instructions/apply_pending_policy.rs:70-84` —
81
+ * apply-time re-validation
82
+ * @see `sdk/kit/src/policy/compute-cosign-digest.ts` — SDK-side digest helper
83
+ */
84
+ import type { Address, TransactionSigner } from "./kit-adapter.js";
85
+ /**
86
+ * CANONICAL `cosign_session` ARG CONTRACT — Round 2 §RP-2 B4 F-3 (2026-05-19).
87
+ *
88
+ * Every Sigil instruction that supports the cosign opt-in path accepts a
89
+ * `cosign_session: Pubkey` argument. This contract documents what a non-Codama
90
+ * SDK consumer MUST pass to avoid the silent rejection path the on-chain
91
+ * handler took as of Round 2 B4 F-3 Option A:
92
+ *
93
+ * • NON-ELEVATED queue (the default for every mutation that does NOT
94
+ * raise daily_cap / max_tx, expand destinations / protocols, lower
95
+ * stable_balance_floor, raise per_recipient_daily_cap_usd, disable
96
+ * protocol_caps, mutate protocol_caps entries, or disable cosign):
97
+ * Pass `Pubkey::default()` — the SystemProgram pubkey
98
+ * `11111111111111111111111111111111` (32 zero bytes).
99
+ * Do NOT include any cosigner in `remaining_accounts`.
100
+ *
101
+ * • ELEVATED queue (raising daily_cap, expanding destinations, etc. — see
102
+ * the full trigger list in the `CosignArgs` JSDoc below):
103
+ * Pass a REAL session pubkey (non-default AND distinct from owner),
104
+ * AND include that session pubkey in `remaining_accounts` with
105
+ * `is_signer == true`.
106
+ * Use {@link buildCosignBundle} to mirror the on-chain digest the
107
+ * handler will recompute + store on `PendingPolicyUpdate`.
108
+ *
109
+ * • REJECT path: passing a non-default `cosign_session` on a non-elevated
110
+ * queue surfaces `InvalidPermissions` (6088). This is INTENTIONAL —
111
+ * the on-chain handler refuses to silently downgrade a caller's
112
+ * declared intent. See Round 2 §RP-2 B4 F-3 Option A rationale in
113
+ * `queue_policy_update.rs` (and the corresponding test fixtures in
114
+ * `tests/policy-digest-invariant.ts`).
115
+ *
116
+ * This contract applies to: `queue_policy_update`, `queue_agent_permissions`,
117
+ * and any future queue handler that takes a `cosign_session` arg. The Codama
118
+ * generated client surfaces this as a typed `Address` field; hand-rolled
119
+ * builders MUST follow the contract above to avoid `InvalidPermissions`.
120
+ */
121
+ /**
122
+ * Arguments for {@link buildCosignBundle}. Mirrors the elevated-mutation
123
+ * subset of `queue_policy_update` args.
124
+ */
125
+ export interface CosignArgs {
126
+ /**
127
+ * The cosigning session pubkey to bind into the digest. MUST be:
128
+ * 1. Distinct from the owner's pubkey (handler rejects same-key cosign
129
+ * under `ErrCosignRequired` — same-key collapses the two-signer gate),
130
+ * 2. Non-default (i.e. NOT `11111111111111111111111111111111`), and
131
+ * 3. Present in the queue transaction's `remaining_accounts` with
132
+ * `is_signer == true`.
133
+ *
134
+ * The caller is responsible for (3) — this helper produces the digest, the
135
+ * tx builder includes the signer.
136
+ *
137
+ * See the "CANONICAL `cosign_session` ARG CONTRACT" block above for the
138
+ * non-elevated vs elevated vs reject paths. Round 2 §RP-2 B4 F-3 (2026-05-19).
139
+ */
140
+ cosignSessionPubkey: Address;
141
+ /**
142
+ * The owner who will sign the queue tx. Currently UNUSED by digest
143
+ * derivation (the cosign digest binds the cosign_session pubkey, not the
144
+ * owner — owner authority is established by Solana's `is_signer` check on
145
+ * the owner account). Accepted as a constructor arg for symmetry with the
146
+ * full queue signing surface and to surface the "two distinct signers"
147
+ * requirement at the type level.
148
+ */
149
+ ownerSigner: TransactionSigner;
150
+ /**
151
+ * Pending `daily_spending_cap_usd` (6-decimal USDC face value).
152
+ * Raising this beyond the live policy value ELEVATES the queue.
153
+ * Bound by THIS cosign digest.
154
+ */
155
+ dailySpendingCapUsd?: bigint | null;
156
+ /**
157
+ * Pending `max_transaction_amount_usd` (6-decimal USDC face value).
158
+ * Raising this beyond the live policy value ELEVATES the queue.
159
+ * Bound by THIS cosign digest.
160
+ */
161
+ maxTransactionAmountUsd?: bigint | null;
162
+ /**
163
+ * Pending `allowed_destinations`. Adding any pubkey not in live (or
164
+ * growing the list) ELEVATES the queue. Bound by THIS cosign digest.
165
+ *
166
+ * NOTE: order matters — the on-chain handler treats `[A, B]` and `[B, A]`
167
+ * as DIFFERENT digests (ordered encoding). Always pass destinations in the
168
+ * same order the owner signed.
169
+ */
170
+ allowedDestinations?: readonly Address[] | null;
171
+ /**
172
+ * Pending `protocols`. Adding any pubkey not in live (or growing the list)
173
+ * ELEVATES the queue. Bound by THIS cosign digest. Same ordering caveat as
174
+ * `allowedDestinations`.
175
+ */
176
+ protocols?: readonly Address[] | null;
177
+ /**
178
+ * Pending `stable_balance_floor` (6-decimal USDC face value). LOWERING
179
+ * this below the live policy value ELEVATES the queue (G3 audit fix
180
+ * 2026-05-18). Round 2 B4 F-1: now BOUND by this cosign digest at
181
+ * canonical position 6.
182
+ */
183
+ stableBalanceFloor?: bigint | null;
184
+ /**
185
+ * Pending `per_recipient_daily_cap_usd` (6-decimal USDC face value).
186
+ * RAISING this above the live policy value ELEVATES the queue (G3 audit
187
+ * fix 2026-05-18). Round 2 B4 F-1: now BOUND by this cosign digest at
188
+ * canonical position 7.
189
+ */
190
+ perRecipientDailyCapUsd?: bigint | null;
191
+ /**
192
+ * Pending `has_protocol_caps` flag. Setting this to `false` while the
193
+ * live policy is `true` ELEVATES the queue (disabling protocol caps
194
+ * entirely). Round 2 B4 F-1: BOUND by this cosign digest at canonical
195
+ * position 8.
196
+ */
197
+ hasProtocolCaps?: boolean | null;
198
+ /**
199
+ * Pending `protocol_caps` Vec<u64> arg (6-decimal USDC face values,
200
+ * parallel to `protocols`). Mutating individual caps (shrink-to-zero or
201
+ * raise) ELEVATES the queue. Round 2 B4 F-1: BOUND by this cosign digest
202
+ * at canonical position 9. Same ordering caveat as `protocols` (parallel
203
+ * arrays — order is load-bearing).
204
+ */
205
+ protocolCaps?: readonly bigint[] | null;
206
+ /**
207
+ * Pending `cosign_required` flag. Setting this to `false` while the live
208
+ * policy is `true` ELEVATES the queue (G6 one-way ratchet — disabling
209
+ * cosign requires cosign). Round 2 B4 F-1: BOUND by this cosign digest
210
+ * at canonical position 10.
211
+ */
212
+ cosignRequired?: boolean | null;
213
+ }
214
+ /**
215
+ * Bundle produced by {@link buildCosignBundle}. Pass `cosignSession` as the
216
+ * `cosign_session` queue arg; the on-chain handler will recompute and store
217
+ * `cosignDigest` on `PendingPolicyUpdate.cosignDigest` (the SDK consumer can
218
+ * fetch + compare for a defense-in-depth sanity check after the queue tx
219
+ * lands).
220
+ */
221
+ export interface CosignBundle {
222
+ /**
223
+ * The cosigning session pubkey, same as {@link CosignArgs.cosignSessionPubkey}.
224
+ * Pass this directly as the `cosign_session` arg to `queue_policy_update`.
225
+ */
226
+ cosignSession: Address;
227
+ /**
228
+ * The 32-byte SHA-256 digest the on-chain handler will recompute + store.
229
+ * Equal to the on-chain `compute_cosign_digest` over the same inputs.
230
+ *
231
+ * The caller does NOT pass this directly to `queue_policy_update` — the
232
+ * on-chain handler recomputes it from the queue args + cosign_session.
233
+ * Use this to:
234
+ * (a) sanity-check what the on-chain handler WILL store, and
235
+ * (b) compare to `PendingPolicyUpdate.cosignDigest` after queue to catch
236
+ * SDK encoder drift.
237
+ */
238
+ cosignDigest: Uint8Array;
239
+ }
240
+ /**
241
+ * Produce a cosign session + digest bundle for an elevated `queue_policy_update`.
242
+ *
243
+ * Pass the same elevated-mutation fields you intend to send to
244
+ * `queue_policy_update`. The helper:
245
+ * 1. Validates that the cosign session is non-default and distinct from
246
+ * the owner.
247
+ * 2. Computes the canonical cosign digest mirroring the on-chain
248
+ * `compute_cosign_digest` byte-for-byte.
249
+ * 3. Returns the bundle.
250
+ *
251
+ * IMPORTANT: this helper does NOT enforce that the mutation IS elevated. The
252
+ * on-chain handler does that detection. If you call this for a non-elevated
253
+ * mutation, the bundle is technically valid but the handler will set
254
+ * `pending.cosign_digest = [0u8; 32]` and `pending.cosign_session =
255
+ * Pubkey::default()` instead of binding to the cosigner. Use the bundle when
256
+ * you have already determined elevation is required, e.g. via an SDK-side
257
+ * elevation check before constructing the tx.
258
+ *
259
+ * @throws if `cosignSessionPubkey` is `11111111111111111111111111111111` (default)
260
+ * @throws if `cosignSessionPubkey` equals `ownerSigner.address`
261
+ * @throws if any address fails base58 decoding to 32 bytes
262
+ */
263
+ export declare function buildCosignBundle(args: CosignArgs): CosignBundle;
264
+ //# sourceMappingURL=cosign-helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosign-helper.d.ts","sourceRoot":"","sources":["../src/cosign-helper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkFG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;;;;;;;;OAaG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAE7B;;;;;;;OAOG;IACH,WAAW,EAAE,iBAAiB,CAAC;IAY/B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpC;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAExC;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAAC;IAEhD;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAAC;IAStC;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnC;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAExC;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAEjC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAExC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACjC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB;;;;;;;;;;OAUG;IACH,YAAY,EAAE,UAAU,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,CA+ChE"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * G4 (audit close) — TA-09 client-side cosign helper.
3
+ *
4
+ * Closes the G4 gate of Phase 6: the on-chain TA-09 cosign workflow is
5
+ * implemented at `queue_policy_update.rs` (handler lines 286-328) and
6
+ * re-validated at `apply_pending_policy.rs` (handler lines 70-84), but the
7
+ * SDK previously had NO client-side path to PRODUCE a valid cosign session +
8
+ * digest. This file ships that path.
9
+ *
10
+ * Usage (illustrative — non-Kit caller):
11
+ *
12
+ * import { buildCosignBundle } from "@usesigil/kit";
13
+ *
14
+ * const bundle = buildCosignBundle({
15
+ * cosignSessionPubkey: cosigner.address,
16
+ * ownerSigner: owner, // unused at digest time — see note below
17
+ * dailySpendingCapUsd: 800_000_000n, // raise from 500_000_000 → elevated
18
+ * });
19
+ *
20
+ * await queuePolicyUpdate({
21
+ * ...args,
22
+ * cosignSession: bundle.cosignSession,
23
+ * newPolicyPreviewDigest: previewDigest, // separate TA-19 digest
24
+ * // cosign digest IS NOT a queue arg — the on-chain handler RECOMPUTES
25
+ * // it from the queue args + cosign_session pubkey and stores the
26
+ * // result on PendingPolicyUpdate. Apply re-validates by recomputing.
27
+ * });
28
+ *
29
+ * Why the helper exists if the cosign digest isn't a queue arg:
30
+ * - The on-chain handler classifies an "elevated mutation" via comparing
31
+ * `Option::Some(new) > live` (raises) / `new.contains(p) where !live.contains(p)`
32
+ * (expansions). If you're queueing what you BELIEVE is elevated, this
33
+ * helper produces the digest you EXPECT the on-chain handler to store,
34
+ * so your client can:
35
+ * (a) sanity-check elevation up-front before submitting a tx (and ask
36
+ * the user for the cosigner signature explicitly), and
37
+ * (b) compare against `PendingPolicyUpdate.cosignDigest` after queue,
38
+ * catching any silent SDK encoder drift.
39
+ * - The cosign session pubkey IS a queue arg (`cosign_session: Pubkey`).
40
+ * For elevated mutations the handler rejects `Pubkey::default()` with
41
+ * `ErrCosignRequired`, and ALSO requires the corresponding signer in
42
+ * `remaining_accounts` with `is_signer == true`.
43
+ *
44
+ * G3 + G6 elevation triggers — what counts as "elevated" (all bound by this
45
+ * digest as of Round 2 B4 F-1, 2026-05-19):
46
+ * - raises_daily_cap = daily_spending_cap_usd: Some(new) > live
47
+ * - raises_max_tx = max_transaction_amount_usd: Some(new) > live
48
+ * - expands_destinations = allowed_destinations: any new pubkey not in live
49
+ * OR new.len() > live.len()
50
+ * - expands_protocols = protocols: any new pubkey not in live OR
51
+ * new.len() > live.len()
52
+ * - lowers_floor = stable_balance_floor: Some(new) < live (G3)
53
+ * - raises_per_recipient_cap = per_recipient_daily_cap_usd:
54
+ * Some(new) > live (G3)
55
+ * - disables_protocol_caps = has_protocol_caps: Some(false) while live=true (G3)
56
+ * - shrinks_or_raises_caps = protocol_caps: any entry mutated (G3)
57
+ * - disables_cosign = cosign_required: Some(false) while live=true (G6)
58
+ *
59
+ * Round 2 B4 F-1 fix (2026-05-19): the cosign digest binding now extends to
60
+ * ALL G3 + G6 triggers. Previously the digest only bound positions 1-5
61
+ * (cosign_session, daily/max-tx caps, destinations, protocols) — the G3/G6
62
+ * elevation triggers ELEVATED the queue but were NOT bound by this digest
63
+ * (they were bound only by TA-19 policy_preview_digest). That left a gap:
64
+ * a tampered SDK or discriminator-collision attack on the pending PDA
65
+ * could mutate those triggers between queue and apply without producing a
66
+ * cosign-digest mismatch. With the extension, every elevation trigger is
67
+ * now bound by BOTH the cosign digest (intent) and TA-19 (byte safety).
68
+ *
69
+ * Phase 4 PEN-CROSS-3 pattern reference:
70
+ * PEN-CROSS-3 introduced sibling-handler digest binding (constraints/post-
71
+ * assertion flips). The same defense-in-depth pattern applies here: the
72
+ * on-chain TA-09 handler recomputes the cosign digest at BOTH queue (queue
73
+ * binding) AND apply (re-validation). A rogue program with the same
74
+ * discriminator on the pending PDA cannot rewrite args between queue and
75
+ * apply without producing a digest mismatch.
76
+ *
77
+ * @see `programs/sigil/src/utils/cosign_digest.rs` — canonical Rust impl
78
+ * @see `programs/sigil/src/instructions/queue_policy_update.rs:286-328` —
79
+ * queue-time gate + digest binding
80
+ * @see `programs/sigil/src/instructions/apply_pending_policy.rs:70-84` —
81
+ * apply-time re-validation
82
+ * @see `sdk/kit/src/policy/compute-cosign-digest.ts` — SDK-side digest helper
83
+ */
84
+ import { computeCosignDigest } from "./policy/compute-cosign-digest.js";
85
+ /**
86
+ * Produce a cosign session + digest bundle for an elevated `queue_policy_update`.
87
+ *
88
+ * Pass the same elevated-mutation fields you intend to send to
89
+ * `queue_policy_update`. The helper:
90
+ * 1. Validates that the cosign session is non-default and distinct from
91
+ * the owner.
92
+ * 2. Computes the canonical cosign digest mirroring the on-chain
93
+ * `compute_cosign_digest` byte-for-byte.
94
+ * 3. Returns the bundle.
95
+ *
96
+ * IMPORTANT: this helper does NOT enforce that the mutation IS elevated. The
97
+ * on-chain handler does that detection. If you call this for a non-elevated
98
+ * mutation, the bundle is technically valid but the handler will set
99
+ * `pending.cosign_digest = [0u8; 32]` and `pending.cosign_session =
100
+ * Pubkey::default()` instead of binding to the cosigner. Use the bundle when
101
+ * you have already determined elevation is required, e.g. via an SDK-side
102
+ * elevation check before constructing the tx.
103
+ *
104
+ * @throws if `cosignSessionPubkey` is `11111111111111111111111111111111` (default)
105
+ * @throws if `cosignSessionPubkey` equals `ownerSigner.address`
106
+ * @throws if any address fails base58 decoding to 32 bytes
107
+ */
108
+ export function buildCosignBundle(args) {
109
+ // Pre-flight: the on-chain handler rejects default/owner-same cosign with
110
+ // ErrCosignRequired (6089). Surface the same failures at the SDK level
111
+ // with a clearer error message — better DX than digging through Anchor
112
+ // error codes after a failed simulation.
113
+ const defaultPubkey = "11111111111111111111111111111111";
114
+ if (args.cosignSessionPubkey === defaultPubkey) {
115
+ throw new Error("buildCosignBundle: cosignSessionPubkey is the default pubkey " +
116
+ "(11111111111111111111111111111111). The on-chain handler will reject " +
117
+ "this with ErrCosignRequired (6089). Pass a real session pubkey.");
118
+ }
119
+ if (args.cosignSessionPubkey ===
120
+ args.ownerSigner.address) {
121
+ throw new Error("buildCosignBundle: cosignSessionPubkey equals ownerSigner.address. " +
122
+ "The on-chain handler rejects same-key cosign with ErrCosignRequired " +
123
+ "(6089) because it collapses the two-signer gate. Use a distinct " +
124
+ "cosigning session pubkey.");
125
+ }
126
+ const digest = computeCosignDigest({
127
+ cosignSession: args.cosignSessionPubkey,
128
+ dailySpendingCapUsd: args.dailySpendingCapUsd ?? null,
129
+ maxTransactionAmountUsd: args.maxTransactionAmountUsd ?? null,
130
+ allowedDestinations: args.allowedDestinations ?? null,
131
+ protocols: args.protocols ?? null,
132
+ // Round 2 B4 F-1 (2026-05-19): the 5 new G3 + G6 elevation triggers are
133
+ // now BOUND by this cosign digest. Flow them through to mirror the
134
+ // on-chain handler's CosignDigestFields construction in
135
+ // `queue_policy_update.rs` (handler passes all 10 fields).
136
+ stableBalanceFloor: args.stableBalanceFloor ?? null,
137
+ perRecipientDailyCapUsd: args.perRecipientDailyCapUsd ?? null,
138
+ hasProtocolCaps: args.hasProtocolCaps ?? null,
139
+ protocolCaps: args.protocolCaps ?? null,
140
+ cosignRequired: args.cosignRequired ?? null,
141
+ });
142
+ return {
143
+ cosignSession: args.cosignSessionPubkey,
144
+ cosignDigest: digest,
145
+ };
146
+ }
147
+ //# sourceMappingURL=cosign-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosign-helper.js","sourceRoot":"","sources":["../src/cosign-helper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkFG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AA2LxE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAgB;IAChD,0EAA0E;IAC1E,uEAAuE;IACvE,uEAAuE;IACvE,yCAAyC;IACzC,MAAM,aAAa,GACjB,kCAAwD,CAAC;IAC3D,IAAI,IAAI,CAAC,mBAAmB,KAAK,aAAa,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,+DAA+D;YAC7D,uEAAuE;YACvE,iEAAiE,CACpE,CAAC;IACJ,CAAC;IACD,IACG,IAAI,CAAC,mBAAyC;QAC9C,IAAI,CAAC,WAAW,CAAC,OAA6B,EAC/C,CAAC;QACD,MAAM,IAAI,KAAK,CACb,qEAAqE;YACnE,sEAAsE;YACtE,kEAAkE;YAClE,2BAA2B,CAC9B,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,mBAAmB,CAAC;QACjC,aAAa,EAAE,IAAI,CAAC,mBAAmB;QACvC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,IAAI,IAAI;QACrD,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,IAAI,IAAI;QAC7D,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,IAAI,IAAI;QACrD,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;QACjC,wEAAwE;QACxE,mEAAmE;QACnE,wDAAwD;QACxD,2DAA2D;QAC3D,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,IAAI;QACnD,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,IAAI,IAAI;QAC7D,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,IAAI;QAC7C,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI;QACvC,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI;KAC5C,CAAC,CAAC;IAEH,OAAO;QACL,aAAa,EAAE,IAAI,CAAC,mBAAmB;QACvC,YAAY,EAAE,MAAM;KACrB,CAAC;AACJ,CAAC"}