@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,152 @@
1
+ /**
2
+ * S21 — `buildUnsigned()` composer.
3
+ *
4
+ * Public composer that wraps {@link buildOwnerTransaction} to give SDK
5
+ * consumers an offline-signing path. The only structural difference from
6
+ * `buildOwnerTransaction` is that `feePayer` is a plain {@link Address}, not
7
+ * a {@link TransactionSigner}; this composer wraps it in `createNoopSigner`
8
+ * internally so the caller never needs to construct a signer object.
9
+ *
10
+ * # Three use cases
11
+ *
12
+ * 1. **Squads multisig.** The caller submits the returned `unsignedTxBytes`
13
+ * buffer to a Squads proposal; signers from the multisig sign
14
+ * asynchronously, then the assembled signed tx is broadcast.
15
+ *
16
+ * 2. **CLI tools.** The caller pipes the `unsignedTxBytes` buffer to
17
+ * `solana sign-tx` (or any cold-key signing tool) for offline signing.
18
+ *
19
+ * 3. **Cost preview.** The caller decodes `unsignedTxBytes` client-side via
20
+ * {@link getCompiledTransactionMessageDecoder} to estimate CU + fee
21
+ * before submission. Pass `simulate: true` to additionally fetch the
22
+ * RPC's `unitsConsumed` estimate via `simulateTransaction`.
23
+ *
24
+ * # Why a separate function instead of `buildOwnerTransaction`?
25
+ *
26
+ * `buildOwnerTransaction` requires a {@link TransactionSigner} for the
27
+ * `owner` field. Callers without a wired-up signer (e.g. a CLI receiving
28
+ * just a pubkey via flag, or a Squads-flow UI that never holds the key) had
29
+ * to construct a `createNoopSigner(addr)` themselves AND know the function
30
+ * returns a `wireBase64` string they then have to base64-decode. This
31
+ * composer hands back a `Uint8Array` directly + a structured object with
32
+ * the original {@link Instruction}[] for inspection, in one call.
33
+ *
34
+ * The unsigned bytes have the standard Solana wire layout:
35
+ * `[num_sigs:u8][signatures:64*num_sigs][messageBytes]`
36
+ * where every signature slot is zero-filled (caller hasn't signed yet).
37
+ */
38
+ import { createNoopSigner, getCompiledTransactionMessageDecoder, } from "./kit-adapter.js";
39
+ import { buildOwnerTransaction } from "./owner-transaction.js";
40
+ // ─── buildUnsigned ──────────────────────────────────────────────────────────
41
+ /**
42
+ * Build an unsigned versioned transaction for offline signing.
43
+ *
44
+ * @see {@link BuildUnsignedInput} for input fields.
45
+ * @see {@link BuildUnsignedResult} for the returned shape and the three use
46
+ * cases this composer was added for (Squads, CLI, cost preview).
47
+ *
48
+ * @example Squads multisig
49
+ * ```ts
50
+ * const { unsignedTxBytes } = await buildUnsigned({
51
+ * rpc, feePayer: squad.address, instructions: [transferIx],
52
+ * });
53
+ * await squads.createProposal({ transaction: unsignedTxBytes });
54
+ * ```
55
+ *
56
+ * @example CLI cold-key signing
57
+ * ```ts
58
+ * const { unsignedTxBytes } = await buildUnsigned({ rpc, feePayer, instructions });
59
+ * await fs.writeFile("tx.bin", unsignedTxBytes);
60
+ * // then: solana sign-tx tx.bin
61
+ * ```
62
+ *
63
+ * @example Cost preview with on-chain simulation
64
+ * ```ts
65
+ * const { estimatedComputeUnits, message } = await buildUnsigned({
66
+ * rpc, feePayer, instructions, simulate: true,
67
+ * });
68
+ * console.log(`Estimated CU: ${estimatedComputeUnits}`);
69
+ * console.log(`Static accounts: ${message.staticAccounts.length}`);
70
+ * ```
71
+ */
72
+ export async function buildUnsigned(input) {
73
+ const ownerSigner = createNoopSigner(input.feePayer);
74
+ const ownerTx = await buildOwnerTransaction({
75
+ rpc: input.rpc,
76
+ owner: ownerSigner,
77
+ instructions: input.instructions,
78
+ network: input.network ?? "devnet",
79
+ ...(input.computeUnitLimit !== undefined
80
+ ? { computeUnits: input.computeUnitLimit }
81
+ : {}),
82
+ ...(input.computeUnitPrice !== undefined
83
+ ? { priorityFeeMicroLamports: input.computeUnitPrice }
84
+ : {}),
85
+ ...(input.addressLookupTables !== undefined
86
+ ? { addressLookupTables: input.addressLookupTables }
87
+ : {}),
88
+ ...(input.blockhash !== undefined ? { blockhash: input.blockhash } : {}),
89
+ });
90
+ const unsignedTxBytes = base64ToUint8Array(ownerTx.wireBase64);
91
+ // Decode the compiled message portion for inspection.
92
+ // Wire layout: [num_sigs:u8][signatures:64*num_sigs][messageBytes].
93
+ // Versioned-tx with this composer always has exactly 1 required signer
94
+ // (the fee payer), so the message starts at offset 65 — but read
95
+ // num_sigs defensively in case future changes add co-signers.
96
+ const numSigs = unsignedTxBytes[0] ?? 0;
97
+ const messageBytes = unsignedTxBytes.slice(1 + 64 * numSigs);
98
+ const message = getCompiledTransactionMessageDecoder().decode(messageBytes);
99
+ let estimatedComputeUnits;
100
+ if (input.simulate) {
101
+ estimatedComputeUnits = await safeSimulateUnitsConsumed(input.rpc, ownerTx.wireBase64);
102
+ }
103
+ return {
104
+ unsignedTxBytes,
105
+ instructions: input.instructions,
106
+ ...(estimatedComputeUnits !== undefined ? { estimatedComputeUnits } : {}),
107
+ feePayer: input.feePayer,
108
+ recentBlockhash: ownerTx.blockhash.blockhash,
109
+ lastValidBlockHeight: ownerTx.blockhash.lastValidBlockHeight,
110
+ message,
111
+ };
112
+ }
113
+ // ─── Internal helpers ───────────────────────────────────────────────────────
114
+ /**
115
+ * Decode base64 → Uint8Array via `atob` (built-in Node ≥ 16 + browser).
116
+ * Same pattern as `preview-create-vault.ts` — kept private here to avoid
117
+ * a cross-file dependency on a private helper.
118
+ */
119
+ function base64ToUint8Array(b64) {
120
+ const binary = atob(b64);
121
+ const bytes = new Uint8Array(binary.length);
122
+ for (let i = 0; i < binary.length; i++) {
123
+ bytes[i] = binary.charCodeAt(i);
124
+ }
125
+ return bytes;
126
+ }
127
+ /**
128
+ * Run `simulateTransaction` and return `unitsConsumed` as a number.
129
+ * Best-effort — any failure (RPC error, missing `unitsConsumed`, sim error)
130
+ * returns `undefined` so the caller still gets the unsigned bytes. The
131
+ * simulate flag is for cost preview, not for blocking the build.
132
+ */
133
+ async function safeSimulateUnitsConsumed(rpc, wireBase64) {
134
+ try {
135
+ const result = await rpc
136
+ .simulateTransaction(wireBase64, {
137
+ encoding: "base64",
138
+ replaceRecentBlockhash: true,
139
+ sigVerify: false,
140
+ commitment: "confirmed",
141
+ })
142
+ .send();
143
+ const value = result.value;
144
+ if (!value || value.err || value.unitsConsumed == null)
145
+ return undefined;
146
+ return Number(value.unitsConsumed);
147
+ }
148
+ catch {
149
+ return undefined;
150
+ }
151
+ }
152
+ //# sourceMappingURL=build-unsigned.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-unsigned.js","sourceRoot":"","sources":["../src/build-unsigned.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * CAIP-2 Solana chain identifiers + AL4 isMainnet derivation.
3
+ * Phase 9 Batch J (ISC-77..80, 147).
4
+ *
5
+ * Per the CAIP-2 spec (https://chainagnostic.org/CAIPs/caip-2), Solana
6
+ * networks are identified by a `solana:<genesis-hash-prefix>` string. The
7
+ * canonical IDs are registered at
8
+ * https://github.com/ChainAgnostic/namespaces/blob/main/solana/caip2.md.
9
+ *
10
+ * Sigil SDK V2 ships AL4 as a CAIP-2 chain id PLUS a derived `isMainnet`
11
+ * boolean. Per Council ISC-147, exposing the full CAIP-2 string (not just
12
+ * the boolean) preserves the future ability to bind testnet / localnet
13
+ * intents without changing the SealResult shape — collapsing 4 networks
14
+ * into 2 was flagged as a "footgun in waiting".
15
+ */
16
+ /** CAIP-2 namespace for Solana. */
17
+ export declare const CAIP2_NAMESPACE_SOLANA: "solana";
18
+ /** Mainnet-beta CAIP-2 chain id. */
19
+ export declare const CAIP2_SOLANA_MAINNET: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp";
20
+ /** Devnet CAIP-2 chain id. */
21
+ export declare const CAIP2_SOLANA_DEVNET: "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1";
22
+ /** Testnet CAIP-2 chain id (declared for completeness; not currently produced by `toCaip2`). */
23
+ export declare const CAIP2_SOLANA_TESTNET: "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z";
24
+ /**
25
+ * The set of CAIP-2 strings the SDK currently emits. The narrower string
26
+ * literal type prevents callers from constructing ad-hoc strings.
27
+ */
28
+ export type SigilCaip2Chain = typeof CAIP2_SOLANA_MAINNET | typeof CAIP2_SOLANA_DEVNET;
29
+ /**
30
+ * Convert the SDK's internal `"devnet" | "mainnet"` network discriminant
31
+ * to its canonical CAIP-2 chain id.
32
+ *
33
+ * @throws if `network` is not one of the two supported values. (Type
34
+ * narrowing prevents this at compile time; the runtime check catches
35
+ * misuse from JS callers or `any`-cast bypasses.)
36
+ */
37
+ export declare function toCaip2(network: "devnet" | "mainnet"): SigilCaip2Chain;
38
+ /**
39
+ * Derive the AL4 `isMainnet` boolean from a CAIP-2 chain id.
40
+ *
41
+ * `isMainnet === true` ONLY when the chain id matches the canonical
42
+ * mainnet-beta value. Devnet, testnet, localnet — anything else — all
43
+ * return false. This is intentional: `isMainnet` is a SECURITY signal
44
+ * (gate destructive defaults behind it); fuzzy matching would be a
45
+ * footgun.
46
+ */
47
+ export declare function isMainnetCaip2(chain: string): boolean;
48
+ /**
49
+ * Convenience: combine `toCaip2` + `isMainnetCaip2` from a `"devnet" | "mainnet"`
50
+ * input. Used by `seal()` to populate `SealResult.network` and
51
+ * `SealResult.isMainnet` in a single call.
52
+ */
53
+ export declare function deriveNetworkIdentity(network: "devnet" | "mainnet"): {
54
+ network: SigilCaip2Chain;
55
+ isMainnet: boolean;
56
+ };
57
+ /**
58
+ * Convert a Sigil CAIP-2 string to a Wallet Standard chain identifier.
59
+ *
60
+ * Wallet Standard (https://github.com/wallet-standard/wallet-standard) uses
61
+ * `solana:<network-id>` per the SIWS / Solana Mobile spec, which is the
62
+ * exact same shape as Sigil's CAIP-2 strings (per the ChainAgnostic CAIP-2
63
+ * registry — https://chainagnostic.org/CAIPs/caip-2). The conversion is
64
+ * therefore identity at the value level — but the explicit helper
65
+ * documents the boundary so that future wallet-standard surface changes
66
+ * (e.g. an extra cluster discriminant, a versioning suffix) localize to
67
+ * this one function rather than spreading raw CAIP-2 casts across SIWS,
68
+ * connector adapters, and the seal() result shape.
69
+ *
70
+ * The return type is the wider template-literal `\`solana:${string}\`` to
71
+ * keep the helper assignable to Wallet Standard `IdentifierString` /
72
+ * `WalletWithSolanaFeatures` chain fields without consumers needing to
73
+ * narrow back through `SigilCaip2Chain`.
74
+ *
75
+ * @param caip2 — a CAIP-2 chain id produced by {@link toCaip2} or one of
76
+ * the `CAIP2_SOLANA_*` constants. The argument MUST already be in the
77
+ * `solana:<id>` form; this helper does not validate.
78
+ */
79
+ export declare function toWalletStandardChain(caip2: SigilCaip2Chain): `solana:${string}`;
80
+ /**
81
+ * Network discriminant the SDK accepts as a `"devnet" | "mainnet"`
82
+ * string. Re-exported here so consumers of `verifyNetworkIdentity` don't
83
+ * need a separate import.
84
+ */
85
+ export type SigilNetwork = "devnet" | "mainnet";
86
+ /**
87
+ * Canonical Solana genesis hashes, keyed by network. Values are the full
88
+ * 44-character base58 hashes returned by `rpc.getGenesisHash()`.
89
+ *
90
+ * mainnet-beta: 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d
91
+ * devnet: EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG
92
+ * testnet: 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY
93
+ *
94
+ * Source: Solana Foundation Cluster RPC documentation
95
+ * (https://solana.com/docs/core/clusters). Hardcoded here so the
96
+ * verification path is offline-deterministic — a malicious RPC cannot
97
+ * substitute its own "canonical" hash.
98
+ */
99
+ export declare const SOLANA_GENESIS_HASHES: {
100
+ readonly mainnet: "5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d";
101
+ readonly devnet: "EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG";
102
+ readonly testnet: "4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY";
103
+ };
104
+ /** The set of networks `verifyNetworkIdentity` can report as `actualNetwork`. */
105
+ export type SigilActualNetwork = keyof typeof SOLANA_GENESIS_HASHES | "unknown";
106
+ /**
107
+ * Minimal RPC shape consumed by {@link verifyNetworkIdentity}. Matches
108
+ * the `@solana/kit` RPC contract so callers can pass the same `rpc`
109
+ * object they already use elsewhere in the SDK.
110
+ */
111
+ export interface GenesisRpc {
112
+ getGenesisHash(): {
113
+ send(): Promise<string>;
114
+ };
115
+ }
116
+ /** Structured result returned by {@link verifyNetworkIdentity}. */
117
+ export interface NetworkIdentityResult {
118
+ /** `true` iff the RPC's reported genesis matches the caller's `claimedNetwork`. */
119
+ verified: boolean;
120
+ /**
121
+ * The network the RPC actually serves, derived from `getGenesisHash()`.
122
+ * `"unknown"` indicates the RPC returned a hash that doesn't match any
123
+ * canonical cluster (likely a Surfpool/LiteSVM local validator).
124
+ */
125
+ actualNetwork: SigilActualNetwork;
126
+ /**
127
+ * Optional human-readable explanation. Populated when `verified === false`
128
+ * (mismatch) OR when `getGenesisHash()` errored / returned malformed data.
129
+ */
130
+ reason?: string;
131
+ /** The raw hash observed from the RPC (for diagnostic logging). */
132
+ observedGenesisHash?: string;
133
+ /** The hash the SDK expected for `claimedNetwork`. */
134
+ expectedGenesisHash: string;
135
+ }
136
+ /**
137
+ * Verify that an RPC actually serves the cluster a caller claims it does.
138
+ *
139
+ * **Opt-in, non-throwing diagnostic.** Unlike `assertGenesisHash` in
140
+ * seal.ts (which is called inside `createSigilClientAsync` and throws on
141
+ * mismatch), this helper returns a structured result so callers can
142
+ * branch on it without `try/catch`. Use it in preflight checks, in
143
+ * `mainnetConfirmed` confirmation flows that want to surface the
144
+ * mismatch to the operator, or anywhere raw-tx-building code paths
145
+ * bypass the client factory.
146
+ *
147
+ * **Does NOT change `seal()` default behaviour.** The existing seal
148
+ * factory still calls `assertGenesisHash` (which throws) — that's the
149
+ * load-bearing safety gate. `verifyNetworkIdentity` is purely additive.
150
+ *
151
+ * @example
152
+ * ```ts
153
+ * const result = await verifyNetworkIdentity({
154
+ * rpc,
155
+ * claimedNetwork: "mainnet",
156
+ * });
157
+ * if (!result.verified) {
158
+ * console.error(
159
+ * `Refusing to submit mainnet tx — RPC reports ${result.actualNetwork} ` +
160
+ * `(genesis ${result.observedGenesisHash}); ` +
161
+ * `expected mainnet (${result.expectedGenesisHash}).`,
162
+ * );
163
+ * throw new Error("Network mismatch");
164
+ * }
165
+ * ```
166
+ */
167
+ export declare function verifyNetworkIdentity(input: {
168
+ rpc: GenesisRpc;
169
+ claimedNetwork: SigilNetwork;
170
+ }): Promise<NetworkIdentityResult>;
171
+ //# sourceMappingURL=caip2-network.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caip2-network.d.ts","sourceRoot":"","sources":["../src/caip2-network.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,mCAAmC;AACnC,eAAO,MAAM,sBAAsB,EAAG,QAAiB,CAAC;AAExD,oCAAoC;AACpC,eAAO,MAAM,oBAAoB,EAC/B,yCAAkD,CAAC;AAErD,8BAA8B;AAC9B,eAAO,MAAM,mBAAmB,EAC9B,yCAAkD,CAAC;AAErD,gGAAgG;AAChG,eAAO,MAAM,oBAAoB,EAC/B,yCAAkD,CAAC;AAErD;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB,OAAO,oBAAoB,GAC3B,OAAO,mBAAmB,CAAC;AAE/B;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,SAAS,GAAG,eAAe,CAatE;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,QAAQ,GAAG,SAAS,GAAG;IACpE,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;CACpB,CAGA;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,GACrB,UAAU,MAAM,EAAE,CAEpB;AAmBD;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEhD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB;;;;CAIxB,CAAC;AAEX,iFAAiF;AACjF,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,qBAAqB,GAAG,SAAS,CAAC;AAEhF;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,cAAc,IAAI;QAAE,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC;CAC/C;AAED,mEAAmE;AACnE,MAAM,WAAW,qBAAqB;IACpC,mFAAmF;IACnF,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,aAAa,EAAE,kBAAkB,CAAC;IAClC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sDAAsD;IACtD,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IACjD,GAAG,EAAE,UAAU,CAAC;IAChB,cAAc,EAAE,YAAY,CAAC;CAC9B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAoEjC"}
@@ -0,0 +1,202 @@
1
+ /**
2
+ * CAIP-2 Solana chain identifiers + AL4 isMainnet derivation.
3
+ * Phase 9 Batch J (ISC-77..80, 147).
4
+ *
5
+ * Per the CAIP-2 spec (https://chainagnostic.org/CAIPs/caip-2), Solana
6
+ * networks are identified by a `solana:<genesis-hash-prefix>` string. The
7
+ * canonical IDs are registered at
8
+ * https://github.com/ChainAgnostic/namespaces/blob/main/solana/caip2.md.
9
+ *
10
+ * Sigil SDK V2 ships AL4 as a CAIP-2 chain id PLUS a derived `isMainnet`
11
+ * boolean. Per Council ISC-147, exposing the full CAIP-2 string (not just
12
+ * the boolean) preserves the future ability to bind testnet / localnet
13
+ * intents without changing the SealResult shape — collapsing 4 networks
14
+ * into 2 was flagged as a "footgun in waiting".
15
+ */
16
+ import { SigilSdkDomainError } from "./errors/sdk.js";
17
+ import { SIGIL_ERROR__SDK__INVALID_NETWORK } from "./errors/codes.js";
18
+ /** CAIP-2 namespace for Solana. */
19
+ export const CAIP2_NAMESPACE_SOLANA = "solana";
20
+ /** Mainnet-beta CAIP-2 chain id. */
21
+ export const CAIP2_SOLANA_MAINNET = "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp";
22
+ /** Devnet CAIP-2 chain id. */
23
+ export const CAIP2_SOLANA_DEVNET = "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1";
24
+ /** Testnet CAIP-2 chain id (declared for completeness; not currently produced by `toCaip2`). */
25
+ export const CAIP2_SOLANA_TESTNET = "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z";
26
+ /**
27
+ * Convert the SDK's internal `"devnet" | "mainnet"` network discriminant
28
+ * to its canonical CAIP-2 chain id.
29
+ *
30
+ * @throws if `network` is not one of the two supported values. (Type
31
+ * narrowing prevents this at compile time; the runtime check catches
32
+ * misuse from JS callers or `any`-cast bypasses.)
33
+ */
34
+ export function toCaip2(network) {
35
+ if (network === "mainnet")
36
+ return CAIP2_SOLANA_MAINNET;
37
+ if (network === "devnet")
38
+ return CAIP2_SOLANA_DEVNET;
39
+ throw new SigilSdkDomainError(SIGIL_ERROR__SDK__INVALID_NETWORK, `toCaip2: network must be 'devnet' or 'mainnet', got ${String(network)}`, {
40
+ context: {
41
+ operation: "toCaip2",
42
+ received: String(network),
43
+ },
44
+ });
45
+ }
46
+ /**
47
+ * Derive the AL4 `isMainnet` boolean from a CAIP-2 chain id.
48
+ *
49
+ * `isMainnet === true` ONLY when the chain id matches the canonical
50
+ * mainnet-beta value. Devnet, testnet, localnet — anything else — all
51
+ * return false. This is intentional: `isMainnet` is a SECURITY signal
52
+ * (gate destructive defaults behind it); fuzzy matching would be a
53
+ * footgun.
54
+ */
55
+ export function isMainnetCaip2(chain) {
56
+ return chain === CAIP2_SOLANA_MAINNET;
57
+ }
58
+ /**
59
+ * Convenience: combine `toCaip2` + `isMainnetCaip2` from a `"devnet" | "mainnet"`
60
+ * input. Used by `seal()` to populate `SealResult.network` and
61
+ * `SealResult.isMainnet` in a single call.
62
+ */
63
+ export function deriveNetworkIdentity(network) {
64
+ const chain = toCaip2(network);
65
+ return { network: chain, isMainnet: isMainnetCaip2(chain) };
66
+ }
67
+ /**
68
+ * Convert a Sigil CAIP-2 string to a Wallet Standard chain identifier.
69
+ *
70
+ * Wallet Standard (https://github.com/wallet-standard/wallet-standard) uses
71
+ * `solana:<network-id>` per the SIWS / Solana Mobile spec, which is the
72
+ * exact same shape as Sigil's CAIP-2 strings (per the ChainAgnostic CAIP-2
73
+ * registry — https://chainagnostic.org/CAIPs/caip-2). The conversion is
74
+ * therefore identity at the value level — but the explicit helper
75
+ * documents the boundary so that future wallet-standard surface changes
76
+ * (e.g. an extra cluster discriminant, a versioning suffix) localize to
77
+ * this one function rather than spreading raw CAIP-2 casts across SIWS,
78
+ * connector adapters, and the seal() result shape.
79
+ *
80
+ * The return type is the wider template-literal `\`solana:${string}\`` to
81
+ * keep the helper assignable to Wallet Standard `IdentifierString` /
82
+ * `WalletWithSolanaFeatures` chain fields without consumers needing to
83
+ * narrow back through `SigilCaip2Chain`.
84
+ *
85
+ * @param caip2 — a CAIP-2 chain id produced by {@link toCaip2} or one of
86
+ * the `CAIP2_SOLANA_*` constants. The argument MUST already be in the
87
+ * `solana:<id>` form; this helper does not validate.
88
+ */
89
+ export function toWalletStandardChain(caip2) {
90
+ return caip2;
91
+ }
92
+ /**
93
+ * Canonical Solana genesis hashes, keyed by network. Values are the full
94
+ * 44-character base58 hashes returned by `rpc.getGenesisHash()`.
95
+ *
96
+ * mainnet-beta: 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d
97
+ * devnet: EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG
98
+ * testnet: 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY
99
+ *
100
+ * Source: Solana Foundation Cluster RPC documentation
101
+ * (https://solana.com/docs/core/clusters). Hardcoded here so the
102
+ * verification path is offline-deterministic — a malicious RPC cannot
103
+ * substitute its own "canonical" hash.
104
+ */
105
+ export const SOLANA_GENESIS_HASHES = {
106
+ mainnet: "5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d",
107
+ devnet: "EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG",
108
+ testnet: "4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY",
109
+ };
110
+ /**
111
+ * Verify that an RPC actually serves the cluster a caller claims it does.
112
+ *
113
+ * **Opt-in, non-throwing diagnostic.** Unlike `assertGenesisHash` in
114
+ * seal.ts (which is called inside `createSigilClientAsync` and throws on
115
+ * mismatch), this helper returns a structured result so callers can
116
+ * branch on it without `try/catch`. Use it in preflight checks, in
117
+ * `mainnetConfirmed` confirmation flows that want to surface the
118
+ * mismatch to the operator, or anywhere raw-tx-building code paths
119
+ * bypass the client factory.
120
+ *
121
+ * **Does NOT change `seal()` default behaviour.** The existing seal
122
+ * factory still calls `assertGenesisHash` (which throws) — that's the
123
+ * load-bearing safety gate. `verifyNetworkIdentity` is purely additive.
124
+ *
125
+ * @example
126
+ * ```ts
127
+ * const result = await verifyNetworkIdentity({
128
+ * rpc,
129
+ * claimedNetwork: "mainnet",
130
+ * });
131
+ * if (!result.verified) {
132
+ * console.error(
133
+ * `Refusing to submit mainnet tx — RPC reports ${result.actualNetwork} ` +
134
+ * `(genesis ${result.observedGenesisHash}); ` +
135
+ * `expected mainnet (${result.expectedGenesisHash}).`,
136
+ * );
137
+ * throw new Error("Network mismatch");
138
+ * }
139
+ * ```
140
+ */
141
+ export async function verifyNetworkIdentity(input) {
142
+ const { rpc, claimedNetwork } = input;
143
+ if (claimedNetwork !== "devnet" && claimedNetwork !== "mainnet") {
144
+ // Defensive: JS callers or `any`-cast bypasses. Returned as
145
+ // unverified rather than throwing so the helper stays "diagnostic".
146
+ return {
147
+ verified: false,
148
+ actualNetwork: "unknown",
149
+ expectedGenesisHash: "",
150
+ reason: `claimedNetwork must be 'devnet' or 'mainnet', got ${String(claimedNetwork)}`,
151
+ };
152
+ }
153
+ const expectedGenesisHash = claimedNetwork === "mainnet"
154
+ ? SOLANA_GENESIS_HASHES.mainnet
155
+ : SOLANA_GENESIS_HASHES.devnet;
156
+ let observed;
157
+ try {
158
+ observed = await rpc.getGenesisHash().send();
159
+ }
160
+ catch (err) {
161
+ return {
162
+ verified: false,
163
+ actualNetwork: "unknown",
164
+ expectedGenesisHash,
165
+ reason: `getGenesisHash() failed: ${err instanceof Error ? err.message : String(err)}`,
166
+ };
167
+ }
168
+ if (typeof observed !== "string" || observed.length < 32) {
169
+ return {
170
+ verified: false,
171
+ actualNetwork: "unknown",
172
+ expectedGenesisHash,
173
+ observedGenesisHash: observed == null ? undefined : String(observed),
174
+ reason: "getGenesisHash() returned a malformed response — expected a 44-char base58 string",
175
+ };
176
+ }
177
+ // Identify the actual cluster the RPC serves.
178
+ let actualNetwork = "unknown";
179
+ for (const [name, hash] of Object.entries(SOLANA_GENESIS_HASHES)) {
180
+ if (observed === hash) {
181
+ actualNetwork = name;
182
+ break;
183
+ }
184
+ }
185
+ if (observed === expectedGenesisHash) {
186
+ return {
187
+ verified: true,
188
+ actualNetwork,
189
+ expectedGenesisHash,
190
+ observedGenesisHash: observed,
191
+ };
192
+ }
193
+ return {
194
+ verified: false,
195
+ actualNetwork,
196
+ expectedGenesisHash,
197
+ observedGenesisHash: observed,
198
+ reason: `Cluster mismatch — RPC reports ${actualNetwork} (genesis ${observed}) ` +
199
+ `but caller claimed ${claimedNetwork} (expected ${expectedGenesisHash}).`,
200
+ };
201
+ }
202
+ //# sourceMappingURL=caip2-network.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caip2-network.js","sourceRoot":"","sources":["../src/caip2-network.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
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
+ /**
25
+ * Decode a Solana base58 pubkey to its 32-byte raw form. Throws on any
26
+ * input that doesn't decode to exactly 32 bytes (catches malformed
27
+ * pubkeys before they corrupt the canonical encoding).
28
+ *
29
+ * @throws Error if `s` is empty, contains an invalid base58 character,
30
+ * or decodes to a byte length other than 32.
31
+ */
32
+ export declare function base58Decode32(s: string): Uint8Array;
33
+ /** Write u8 (single byte). Returns new offset. */
34
+ export declare function writeU8(view: DataView, offset: number, v: number): number;
35
+ /** Write u16 little-endian. Returns new offset. */
36
+ export declare function writeU16Le(view: DataView, offset: number, v: number): number;
37
+ /** Write u32 little-endian. Returns new offset. */
38
+ export declare function writeU32Le(view: DataView, offset: number, v: number): number;
39
+ /** Write u64 little-endian. Returns new offset. */
40
+ export declare function writeU64Le(view: DataView, offset: number, v: bigint): number;
41
+ /** Write a bool as a single 0/1 byte. Returns new offset. */
42
+ export declare function writeBool(view: DataView, offset: number, v: boolean): number;
43
+ /**
44
+ * SHA-256 over the input bytes. Backed by `@noble/hashes/sha256` — pure
45
+ * JS, browser- and Bun-compatible, byte-identical to Node's `node:crypto`
46
+ * for the same input (TA-19 cross-impl fixture suite verifies this).
47
+ *
48
+ * Phase 9 Batch I switched the backend from `node:crypto` to noble so AL3
49
+ * intent-digest can ship the same primitive across Node, Bun, and the
50
+ * browser without runtime-conditional imports.
51
+ */
52
+ export declare function sha256(input: Uint8Array): Uint8Array;
53
+ /**
54
+ * Constant-time digest comparison (true if `a` and `b` are byte-equal).
55
+ * Uses XOR-accumulate with no early exit so timing leaks don't reveal
56
+ * which prefix matched. Used by cosign + policy-digest verification.
57
+ */
58
+ export declare function digestsEqual(a: Uint8Array, b: Uint8Array): boolean;
59
+ //# sourceMappingURL=canonical-encode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical-encode.d.ts","sourceRoot":"","sources":["../src/canonical-encode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAqBH;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAsCpD;AAQD,kDAAkD;AAClD,wBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGzE;AAED,mDAAmD;AACnD,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED,mDAAmD;AACnD,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED,mDAAmD;AACnD,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAG5E;AAID;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAOlE"}