@usesigil/kit 0.13.0 → 0.16.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 (260) hide show
  1. package/dist/advanced-analytics.d.ts +3 -1
  2. package/dist/advanced-analytics.d.ts.map +1 -1
  3. package/dist/advanced-analytics.js +4 -6
  4. package/dist/advanced-analytics.js.map +1 -1
  5. package/dist/agent-bootstrap.d.ts +118 -0
  6. package/dist/agent-bootstrap.d.ts.map +1 -0
  7. package/dist/agent-bootstrap.js +211 -0
  8. package/dist/agent-bootstrap.js.map +1 -0
  9. package/dist/agent-errors.d.ts +3 -3
  10. package/dist/agent-errors.d.ts.map +1 -1
  11. package/dist/agent-errors.js +230 -206
  12. package/dist/agent-errors.js.map +1 -1
  13. package/dist/build-unsigned.d.ts +152 -0
  14. package/dist/build-unsigned.d.ts.map +1 -0
  15. package/dist/build-unsigned.js +152 -0
  16. package/dist/build-unsigned.js.map +1 -0
  17. package/dist/constraints/index.d.ts +23 -0
  18. package/dist/constraints/index.d.ts.map +1 -0
  19. package/dist/constraints/index.js +24 -0
  20. package/dist/constraints/index.js.map +1 -0
  21. package/dist/create-vault.d.ts +10 -2
  22. package/dist/create-vault.d.ts.map +1 -1
  23. package/dist/create-vault.js +10 -3
  24. package/dist/create-vault.js.map +1 -1
  25. package/dist/dashboard/constraint-builders.d.ts +82 -0
  26. package/dist/dashboard/constraint-builders.d.ts.map +1 -0
  27. package/dist/dashboard/constraint-builders.js +204 -0
  28. package/dist/dashboard/constraint-builders.js.map +1 -0
  29. package/dist/dashboard/errors.d.ts +37 -0
  30. package/dist/dashboard/errors.d.ts.map +1 -1
  31. package/dist/dashboard/errors.js +76 -0
  32. package/dist/dashboard/errors.js.map +1 -1
  33. package/dist/dashboard/from-json.d.ts.map +1 -1
  34. package/dist/dashboard/from-json.js +1 -5
  35. package/dist/dashboard/from-json.js.map +1 -1
  36. package/dist/dashboard/index.d.ts +31 -10
  37. package/dist/dashboard/index.d.ts.map +1 -1
  38. package/dist/dashboard/index.js +40 -10
  39. package/dist/dashboard/index.js.map +1 -1
  40. package/dist/dashboard/mutations.d.ts +60 -3
  41. package/dist/dashboard/mutations.d.ts.map +1 -1
  42. package/dist/dashboard/mutations.js +129 -32
  43. package/dist/dashboard/mutations.js.map +1 -1
  44. package/dist/dashboard/post-assertion-validation.d.ts +88 -0
  45. package/dist/dashboard/post-assertion-validation.d.ts.map +1 -0
  46. package/dist/dashboard/post-assertion-validation.js +191 -0
  47. package/dist/dashboard/post-assertion-validation.js.map +1 -0
  48. package/dist/dashboard/reads.d.ts +93 -1
  49. package/dist/dashboard/reads.d.ts.map +1 -1
  50. package/dist/dashboard/reads.js +244 -40
  51. package/dist/dashboard/reads.js.map +1 -1
  52. package/dist/dashboard/types.d.ts +149 -21
  53. package/dist/dashboard/types.d.ts.map +1 -1
  54. package/dist/errors/codes.js +1 -1
  55. package/dist/event-analytics.d.ts +1 -3
  56. package/dist/event-analytics.d.ts.map +1 -1
  57. package/dist/event-analytics.js +4 -9
  58. package/dist/event-analytics.js.map +1 -1
  59. package/dist/events.js +2 -2
  60. package/dist/events.js.map +1 -1
  61. package/dist/generated/accounts/agentVault.d.ts +0 -20
  62. package/dist/generated/accounts/agentVault.d.ts.map +1 -1
  63. package/dist/generated/accounts/agentVault.js +0 -2
  64. package/dist/generated/accounts/agentVault.js.map +1 -1
  65. package/dist/generated/accounts/pendingAgentPermissionsUpdate.d.ts +12 -0
  66. package/dist/generated/accounts/pendingAgentPermissionsUpdate.d.ts.map +1 -1
  67. package/dist/generated/accounts/pendingAgentPermissionsUpdate.js +3 -1
  68. package/dist/generated/accounts/pendingAgentPermissionsUpdate.js.map +1 -1
  69. package/dist/generated/accounts/pendingCloseConstraints.d.ts +12 -0
  70. package/dist/generated/accounts/pendingCloseConstraints.d.ts.map +1 -1
  71. package/dist/generated/accounts/pendingCloseConstraints.js +4 -2
  72. package/dist/generated/accounts/pendingCloseConstraints.js.map +1 -1
  73. package/dist/generated/accounts/pendingConstraintsUpdate.d.ts +14 -0
  74. package/dist/generated/accounts/pendingConstraintsUpdate.d.ts.map +1 -1
  75. package/dist/generated/accounts/pendingConstraintsUpdate.js +4 -2
  76. package/dist/generated/accounts/pendingConstraintsUpdate.js.map +1 -1
  77. package/dist/generated/accounts/pendingPolicyUpdate.d.ts +24 -8
  78. package/dist/generated/accounts/pendingPolicyUpdate.d.ts.map +1 -1
  79. package/dist/generated/accounts/pendingPolicyUpdate.js +6 -8
  80. package/dist/generated/accounts/pendingPolicyUpdate.js.map +1 -1
  81. package/dist/generated/accounts/policyConfig.d.ts +28 -18
  82. package/dist/generated/accounts/policyConfig.d.ts.map +1 -1
  83. package/dist/generated/accounts/policyConfig.js +4 -8
  84. package/dist/generated/accounts/policyConfig.js.map +1 -1
  85. package/dist/generated/accounts/sessionAuthority.d.ts +18 -8
  86. package/dist/generated/accounts/sessionAuthority.d.ts.map +1 -1
  87. package/dist/generated/accounts/sessionAuthority.js +4 -6
  88. package/dist/generated/accounts/sessionAuthority.js.map +1 -1
  89. package/dist/generated/errors/sigil.d.ts +95 -89
  90. package/dist/generated/errors/sigil.d.ts.map +1 -1
  91. package/dist/generated/errors/sigil.js +107 -98
  92. package/dist/generated/errors/sigil.js.map +1 -1
  93. package/dist/generated/event-discriminators.js +1 -1
  94. package/dist/generated/event-discriminators.js.map +1 -1
  95. package/dist/generated/instructions/cleanupOrphanConstraintsPda.d.ts +67 -0
  96. package/dist/generated/instructions/cleanupOrphanConstraintsPda.d.ts.map +1 -0
  97. package/dist/generated/instructions/cleanupOrphanConstraintsPda.js +120 -0
  98. package/dist/generated/instructions/cleanupOrphanConstraintsPda.js.map +1 -0
  99. package/dist/generated/instructions/freezeVault.d.ts +8 -5
  100. package/dist/generated/instructions/freezeVault.d.ts.map +1 -1
  101. package/dist/generated/instructions/freezeVault.js +14 -3
  102. package/dist/generated/instructions/freezeVault.js.map +1 -1
  103. package/dist/generated/instructions/index.d.ts +1 -1
  104. package/dist/generated/instructions/index.d.ts.map +1 -1
  105. package/dist/generated/instructions/index.js +1 -1
  106. package/dist/generated/instructions/index.js.map +1 -1
  107. package/dist/generated/instructions/initializeVault.d.ts +0 -8
  108. package/dist/generated/instructions/initializeVault.d.ts.map +1 -1
  109. package/dist/generated/instructions/initializeVault.js +0 -4
  110. package/dist/generated/instructions/initializeVault.js.map +1 -1
  111. package/dist/generated/instructions/queuePolicyUpdate.d.ts +8 -16
  112. package/dist/generated/instructions/queuePolicyUpdate.d.ts.map +1 -1
  113. package/dist/generated/instructions/queuePolicyUpdate.js +4 -8
  114. package/dist/generated/instructions/queuePolicyUpdate.js.map +1 -1
  115. package/dist/generated/programs/sigil.d.ts +26 -26
  116. package/dist/generated/programs/sigil.d.ts.map +1 -1
  117. package/dist/generated/programs/sigil.js +34 -34
  118. package/dist/generated/programs/sigil.js.map +1 -1
  119. package/dist/generated/types/accountConstraint.d.ts +16 -1
  120. package/dist/generated/types/accountConstraint.d.ts.map +1 -1
  121. package/dist/generated/types/accountConstraint.js +2 -0
  122. package/dist/generated/types/accountConstraint.js.map +1 -1
  123. package/dist/generated/types/accountConstraintZC.d.ts +7 -0
  124. package/dist/generated/types/accountConstraintZC.d.ts.map +1 -1
  125. package/dist/generated/types/accountConstraintZC.js +4 -2
  126. package/dist/generated/types/accountConstraintZC.js.map +1 -1
  127. package/dist/generated/types/constraintEntry.d.ts +0 -8
  128. package/dist/generated/types/constraintEntry.d.ts.map +1 -1
  129. package/dist/generated/types/constraintEntry.js +1 -5
  130. package/dist/generated/types/constraintEntry.js.map +1 -1
  131. package/dist/generated/types/constraintEntryZC.d.ts +22 -27
  132. package/dist/generated/types/constraintEntryZC.d.ts.map +1 -1
  133. package/dist/generated/types/constraintEntryZC.js +4 -6
  134. package/dist/generated/types/constraintEntryZC.js.map +1 -1
  135. package/dist/generated/types/index.d.ts +1 -1
  136. package/dist/generated/types/index.d.ts.map +1 -1
  137. package/dist/generated/types/index.js +1 -1
  138. package/dist/generated/types/index.js.map +1 -1
  139. package/dist/generated/types/orphanConstraintsPdaCleaned.d.ts +22 -0
  140. package/dist/generated/types/orphanConstraintsPdaCleaned.d.ts.map +1 -0
  141. package/dist/generated/types/{positionsSynced.js → orphanConstraintsPdaCleaned.js} +8 -10
  142. package/dist/generated/types/orphanConstraintsPdaCleaned.js.map +1 -0
  143. package/dist/generated/types/sessionFinalized.d.ts +0 -4
  144. package/dist/generated/types/sessionFinalized.d.ts.map +1 -1
  145. package/dist/generated/types/sessionFinalized.js +1 -3
  146. package/dist/generated/types/sessionFinalized.js.map +1 -1
  147. package/dist/generated/types/vaultFrozen.d.ts +12 -0
  148. package/dist/generated/types/vaultFrozen.d.ts.map +1 -1
  149. package/dist/generated/types/vaultFrozen.js +3 -1
  150. package/dist/generated/types/vaultFrozen.js.map +1 -1
  151. package/dist/index.d.ts +13 -3
  152. package/dist/index.d.ts.map +1 -1
  153. package/dist/index.js +23 -2
  154. package/dist/index.js.map +1 -1
  155. package/dist/inscribe.d.ts +0 -8
  156. package/dist/inscribe.d.ts.map +1 -1
  157. package/dist/inscribe.js +0 -2
  158. package/dist/inscribe.js.map +1 -1
  159. package/dist/kit-adapter.d.ts +1 -1
  160. package/dist/kit-adapter.d.ts.map +1 -1
  161. package/dist/kit-adapter.js +1 -1
  162. package/dist/kit-adapter.js.map +1 -1
  163. package/dist/logger.d.ts +48 -0
  164. package/dist/logger.d.ts.map +1 -1
  165. package/dist/logger.js +36 -0
  166. package/dist/logger.js.map +1 -1
  167. package/dist/owner-transaction.d.ts +8 -0
  168. package/dist/owner-transaction.d.ts.map +1 -1
  169. package/dist/owner-transaction.js +1 -0
  170. package/dist/owner-transaction.js.map +1 -1
  171. package/dist/post-assertions/cross-field-lte.d.ts +134 -0
  172. package/dist/post-assertions/cross-field-lte.d.ts.map +1 -0
  173. package/dist/post-assertions/cross-field-lte.js +129 -0
  174. package/dist/post-assertions/cross-field-lte.js.map +1 -0
  175. package/dist/post-assertions/index.d.ts +28 -0
  176. package/dist/post-assertions/index.d.ts.map +1 -0
  177. package/dist/post-assertions/index.js +28 -0
  178. package/dist/post-assertions/index.js.map +1 -0
  179. package/dist/post-assertions/presets/flash-trade.d.ts +139 -0
  180. package/dist/post-assertions/presets/flash-trade.d.ts.map +1 -0
  181. package/dist/post-assertions/presets/flash-trade.js +154 -0
  182. package/dist/post-assertions/presets/flash-trade.js.map +1 -0
  183. package/dist/presets.d.ts +1 -13
  184. package/dist/presets.d.ts.map +1 -1
  185. package/dist/presets.js +0 -10
  186. package/dist/presets.js.map +1 -1
  187. package/dist/preview-create-vault.d.ts +280 -0
  188. package/dist/preview-create-vault.d.ts.map +1 -0
  189. package/dist/preview-create-vault.js +477 -0
  190. package/dist/preview-create-vault.js.map +1 -0
  191. package/dist/protocol-registry/annotations/drift.json +7 -0
  192. package/dist/protocol-registry/annotations/flash-trade.json +7 -0
  193. package/dist/protocol-registry/annotations/jupiter-borrow.json +7 -0
  194. package/dist/protocol-registry/annotations/jupiter-earn.json +7 -0
  195. package/dist/protocol-registry/annotations/jupiter-lend.json +7 -0
  196. package/dist/protocol-registry/annotations/jupiter.json +7 -0
  197. package/dist/protocol-registry/annotations/kamino.json +7 -0
  198. package/dist/protocol-registry/index.d.ts +45 -0
  199. package/dist/protocol-registry/index.d.ts.map +1 -0
  200. package/dist/protocol-registry/index.js +76 -0
  201. package/dist/protocol-registry/index.js.map +1 -0
  202. package/dist/protocol-tier.d.ts +157 -0
  203. package/dist/protocol-tier.d.ts.map +1 -0
  204. package/dist/protocol-tier.js +104 -0
  205. package/dist/protocol-tier.js.map +1 -0
  206. package/dist/seal.d.ts.map +1 -1
  207. package/dist/seal.js +30 -12
  208. package/dist/seal.js.map +1 -1
  209. package/dist/sigil.d.ts +0 -8
  210. package/dist/sigil.d.ts.map +1 -1
  211. package/dist/simulation.d.ts.map +1 -1
  212. package/dist/simulation.js +131 -82
  213. package/dist/simulation.js.map +1 -1
  214. package/dist/testing/devnet.d.ts.map +1 -1
  215. package/dist/testing/devnet.js +0 -2
  216. package/dist/testing/devnet.js.map +1 -1
  217. package/dist/testing/errors/expect.d.ts +137 -0
  218. package/dist/testing/errors/expect.d.ts.map +1 -0
  219. package/dist/testing/errors/expect.js +372 -0
  220. package/dist/testing/errors/expect.js.map +1 -0
  221. package/dist/testing/errors/index.d.ts +3 -0
  222. package/dist/testing/errors/index.d.ts.map +1 -0
  223. package/dist/testing/errors/index.js +8 -0
  224. package/dist/testing/errors/index.js.map +1 -0
  225. package/dist/testing/errors/names.generated.d.ts +188 -0
  226. package/dist/testing/errors/names.generated.d.ts.map +1 -0
  227. package/dist/testing/errors/names.generated.js +183 -0
  228. package/dist/testing/errors/names.generated.js.map +1 -0
  229. package/dist/testing/index.d.ts +1 -0
  230. package/dist/testing/index.d.ts.map +1 -1
  231. package/dist/testing/index.js +8 -0
  232. package/dist/testing/index.js.map +1 -1
  233. package/dist/testing/mock-rpc.d.ts +8 -0
  234. package/dist/testing/mock-rpc.d.ts.map +1 -1
  235. package/dist/testing/mock-rpc.js +14 -0
  236. package/dist/testing/mock-rpc.js.map +1 -1
  237. package/dist/testing/mock-state.d.ts +0 -2
  238. package/dist/testing/mock-state.d.ts.map +1 -1
  239. package/dist/testing/mock-state.js +2 -5
  240. package/dist/testing/mock-state.js.map +1 -1
  241. package/dist/types.d.ts +1 -3
  242. package/dist/types.d.ts.map +1 -1
  243. package/dist/types.js +5 -9
  244. package/dist/types.js.map +1 -1
  245. package/dist/vault-analytics.d.ts +0 -1
  246. package/dist/vault-analytics.d.ts.map +1 -1
  247. package/dist/vault-analytics.js +0 -1
  248. package/dist/vault-analytics.js.map +1 -1
  249. package/package.json +15 -3
  250. package/dist/generated/instructions/syncPositions.d.ts +0 -44
  251. package/dist/generated/instructions/syncPositions.d.ts.map +0 -1
  252. package/dist/generated/instructions/syncPositions.js +0 -72
  253. package/dist/generated/instructions/syncPositions.js.map +0 -1
  254. package/dist/generated/types/positionsSynced.d.ts +0 -24
  255. package/dist/generated/types/positionsSynced.d.ts.map +0 -1
  256. package/dist/generated/types/positionsSynced.js.map +0 -1
  257. package/dist/integrations/protocol-handler.d.ts +0 -59
  258. package/dist/integrations/protocol-handler.d.ts.map +0 -1
  259. package/dist/integrations/protocol-handler.js +0 -9
  260. package/dist/integrations/protocol-handler.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"inscribe.js","sourceRoot":"","sources":["../src/inscribe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inscribe.js","sourceRoot":"","sources":["../src/inscribe.ts"],"names":[],"mappings":"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"}
@@ -21,5 +21,5 @@
21
21
  * here once and the entire SDK compiles.
22
22
  */
23
23
  export type { Address, AddressesByLookupTableAddress, Base64EncodedBytes, Base64EncodedWireTransaction, Commitment, Instruction, KeyPairSigner, ReadonlyUint8Array, Rpc, SolanaRpcApi, TransactionSigner, } from "@solana/kit";
24
- export { AccountRole, addSignersToTransactionMessage, appendTransactionMessageInstruction, appendTransactionMessageInstructions, compileTransaction, compressTransactionMessageUsingAddressLookupTables, createKeyPairSignerFromBytes, createSolanaRpc, createTransactionMessage, fetchAddressesForLookupTables, fetchEncodedAccounts, generateKeyPairSigner, getAddressDecoder, getAddressEncoder, getBase58Decoder, getBase64EncodedWireTransaction, getProgramDerivedAddress, getU64Decoder, isSome, pipe, setTransactionMessageFeePayer, setTransactionMessageLifetimeUsingBlockhash, signTransactionMessageWithSigners, } from "@solana/kit";
24
+ export { AccountRole, addSignersToTransactionMessage, appendTransactionMessageInstruction, appendTransactionMessageInstructions, compileTransaction, compressTransactionMessageUsingAddressLookupTables, createKeyPairSignerFromBytes, createNoopSigner, createSolanaRpc, createTransactionMessage, fetchAddressesForLookupTables, fetchEncodedAccounts, generateKeyPairSigner, getAddressDecoder, getAddressEncoder, getBase58Decoder, getBase64EncodedWireTransaction, getCompiledTransactionMessageDecoder, getProgramDerivedAddress, getU64Decoder, isSome, pipe, setTransactionMessageFeePayer, setTransactionMessageLifetimeUsingBlockhash, signTransactionMessageWithSigners, } from "@solana/kit";
25
25
  //# sourceMappingURL=kit-adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kit-adapter.d.ts","sourceRoot":"","sources":["../src/kit-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,YAAY,EACV,OAAO,EACP,6BAA6B,EAC7B,kBAAkB,EAClB,4BAA4B,EAC5B,UAAU,EACV,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,GAAG,EACH,YAAY,EACZ,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,WAAW,EACX,8BAA8B,EAC9B,mCAAmC,EACnC,oCAAoC,EACpC,kBAAkB,EAClB,kDAAkD,EAClD,4BAA4B,EAC5B,eAAe,EACf,wBAAwB,EACxB,6BAA6B,EAC7B,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,+BAA+B,EAC/B,wBAAwB,EACxB,aAAa,EACb,MAAM,EACN,IAAI,EACJ,6BAA6B,EAC7B,2CAA2C,EAC3C,iCAAiC,GAClC,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"kit-adapter.d.ts","sourceRoot":"","sources":["../src/kit-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,YAAY,EACV,OAAO,EACP,6BAA6B,EAC7B,kBAAkB,EAClB,4BAA4B,EAC5B,UAAU,EACV,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,GAAG,EACH,YAAY,EACZ,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,WAAW,EACX,8BAA8B,EAC9B,mCAAmC,EACnC,oCAAoC,EACpC,kBAAkB,EAClB,kDAAkD,EAClD,4BAA4B,EAC5B,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,6BAA6B,EAC7B,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,+BAA+B,EAC/B,oCAAoC,EACpC,wBAAwB,EACxB,aAAa,EACb,MAAM,EACN,IAAI,EACJ,6BAA6B,EAC7B,2CAA2C,EAC3C,iCAAiC,GAClC,MAAM,aAAa,CAAC"}
@@ -21,5 +21,5 @@
21
21
  * here once and the entire SDK compiles.
22
22
  */
23
23
  // ─── Value re-exports (tree-shake safe — named exports) ─────────────────────
24
- export { AccountRole, addSignersToTransactionMessage, appendTransactionMessageInstruction, appendTransactionMessageInstructions, compileTransaction, compressTransactionMessageUsingAddressLookupTables, createKeyPairSignerFromBytes, createSolanaRpc, createTransactionMessage, fetchAddressesForLookupTables, fetchEncodedAccounts, generateKeyPairSigner, getAddressDecoder, getAddressEncoder, getBase58Decoder, getBase64EncodedWireTransaction, getProgramDerivedAddress, getU64Decoder, isSome, pipe, setTransactionMessageFeePayer, setTransactionMessageLifetimeUsingBlockhash, signTransactionMessageWithSigners, } from "@solana/kit";
24
+ export { AccountRole, addSignersToTransactionMessage, appendTransactionMessageInstruction, appendTransactionMessageInstructions, compileTransaction, compressTransactionMessageUsingAddressLookupTables, createKeyPairSignerFromBytes, createNoopSigner, createSolanaRpc, createTransactionMessage, fetchAddressesForLookupTables, fetchEncodedAccounts, generateKeyPairSigner, getAddressDecoder, getAddressEncoder, getBase58Decoder, getBase64EncodedWireTransaction, getCompiledTransactionMessageDecoder, getProgramDerivedAddress, getU64Decoder, isSome, pipe, setTransactionMessageFeePayer, setTransactionMessageLifetimeUsingBlockhash, signTransactionMessageWithSigners, } from "@solana/kit";
25
25
  //# sourceMappingURL=kit-adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kit-adapter.js","sourceRoot":"","sources":["../src/kit-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAiBH,+EAA+E;AAC/E,OAAO,EACL,WAAW,EACX,8BAA8B,EAC9B,mCAAmC,EACnC,oCAAoC,EACpC,kBAAkB,EAClB,kDAAkD,EAClD,4BAA4B,EAC5B,eAAe,EACf,wBAAwB,EACxB,6BAA6B,EAC7B,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,+BAA+B,EAC/B,wBAAwB,EACxB,aAAa,EACb,MAAM,EACN,IAAI,EACJ,6BAA6B,EAC7B,2CAA2C,EAC3C,iCAAiC,GAClC,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"kit-adapter.js","sourceRoot":"","sources":["../src/kit-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAiBH,+EAA+E;AAC/E,OAAO,EACL,WAAW,EACX,8BAA8B,EAC9B,mCAAmC,EACnC,oCAAoC,EACpC,kBAAkB,EAClB,kDAAkD,EAClD,4BAA4B,EAC5B,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,6BAA6B,EAC7B,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,+BAA+B,EAC/B,oCAAoC,EACpC,wBAAwB,EACxB,aAAa,EACb,MAAM,EACN,IAAI,EACJ,6BAA6B,EAC7B,2CAA2C,EAC3C,iCAAiC,GAClC,MAAM,aAAa,CAAC"}
package/dist/logger.d.ts CHANGED
@@ -74,4 +74,52 @@ export declare function setSigilModuleLogger(logger: SigilLogger): void;
74
74
  * thread a per-call logger should call this to emit warnings/errors.
75
75
  */
76
76
  export declare function getSigilModuleLogger(): SigilLogger;
77
+ /**
78
+ * Sanitizer for a structured-warn payload. Takes the raw payload and
79
+ * returns a `Record<string, unknown>` that is safe to ship to an
80
+ * observability backend (Sentry, Datadog, OpenTelemetry).
81
+ *
82
+ * **Contract:**
83
+ * - MUST NOT include secrets (seed phrases, private keys, signed-but-not-
84
+ * yet-broadcast transactions, raw user input that may contain tokens).
85
+ * - MUST NOT include PII unless the consumer's data-residency policy
86
+ * explicitly permits it for this backend.
87
+ * - MAY include base58 vault PDAs, mint addresses, slot numbers, error
88
+ * codes, status enums — these are public on-chain data.
89
+ * - SHOULD truncate long base58 strings (e.g., `"4ZeV...wrHL"`) when the
90
+ * backend has display-width constraints.
91
+ */
92
+ export type StructuredWarnSanitizer<TRaw> = (raw: TRaw) => Record<string, unknown>;
93
+ /**
94
+ * Identity sanitizer for payloads that are already safe to log verbatim.
95
+ *
96
+ * Use this ONLY when the raw payload is, by construction, free of secrets
97
+ * and PII — for example, a pre-built `{ status: "degraded", code: 1234 }`
98
+ * record. Importing `sanitizeNoop` makes the "no sanitization needed"
99
+ * decision explicit and grep-able in code review.
100
+ */
101
+ export declare const sanitizeNoop: StructuredWarnSanitizer<Record<string, unknown>>;
102
+ /**
103
+ * Emit a structured warning with a *mandatory* sanitization step.
104
+ *
105
+ * The `sanitize` function runs on `raw` before the result is passed to
106
+ * `logger.warn`. The TypeScript signature requires `sanitize` — there is
107
+ * no overload that accepts a raw payload without one. For payloads that
108
+ * are already safe to log verbatim, pass `sanitizeNoop`.
109
+ *
110
+ * @example Sentry-safe vault-mismatch warning
111
+ * ```ts
112
+ * structuredWarn(logger, "vault-mismatch", redactPubkey, {
113
+ * expected: vault.address,
114
+ * actual: tx.accounts.vault,
115
+ * });
116
+ * ```
117
+ */
118
+ export declare function structuredWarn<TRaw>(logger: SigilLogger, message: string, sanitize: StructuredWarnSanitizer<TRaw>, raw: TRaw): void;
119
+ /**
120
+ * Emit a structured error with a *mandatory* sanitization step. Same
121
+ * contract as {@link structuredWarn} but routes to `logger.error` and
122
+ * preserves the originating `err` for stack-trace capture.
123
+ */
124
+ export declare function structuredError<TRaw>(logger: SigilLogger, message: string, err: unknown, sanitize: StructuredWarnSanitizer<TRaw>, raw: TRaw): void;
77
125
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,qEAAqE;AACrE,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAChE,2DAA2D;IAC3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/D,wDAAwD;IACxD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/D;;;;OAIG;IACH,KAAK,CACH,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI,CAAC;CACT;AAQD;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,WAKxB,CAAC;AAMH;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,WAAW,CA6CjD;AAMD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,CAE1E;AAuBD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAE9D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,WAAW,CAElD"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,qEAAqE;AACrE,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAChE,2DAA2D;IAC3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/D,wDAAwD;IACxD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/D;;;;OAIG;IACH,KAAK,CACH,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI,CAAC;CACT;AAQD;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,WAKxB,CAAC;AAMH;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,WAAW,CA6CjD;AAMD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,CAE1E;AAuBD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAE9D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,WAAW,CAElD;AA+BD;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,uBAAuB,CAAC,IAAI,IAAI,CAC1C,GAAG,EAAE,IAAI,KACN,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE7B;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,EAAE,uBAAuB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAElE,CAAC;AAET;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,IAAI,EACjC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,uBAAuB,CAAC,IAAI,CAAC,EACvC,GAAG,EAAE,IAAI,GACR,IAAI,CAEN;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAClC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,uBAAuB,CAAC,IAAI,CAAC,EACvC,GAAG,EAAE,IAAI,GACR,IAAI,CAEN"}
package/dist/logger.js CHANGED
@@ -150,4 +150,40 @@ export function setSigilModuleLogger(logger) {
150
150
  export function getSigilModuleLogger() {
151
151
  return _sigilModuleLogger;
152
152
  }
153
+ /**
154
+ * Identity sanitizer for payloads that are already safe to log verbatim.
155
+ *
156
+ * Use this ONLY when the raw payload is, by construction, free of secrets
157
+ * and PII — for example, a pre-built `{ status: "degraded", code: 1234 }`
158
+ * record. Importing `sanitizeNoop` makes the "no sanitization needed"
159
+ * decision explicit and grep-able in code review.
160
+ */
161
+ export const sanitizeNoop = (raw) => raw;
162
+ /**
163
+ * Emit a structured warning with a *mandatory* sanitization step.
164
+ *
165
+ * The `sanitize` function runs on `raw` before the result is passed to
166
+ * `logger.warn`. The TypeScript signature requires `sanitize` — there is
167
+ * no overload that accepts a raw payload without one. For payloads that
168
+ * are already safe to log verbatim, pass `sanitizeNoop`.
169
+ *
170
+ * @example Sentry-safe vault-mismatch warning
171
+ * ```ts
172
+ * structuredWarn(logger, "vault-mismatch", redactPubkey, {
173
+ * expected: vault.address,
174
+ * actual: tx.accounts.vault,
175
+ * });
176
+ * ```
177
+ */
178
+ export function structuredWarn(logger, message, sanitize, raw) {
179
+ logger.warn(message, sanitize(raw));
180
+ }
181
+ /**
182
+ * Emit a structured error with a *mandatory* sanitization step. Same
183
+ * contract as {@link structuredWarn} but routes to `logger.error` and
184
+ * preserves the originating `err` for stack-trace capture.
185
+ */
186
+ export function structuredError(logger, message, err, sanitize, raw) {
187
+ logger.error(message, err, sanitize(raw));
188
+ }
153
189
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAsBH,8EAA8E;AAC9E,oCAAoC;AACpC,8EAA8E;AAE9E,MAAM,IAAI,GAAG,GAAS,EAAE,CAAC,SAAS,CAAC;AAEnC;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAgB,MAAM,CAAC,MAAM,CAAC;IACpD,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;CACZ,CAAC,CAAC;AAEH,8EAA8E;AAC9E,mDAAmD;AACnD,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YAC1B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,sCAAsC;gBACtC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,sCAAsC;gBACtC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YACzB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,sCAAsC;gBACtC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,sCAAsC;gBACtC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YACzB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,sCAAsC;gBACtC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,sCAAsC;gBACtC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;YAC/B,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC/C,sCAAsC;gBACtC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YACvC,CAAC;iBAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBAC7B,sCAAsC;gBACtC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC9B,CAAC;iBAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACjC,sCAAsC;gBACtC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,sCAAsC;gBACtC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,uDAAuD;AACvD,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,MAA+B;IAC3D,OAAO,MAAM,IAAI,WAAW,CAAC;AAC/B,CAAC;AAED,8EAA8E;AAC9E,8CAA8C;AAC9C,8EAA8E;AAC9E,EAAE;AACF,qEAAqE;AACrE,mEAAmE;AACnE,oEAAoE;AACpE,sEAAsE;AACtE,qEAAqE;AACrE,yBAAyB;AACzB,EAAE;AACF,sEAAsE;AACtE,EAAE;AACF,oEAAoE;AACpE,sEAAsE;AACtE,qEAAqE;AACrE,sEAAsE;AACtE,4CAA4C;AAE5C,IAAI,kBAAkB,GAAgB,WAAW,CAAC;AAElD;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAmB;IACtD,kBAAkB,GAAG,MAAM,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,kBAAkB,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,14 @@ export interface OwnerTransactionResult {
37
37
  txSizeBytes: number;
38
38
  /** Base64-encoded wire transaction (for display/debugging). */
39
39
  wireBase64: string;
40
+ /**
41
+ * The blockhash actually embedded in the compiled transaction. Returned
42
+ * so callers building previews can surface `lastValidBlockHeight`
43
+ * without a second cache read (which could race against TTL refresh
44
+ * and produce a stale value disconnected from the bytes the user
45
+ * will sign).
46
+ */
47
+ blockhash: Blockhash;
40
48
  }
41
49
  export declare function buildOwnerTransaction(params: BuildOwnerTransactionParams): Promise<OwnerTransactionResult>;
42
50
  //# sourceMappingURL=owner-transaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"owner-transaction.d.ts","sourceRoot":"","sources":["../src/owner-transaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAEV,WAAW,EACX,GAAG,EACH,YAAY,EACZ,iBAAiB,EACjB,6BAA6B,EAC9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAOL,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAM1B,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAcrE,MAAM,WAAW,2BAA2B;IAC1C,iDAAiD;IACjD,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACvB,gCAAgC;IAChC,KAAK,EAAE,iBAAiB,CAAC;IACzB,4CAA4C;IAC5C,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,kCAAkC;IAClC,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,uEAAuE;IACvE,mBAAmB,CAAC,EAAE,6BAA6B,CAAC;IACpD,0DAA0D;IAC1D,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,yEAAyE;IACzE,WAAW,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IACnD,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;CACpB;AAWD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,sBAAsB,CAAC,CAqFjC"}
1
+ {"version":3,"file":"owner-transaction.d.ts","sourceRoot":"","sources":["../src/owner-transaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,GAAG,EACH,YAAY,EACZ,iBAAiB,EACjB,6BAA6B,EAC9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAOL,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAM1B,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAcrE,MAAM,WAAW,2BAA2B;IAC1C,iDAAiD;IACjD,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACvB,gCAAgC;IAChC,KAAK,EAAE,iBAAiB,CAAC;IACzB,4CAA4C;IAC5C,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,kCAAkC;IAClC,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,uEAAuE;IACvE,mBAAmB,CAAC,EAAE,6BAA6B,CAAC;IACpD,0DAA0D;IAC1D,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,yEAAyE;IACzE,WAAW,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IACnD,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,SAAS,EAAE,SAAS,CAAC;CACtB;AAWD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,sBAAsB,CAAC,CAsFjC"}
@@ -71,6 +71,7 @@ export async function buildOwnerTransaction(params) {
71
71
  transaction: compiledTx,
72
72
  txSizeBytes: byteLength,
73
73
  wireBase64,
74
+ blockhash,
74
75
  };
75
76
  }
76
77
  //# sourceMappingURL=owner-transaction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"owner-transaction.js","sourceRoot":"","sources":["../src/owner-transaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"owner-transaction.js","sourceRoot":"","sources":["../src/owner-transaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * @usesigil/kit/post-assertions — CrossFieldLte builder.
3
+ *
4
+ * Constructs a PostAssertionEntry that performs a ratio check on two byte
5
+ * offsets inside the same target account AFTER the DeFi call completes.
6
+ *
7
+ * The on-chain check: `field_A × 10000 ≤ multiplier_bps × field_B`
8
+ * (u128 safe math, cross-multiplication to avoid division).
9
+ *
10
+ * Typical use: leverage caps. field_A = sizeUsd, field_B = collateralUsd,
11
+ * multiplier_bps = maxLeverage × 10000. If the cap is violated, the program
12
+ * raises `PostAssertionFailed` (6068) and the entire transaction reverts.
13
+ *
14
+ * ## Jupiter Perpetuals UX rail — NOT a security boundary
15
+ *
16
+ * `leverageCapLteBps()` throws `JupiterPerpsPostAssertionUnsupportedError`
17
+ * when the caller supplies a target account owned by the Jupiter Perpetuals
18
+ * program. This is a **UX-level misuse-prevention guardrail**, NOT a
19
+ * security guarantee — the on-chain program does **not** reject Jupiter
20
+ * Perps target accounts. A caller who constructs a plain `PostAssertionEntry`
21
+ * object literal (skipping this builder) and passes it to
22
+ * `createPostAssertions(...)` WILL land an entry that targets a Jupiter
23
+ * Perps Position account. That entry will always pass trivially, because:
24
+ *
25
+ * Jupiter Perps uses a 2-transaction keeper-fulfillment model — the user's
26
+ * tx writes a PositionRequest, and a Jupiter-hosted keeper executes the
27
+ * actual position change up to 45 seconds later. Sigil's
28
+ * `finalize_session` reads account state in the USER's tx, not the keeper's,
29
+ * so the Jupiter Position account still reflects pre-trade state at check
30
+ * time. CrossFieldLte post-execution over that account therefore is a
31
+ * **silent constraint bypass** — the user thinks their leverage cap is
32
+ * active when it isn't.
33
+ *
34
+ * For REAL security on Jupiter Perps, combine with pre-execution
35
+ * `InstructionConstraints` (the `@sigil-trade/constraints` package compiles
36
+ * byte-level checks on Jupiter instruction args that the on-chain program
37
+ * enforces BEFORE the request hits the keeper — covers the same attack
38
+ * surface from the opposite direction).
39
+ *
40
+ * Follow-up work (tracked in the Phase 2 PRD as deferred): add an on-chain
41
+ * `target_account.owner` deny-list check in `finalize_session.rs` that
42
+ * rejects CrossFieldLte entries whose target account is owned by Jupiter
43
+ * Perpetuals. Until that lands, this builder's rail is defense-against-
44
+ * typos, nothing more.
45
+ *
46
+ * @see programs/sigil/src/state/post_assertions.rs — on-chain source of truth
47
+ * @see docs/LEVERAGE-ENFORCEMENT.md — full Jupiter Perps gap writeup
48
+ */
49
+ import type { Address } from "@solana/kit";
50
+ import type { PostAssertionEntry } from "../generated/types/postAssertionEntry.js";
51
+ /**
52
+ * Jupiter Perpetuals program. Owner of Position + PositionRequest accounts.
53
+ *
54
+ * This is the ONLY Jupiter program the `leverageCapLteBps` builder refuses
55
+ * at authoring time (see the docblock above for why — UX rail, not on-chain
56
+ * security). Other Jupiter programs (V6 Aggregator, Lend, Earn, Borrow)
57
+ * execute synchronously in the user's transaction and work fine with
58
+ * post-execution assertions.
59
+ */
60
+ export declare const JUPITER_PERPS_PROGRAM_ADDRESS: Address;
61
+ /**
62
+ * Thrown by {@link leverageCapLteBps} when the target account is owned by
63
+ * the Jupiter Perpetuals program. Carries a long, copy-paste-friendly
64
+ * explanation so the error bubbling to the dashboard is actionable.
65
+ */
66
+ export declare class JupiterPerpsPostAssertionUnsupportedError extends Error {
67
+ constructor(message: string);
68
+ }
69
+ /**
70
+ * Options for `leverageCapLteBps`.
71
+ *
72
+ * `targetAccountOwnerProgram` is REQUIRED (not optional) so that callers
73
+ * cannot accidentally bypass the Jupiter Perpetuals safety check by
74
+ * omitting the ownership hint. If the caller doesn't know the owner
75
+ * program, they shouldn't be building a post-execution leverage cap.
76
+ */
77
+ export interface LeverageCapLteOpts {
78
+ /**
79
+ * Address of the account whose bytes will be inspected post-execution.
80
+ * Typically the Position PDA for the protocol being constrained
81
+ * (e.g. Flash Trade Position account).
82
+ */
83
+ targetAccount: Address;
84
+ /**
85
+ * Address of the program that OWNS `targetAccount`. Required for the
86
+ * Jupiter Perpetuals safety rail. When this matches
87
+ * {@link JUPITER_PERPS_PROGRAM_ADDRESS}, the helper throws
88
+ * {@link JupiterPerpsPostAssertionUnsupportedError} — see file header.
89
+ */
90
+ targetAccountOwnerProgram: Address;
91
+ /**
92
+ * Byte offset of field_A (the "numerator" field) inside `targetAccount`.
93
+ * Read as `u64` LE (8 bytes from this offset). Must be in `0..=65535`.
94
+ * Typical: `sizeUsd` offset = 140 on Flash Trade Position.
95
+ */
96
+ fieldAOffset: number;
97
+ /**
98
+ * Byte offset of field_B (the "denominator" field). Read as `u64` LE.
99
+ * Must be in `0..=65535` and MUST differ from `fieldAOffset` — comparing
100
+ * a field against itself is either a no-op or a trap.
101
+ * Typical: `collateralUsd` offset = 172 on Flash Trade Position.
102
+ */
103
+ fieldBOffset: number;
104
+ /**
105
+ * Leverage cap expressed in basis points: `maxBps = leverage × 10_000`.
106
+ *
107
+ * The on-chain check is `field_A × 10_000 ≤ maxBps × field_B`.
108
+ * Examples:
109
+ * - 10× → `maxBps = 100_000`
110
+ * - 50× → `maxBps = 500_000`
111
+ * - 100× → `maxBps = 1_000_000`
112
+ *
113
+ * Must be a positive integer in `1..=u32::MAX`. Prefer conservative caps;
114
+ * never set to the protocol's maximum.
115
+ */
116
+ maxBps: number;
117
+ }
118
+ /**
119
+ * Build a PostAssertionEntry that enforces a leverage cap via the
120
+ * CrossFieldLte ratio check.
121
+ *
122
+ * Validates inputs, rejects Jupiter Perpetuals Position accounts at the
123
+ * call site, and returns an entry ready to pass to
124
+ * `createPostAssertions(rpc, vault, owner, network, [entry])`.
125
+ *
126
+ * @throws {JupiterPerpsPostAssertionUnsupportedError}
127
+ * When `targetAccountOwnerProgram` matches
128
+ * {@link JUPITER_PERPS_PROGRAM_ADDRESS}. See file header for why.
129
+ * @throws {RangeError}
130
+ * When offsets are not integers in `0..=65535`, are equal to each other,
131
+ * or when `maxBps` is not a positive integer in `1..=u32::MAX`.
132
+ */
133
+ export declare function leverageCapLteBps(opts: LeverageCapLteOpts): PostAssertionEntry;
134
+ //# sourceMappingURL=cross-field-lte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-field-lte.d.ts","sourceRoot":"","sources":["../../src/post-assertions/cross-field-lte.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,OAAO,KAAK,EAAE,OAAO,EAAsB,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAInF;;;;;;;;GAQG;AACH,eAAO,MAAM,6BAA6B,EACS,OAAO,CAAC;AA2C3D;;;;GAIG;AACH,qBAAa,yCAA0C,SAAQ,KAAK;gBACtD,OAAO,EAAE,MAAM;CAQ5B;AAID;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB;;;;;OAKG;IACH,yBAAyB,EAAE,OAAO,CAAC;IACnC;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,kBAAkB,GACvB,kBAAkB,CAmDpB"}
@@ -0,0 +1,129 @@
1
+ // ─── Constants ────────────────────────────────────────────────────────────
2
+ /**
3
+ * Jupiter Perpetuals program. Owner of Position + PositionRequest accounts.
4
+ *
5
+ * This is the ONLY Jupiter program the `leverageCapLteBps` builder refuses
6
+ * at authoring time (see the docblock above for why — UX rail, not on-chain
7
+ * security). Other Jupiter programs (V6 Aggregator, Lend, Earn, Borrow)
8
+ * execute synchronously in the user's transaction and work fine with
9
+ * post-execution assertions.
10
+ */
11
+ export const JUPITER_PERPS_PROGRAM_ADDRESS = "PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu";
12
+ /**
13
+ * CrossFieldLte enable bit — bit 0 of `cross_field_flags`.
14
+ * Every other bit is reserved; the on-chain validator rejects unknown flags.
15
+ */
16
+ const CROSS_FIELD_LTE_FLAG = 0x01;
17
+ /**
18
+ * Both field_A and field_B are parsed as `u64::from_le_bytes(bytes[0..8])`
19
+ * on-chain when CrossFieldLte is enabled. Entry's `value_len` MUST be 8.
20
+ */
21
+ const CROSS_FIELD_VALUE_LEN = 8;
22
+ /**
23
+ * CrossFieldLte only composes with Absolute assertion_mode. Delta modes
24
+ * (1/2/3) would re-interpret the snapshot bytes as field_A, which is
25
+ * semantically nonsensical — on-chain hard-rejects.
26
+ */
27
+ const ABSOLUTE_ASSERTION_MODE = 0;
28
+ /**
29
+ * Lte operator (3). Not actually consulted at runtime when the CrossField
30
+ * flag is set — the on-chain code branches to the ratio check and ignores
31
+ * operator/expected_value. Set to 3 here as a semantic hint for anyone
32
+ * inspecting the raw entry: "this is a less-than-or-equal check."
33
+ */
34
+ const LTE_OPERATOR = 3;
35
+ /**
36
+ * u16 range guard for byte offsets. Account data is at most ~10MB but
37
+ * PostAssertionEntry.offset is a u16 on-chain, capping at 65535.
38
+ */
39
+ const MAX_U16 = 0xffff;
40
+ /**
41
+ * u32 range guard for `cross_field_multiplier_bps`. The on-chain type is
42
+ * u32. Values above this would overflow deserialization.
43
+ */
44
+ const MAX_U32 = 0xffffffff;
45
+ // ─── Errors ───────────────────────────────────────────────────────────────
46
+ /**
47
+ * Thrown by {@link leverageCapLteBps} when the target account is owned by
48
+ * the Jupiter Perpetuals program. Carries a long, copy-paste-friendly
49
+ * explanation so the error bubbling to the dashboard is actionable.
50
+ */
51
+ export class JupiterPerpsPostAssertionUnsupportedError extends Error {
52
+ constructor(message) {
53
+ super(message);
54
+ this.name = "JupiterPerpsPostAssertionUnsupportedError";
55
+ Object.setPrototypeOf(this, JupiterPerpsPostAssertionUnsupportedError.prototype);
56
+ }
57
+ }
58
+ /**
59
+ * Build a PostAssertionEntry that enforces a leverage cap via the
60
+ * CrossFieldLte ratio check.
61
+ *
62
+ * Validates inputs, rejects Jupiter Perpetuals Position accounts at the
63
+ * call site, and returns an entry ready to pass to
64
+ * `createPostAssertions(rpc, vault, owner, network, [entry])`.
65
+ *
66
+ * @throws {JupiterPerpsPostAssertionUnsupportedError}
67
+ * When `targetAccountOwnerProgram` matches
68
+ * {@link JUPITER_PERPS_PROGRAM_ADDRESS}. See file header for why.
69
+ * @throws {RangeError}
70
+ * When offsets are not integers in `0..=65535`, are equal to each other,
71
+ * or when `maxBps` is not a positive integer in `1..=u32::MAX`.
72
+ */
73
+ export function leverageCapLteBps(opts) {
74
+ // Runtime Jupiter Perps reject (Phase 2 ISC-37, anti-criterion ISC-A1).
75
+ // Fails before any further validation so the error surface points at
76
+ // the real problem rather than incidental validation failures.
77
+ if (opts.targetAccountOwnerProgram === JUPITER_PERPS_PROGRAM_ADDRESS) {
78
+ throw new JupiterPerpsPostAssertionUnsupportedError(`Post-execution CrossFieldLte is NOT viable on Jupiter Perpetuals Position accounts.\n\n` +
79
+ `Reason: Jupiter Perps uses a 2-transaction keeper-fulfillment model. The user's tx writes ` +
80
+ `to a PositionRequest account; a Jupiter-hosted keeper executes the actual position change ` +
81
+ `up to 45 seconds later in a separate tx. Sigil's finalize_session reads account state in ` +
82
+ `the user's tx — at that point the Jupiter Position account still reflects pre-trade state. ` +
83
+ `The leverage check would always pass trivially, creating a silent constraint bypass.\n\n` +
84
+ `Jupiter Perps remains a fully supported protocol for agent use. Configure constraints ` +
85
+ `via pre-execution InstructionConstraints instead — @sigil-trade/constraints compiles ` +
86
+ `byte-level checks on Jupiter instruction args (sizeUsd, collateralUsd in the request) ` +
87
+ `that are enforced BEFORE the request hits the keeper.\n\n` +
88
+ `See docs/LEVERAGE-ENFORCEMENT.md — "Jupiter Perps — use pre-execution constraints".`);
89
+ }
90
+ // Offset range / integrality checks (u16 on-chain).
91
+ requireIntegerInRange(opts.fieldAOffset, "fieldAOffset", 0, MAX_U16);
92
+ requireIntegerInRange(opts.fieldBOffset, "fieldBOffset", 0, MAX_U16);
93
+ if (opts.fieldAOffset === opts.fieldBOffset) {
94
+ throw new RangeError(`leverageCapLteBps: fieldAOffset and fieldBOffset must differ — ratio of a field against itself is nonsensical (got ${opts.fieldAOffset})`);
95
+ }
96
+ // Multiplier range / integrality check (u32 on-chain, must be > 0).
97
+ requireIntegerInRange(opts.maxBps, "maxBps", 1, MAX_U32);
98
+ // All-zero expected_value — the on-chain CrossField path ignores this
99
+ // field, but validate_entries still requires `expected_value.len() >=
100
+ // value_len`. We ship exactly `CROSS_FIELD_VALUE_LEN` (8) bytes to
101
+ // satisfy the size invariant without wasting space.
102
+ const expectedValue = new Uint8Array(CROSS_FIELD_VALUE_LEN);
103
+ return {
104
+ targetAccount: opts.targetAccount,
105
+ offset: opts.fieldAOffset,
106
+ valueLen: CROSS_FIELD_VALUE_LEN,
107
+ operator: LTE_OPERATOR,
108
+ expectedValue,
109
+ assertionMode: ABSOLUTE_ASSERTION_MODE,
110
+ crossFieldOffsetB: opts.fieldBOffset,
111
+ crossFieldMultiplierBps: opts.maxBps,
112
+ crossFieldFlags: CROSS_FIELD_LTE_FLAG,
113
+ };
114
+ }
115
+ // ─── Internal ─────────────────────────────────────────────────────────────
116
+ /**
117
+ * Guard that rejects non-integer, out-of-range, or non-finite values.
118
+ * Matches JS's pre-coercion discipline: a string `"8"` should NOT silently
119
+ * pass an integer check, and `NaN` / `Infinity` must not sneak through.
120
+ */
121
+ function requireIntegerInRange(value, field, min, max) {
122
+ if (typeof value !== "number" || !Number.isInteger(value)) {
123
+ throw new RangeError(`leverageCapLteBps: ${field} must be an integer, got ${JSON.stringify(value)} (${typeof value})`);
124
+ }
125
+ if (value < min || value > max) {
126
+ throw new RangeError(`leverageCapLteBps: ${field} must be in ${min}..=${max}, got ${value}`);
127
+ }
128
+ }
129
+ //# sourceMappingURL=cross-field-lte.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-field-lte.js","sourceRoot":"","sources":["../../src/post-assertions/cross-field-lte.ts"],"names":[],"mappings":"AAmDA,6EAA6E;AAE7E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,6BAA6B,GACxC,6CAAwD,CAAC;AAE3D;;;GAGG;AACH,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAElC;;;GAGG;AACH,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEhC;;;;GAIG;AACH,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAElC;;;;;GAKG;AACH,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB;;;GAGG;AACH,MAAM,OAAO,GAAG,MAAM,CAAC;AAEvB;;;GAGG;AACH,MAAM,OAAO,GAAG,UAAU,CAAC;AAE3B,6EAA6E;AAE7E;;;;GAIG;AACH,MAAM,OAAO,yCAA0C,SAAQ,KAAK;IAClE,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,2CAA2C,CAAC;QACxD,MAAM,CAAC,cAAc,CACnB,IAAI,EACJ,yCAAyC,CAAC,SAAS,CACpD,CAAC;IACJ,CAAC;CACF;AAsDD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAwB;IAExB,wEAAwE;IACxE,qEAAqE;IACrE,+DAA+D;IAC/D,IAAI,IAAI,CAAC,yBAAyB,KAAK,6BAA6B,EAAE,CAAC;QACrE,MAAM,IAAI,yCAAyC,CACjD,yFAAyF;YACvF,4FAA4F;YAC5F,4FAA4F;YAC5F,2FAA2F;YAC3F,6FAA6F;YAC7F,0FAA0F;YAC1F,wFAAwF;YACxF,uFAAuF;YACvF,wFAAwF;YACxF,2DAA2D;YAC3D,qFAAqF,CACxF,CAAC;IACJ,CAAC;IAED,oDAAoD;IACpD,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IACrE,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IACrE,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,IAAI,UAAU,CAClB,sHAAsH,IAAI,CAAC,YAAY,GAAG,CAC3I,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAEzD,sEAAsE;IACtE,sEAAsE;IACtE,mEAAmE;IACnE,oDAAoD;IACpD,MAAM,aAAa,GAAG,IAAI,UAAU,CAClC,qBAAqB,CACW,CAAC;IAEnC,OAAO;QACL,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,MAAM,EAAE,IAAI,CAAC,YAAY;QACzB,QAAQ,EAAE,qBAAqB;QAC/B,QAAQ,EAAE,YAAY;QACtB,aAAa;QACb,aAAa,EAAE,uBAAuB;QACtC,iBAAiB,EAAE,IAAI,CAAC,YAAY;QACpC,uBAAuB,EAAE,IAAI,CAAC,MAAM;QACpC,eAAe,EAAE,oBAAoB;KACtC,CAAC;AACJ,CAAC;AAED,6EAA6E;AAE7E;;;;GAIG;AACH,SAAS,qBAAqB,CAC5B,KAAa,EACb,KAAa,EACb,GAAW,EACX,GAAW;IAEX,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,UAAU,CAClB,sBAAsB,KAAK,4BAA4B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,OAAO,KAAK,GAAG,CACjG,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QAC/B,MAAM,IAAI,UAAU,CAClB,sBAAsB,KAAK,eAAe,GAAG,MAAM,GAAG,SAAS,KAAK,EAAE,CACvE,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * `@usesigil/kit/post-assertions` — builders for post-execution assertion
3
+ * entries.
4
+ *
5
+ * This barrel exposes the typed helpers a dashboard or headless caller
6
+ * needs to author `PostAssertionEntry` values for the
7
+ * `createPostAssertions(...)` mutation without reaching into codegen
8
+ * (covenant D1: no imports from `src/generated/**`).
9
+ *
10
+ * Currently exported:
11
+ * - `leverageCapLteBps({ ... })` — generic CrossFieldLte builder for a
12
+ * "field_A ≤ maxBps × field_B" ratio check
13
+ * - `JupiterPerpsPostAssertionUnsupportedError` — thrown when a caller
14
+ * tries to build a leverage cap against a Jupiter Perpetuals Position
15
+ * account (keeper-fulfillment model breaks post-execution semantics)
16
+ * - `JUPITER_PERPS_PROGRAM_ADDRESS` — re-exported so callers can do their
17
+ * own pre-check if they prefer reporting over throwing
18
+ *
19
+ * Protocol-specific presets (e.g. `flashTradeLeverageCap`) land in a
20
+ * `./presets/` sub-directory as they ship — one preset per protocol,
21
+ * each backed by a committed IDL with a CI drift-check.
22
+ */
23
+ export { JUPITER_PERPS_PROGRAM_ADDRESS, JupiterPerpsPostAssertionUnsupportedError, leverageCapLteBps, } from "./cross-field-lte.js";
24
+ export type { LeverageCapLteOpts } from "./cross-field-lte.js";
25
+ export { FLASH_TRADE_PROGRAM_ADDRESS, FLASH_TRADE_POSITION_SIZE_USD_OFFSET, FLASH_TRADE_POSITION_COLLATERAL_USD_OFFSET, MIN_LEVERAGE_X, MAX_LEVERAGE_X, FlashTradeLeverageOutOfRangeError, flashTradeLeverageCap, } from "./presets/flash-trade.js";
26
+ export type { FlashTradeLeverageCapOpts } from "./presets/flash-trade.js";
27
+ export type { PostAssertionEntry } from "../generated/types/postAssertionEntry.js";
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/post-assertions/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EACL,6BAA6B,EAC7B,yCAAyC,EACzC,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK/D,OAAO,EACL,2BAA2B,EAC3B,oCAAoC,EACpC,0CAA0C,EAC1C,cAAc,EACd,cAAc,EACd,iCAAiC,EACjC,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAK1E,YAAY,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * `@usesigil/kit/post-assertions` — builders for post-execution assertion
3
+ * entries.
4
+ *
5
+ * This barrel exposes the typed helpers a dashboard or headless caller
6
+ * needs to author `PostAssertionEntry` values for the
7
+ * `createPostAssertions(...)` mutation without reaching into codegen
8
+ * (covenant D1: no imports from `src/generated/**`).
9
+ *
10
+ * Currently exported:
11
+ * - `leverageCapLteBps({ ... })` — generic CrossFieldLte builder for a
12
+ * "field_A ≤ maxBps × field_B" ratio check
13
+ * - `JupiterPerpsPostAssertionUnsupportedError` — thrown when a caller
14
+ * tries to build a leverage cap against a Jupiter Perpetuals Position
15
+ * account (keeper-fulfillment model breaks post-execution semantics)
16
+ * - `JUPITER_PERPS_PROGRAM_ADDRESS` — re-exported so callers can do their
17
+ * own pre-check if they prefer reporting over throwing
18
+ *
19
+ * Protocol-specific presets (e.g. `flashTradeLeverageCap`) land in a
20
+ * `./presets/` sub-directory as they ship — one preset per protocol,
21
+ * each backed by a committed IDL with a CI drift-check.
22
+ */
23
+ export { JUPITER_PERPS_PROGRAM_ADDRESS, JupiterPerpsPostAssertionUnsupportedError, leverageCapLteBps, } from "./cross-field-lte.js";
24
+ // Protocol-specific presets — one file per protocol under `./presets/`.
25
+ // Each preset is backed by a committed IDL source with a drift-check test so
26
+ // any future SDK bump that shifts field offsets fails before shipping.
27
+ export { FLASH_TRADE_PROGRAM_ADDRESS, FLASH_TRADE_POSITION_SIZE_USD_OFFSET, FLASH_TRADE_POSITION_COLLATERAL_USD_OFFSET, MIN_LEVERAGE_X, MAX_LEVERAGE_X, FlashTradeLeverageOutOfRangeError, flashTradeLeverageCap, } from "./presets/flash-trade.js";
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/post-assertions/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EACL,6BAA6B,EAC7B,yCAAyC,EACzC,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAG9B,wEAAwE;AACxE,6EAA6E;AAC7E,uEAAuE;AACvE,OAAO,EACL,2BAA2B,EAC3B,oCAAoC,EACpC,0CAA0C,EAC1C,cAAc,EACd,cAAc,EACd,iCAAiC,EACjC,qBAAqB,GACtB,MAAM,0BAA0B,CAAC"}