@oobe-protocol-labs/synapse-sap-sdk 0.14.0 → 0.15.1

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 (513) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +986 -0
  3. package/dist/cjs/client.js +31 -14
  4. package/dist/cjs/client.js.map +1 -1
  5. package/dist/cjs/constants/addresses.js +143 -0
  6. package/dist/cjs/constants/addresses.js.map +1 -0
  7. package/dist/cjs/constants/index.js +64 -0
  8. package/dist/cjs/constants/index.js.map +1 -0
  9. package/dist/cjs/constants/limits.js +161 -0
  10. package/dist/cjs/constants/limits.js.map +1 -0
  11. package/dist/cjs/constants/network.js +81 -0
  12. package/dist/cjs/constants/network.js.map +1 -0
  13. package/dist/cjs/constants/payments.js +137 -0
  14. package/dist/cjs/constants/payments.js.map +1 -0
  15. package/dist/cjs/constants/programs.js +78 -0
  16. package/dist/cjs/constants/programs.js.map +1 -0
  17. package/dist/cjs/constants/seeds.js +76 -0
  18. package/dist/cjs/constants/seeds.js.map +1 -0
  19. package/dist/cjs/constants.js +39 -32
  20. package/dist/cjs/constants.js.map +1 -1
  21. package/dist/cjs/core/client.js +546 -0
  22. package/dist/cjs/core/client.js.map +1 -0
  23. package/dist/cjs/core/connection.js +350 -0
  24. package/dist/cjs/core/connection.js.map +1 -0
  25. package/dist/cjs/core/index.js +25 -0
  26. package/dist/cjs/core/index.js.map +1 -0
  27. package/dist/cjs/errors/index.js +334 -0
  28. package/dist/cjs/errors/index.js.map +1 -0
  29. package/dist/cjs/errors.js +15 -5
  30. package/dist/cjs/errors.js.map +1 -1
  31. package/dist/cjs/events/geyser.js +295 -0
  32. package/dist/cjs/events/geyser.js.map +1 -0
  33. package/dist/cjs/events/index.js +32 -26
  34. package/dist/cjs/events/index.js.map +1 -1
  35. package/dist/cjs/idl/index.js +63 -0
  36. package/dist/cjs/idl/index.js.map +1 -0
  37. package/dist/cjs/idl/synapse_agent_sap.json +14595 -0
  38. package/dist/cjs/instructions/agent.js +1 -0
  39. package/dist/cjs/instructions/agent.js.map +1 -1
  40. package/dist/cjs/instructions/attestation.js +1 -0
  41. package/dist/cjs/instructions/attestation.js.map +1 -1
  42. package/dist/cjs/instructions/digest.js +1 -0
  43. package/dist/cjs/instructions/digest.js.map +1 -1
  44. package/dist/cjs/instructions/dispute.js +1 -0
  45. package/dist/cjs/instructions/dispute.js.map +1 -1
  46. package/dist/cjs/instructions/escrow.js +1 -0
  47. package/dist/cjs/instructions/escrow.js.map +1 -1
  48. package/dist/cjs/instructions/global.js +1 -0
  49. package/dist/cjs/instructions/global.js.map +1 -1
  50. package/dist/cjs/instructions/indexing.js +1 -0
  51. package/dist/cjs/instructions/indexing.js.map +1 -1
  52. package/dist/cjs/instructions/misc.js +1 -0
  53. package/dist/cjs/instructions/misc.js.map +1 -1
  54. package/dist/cjs/instructions/session.js +1 -0
  55. package/dist/cjs/instructions/session.js.map +1 -1
  56. package/dist/cjs/instructions/staking.js +1 -0
  57. package/dist/cjs/instructions/staking.js.map +1 -1
  58. package/dist/cjs/instructions/subscription.js +1 -0
  59. package/dist/cjs/instructions/subscription.js.map +1 -1
  60. package/dist/cjs/instructions/tools.js +1 -0
  61. package/dist/cjs/instructions/tools.js.map +1 -1
  62. package/dist/cjs/instructions/vault.js +1 -0
  63. package/dist/cjs/instructions/vault.js.map +1 -1
  64. package/dist/cjs/modules/agent.js +272 -0
  65. package/dist/cjs/modules/agent.js.map +1 -0
  66. package/dist/cjs/modules/attestation.js +147 -0
  67. package/dist/cjs/modules/attestation.js.map +1 -0
  68. package/dist/cjs/modules/base.js +189 -0
  69. package/dist/cjs/modules/base.js.map +1 -0
  70. package/dist/cjs/modules/escrow-v2.js +607 -0
  71. package/dist/cjs/modules/escrow-v2.js.map +1 -0
  72. package/dist/cjs/modules/escrow.js +336 -0
  73. package/dist/cjs/modules/escrow.js.map +1 -0
  74. package/dist/cjs/modules/feedback.js +166 -0
  75. package/dist/cjs/modules/feedback.js.map +1 -0
  76. package/dist/cjs/modules/index.js +43 -0
  77. package/dist/cjs/modules/index.js.map +1 -0
  78. package/dist/cjs/modules/indexing.js +375 -0
  79. package/dist/cjs/modules/indexing.js.map +1 -0
  80. package/dist/cjs/modules/ledger.js +234 -0
  81. package/dist/cjs/modules/ledger.js.map +1 -0
  82. package/dist/cjs/modules/receipt.js +148 -0
  83. package/dist/cjs/modules/receipt.js.map +1 -0
  84. package/dist/cjs/modules/staking.js +159 -0
  85. package/dist/cjs/modules/staking.js.map +1 -0
  86. package/dist/cjs/modules/subscription.js +96 -0
  87. package/dist/cjs/modules/subscription.js.map +1 -0
  88. package/dist/cjs/modules/tools.js +345 -0
  89. package/dist/cjs/modules/tools.js.map +1 -0
  90. package/dist/cjs/modules/vault.js +427 -0
  91. package/dist/cjs/modules/vault.js.map +1 -0
  92. package/dist/cjs/parser/client.js +146 -0
  93. package/dist/cjs/parser/client.js.map +1 -0
  94. package/dist/cjs/parser/complete.js +177 -0
  95. package/dist/cjs/parser/complete.js.map +1 -0
  96. package/dist/cjs/parser/index.js +57 -0
  97. package/dist/cjs/parser/index.js.map +1 -0
  98. package/dist/cjs/parser/inner.js +185 -0
  99. package/dist/cjs/parser/inner.js.map +1 -0
  100. package/dist/cjs/parser/instructions.js +114 -0
  101. package/dist/cjs/parser/instructions.js.map +1 -0
  102. package/dist/cjs/parser/transaction.js +153 -0
  103. package/dist/cjs/parser/transaction.js.map +1 -0
  104. package/dist/cjs/parser/types.js +14 -0
  105. package/dist/cjs/parser/types.js.map +1 -0
  106. package/dist/cjs/pda/index.js +672 -0
  107. package/dist/cjs/pda/index.js.map +1 -0
  108. package/dist/cjs/plugin/index.js +952 -0
  109. package/dist/cjs/plugin/index.js.map +1 -0
  110. package/dist/cjs/plugin/protocols.js +282 -0
  111. package/dist/cjs/plugin/protocols.js.map +1 -0
  112. package/dist/cjs/plugin/schemas.js +863 -0
  113. package/dist/cjs/plugin/schemas.js.map +1 -0
  114. package/dist/cjs/postgres/adapter.js +715 -0
  115. package/dist/cjs/postgres/adapter.js.map +1 -0
  116. package/dist/cjs/postgres/index.js +50 -0
  117. package/dist/cjs/postgres/index.js.map +1 -0
  118. package/dist/cjs/postgres/serializers.js +381 -0
  119. package/dist/cjs/postgres/serializers.js.map +1 -0
  120. package/dist/cjs/postgres/sync.js +289 -0
  121. package/dist/cjs/postgres/sync.js.map +1 -0
  122. package/dist/cjs/postgres/types.js +44 -0
  123. package/dist/cjs/postgres/types.js.map +1 -0
  124. package/dist/cjs/registries/builder.js +414 -0
  125. package/dist/cjs/registries/builder.js.map +1 -0
  126. package/dist/cjs/registries/discovery.js +362 -0
  127. package/dist/cjs/registries/discovery.js.map +1 -0
  128. package/dist/cjs/registries/fairscale.js +639 -0
  129. package/dist/cjs/registries/fairscale.js.map +1 -0
  130. package/dist/cjs/registries/index.js +58 -0
  131. package/dist/cjs/registries/index.js.map +1 -0
  132. package/dist/cjs/registries/metaplex-bridge.js +743 -0
  133. package/dist/cjs/registries/metaplex-bridge.js.map +1 -0
  134. package/dist/cjs/registries/session.js +433 -0
  135. package/dist/cjs/registries/session.js.map +1 -0
  136. package/dist/cjs/registries/x402.js +668 -0
  137. package/dist/cjs/registries/x402.js.map +1 -0
  138. package/dist/cjs/types/accounts.js +13 -0
  139. package/dist/cjs/types/accounts.js.map +1 -0
  140. package/dist/cjs/types/common.js +13 -0
  141. package/dist/cjs/types/common.js.map +1 -0
  142. package/dist/cjs/types/endpoint.js +15 -0
  143. package/dist/cjs/types/endpoint.js.map +1 -0
  144. package/dist/cjs/types/enums.js +269 -0
  145. package/dist/cjs/types/enums.js.map +1 -0
  146. package/dist/cjs/types/index.js +41 -0
  147. package/dist/cjs/types/index.js.map +1 -0
  148. package/dist/cjs/types/instructions.js +92 -0
  149. package/dist/cjs/types/instructions.js.map +1 -0
  150. package/dist/cjs/types.js +4 -1
  151. package/dist/cjs/types.js.map +1 -1
  152. package/dist/cjs/utils/anchor-errors.js +453 -0
  153. package/dist/cjs/utils/anchor-errors.js.map +1 -0
  154. package/dist/cjs/utils/endpoint-validator.js +232 -0
  155. package/dist/cjs/utils/endpoint-validator.js.map +1 -0
  156. package/dist/cjs/utils/escrow-validation.js +219 -0
  157. package/dist/cjs/utils/escrow-validation.js.map +1 -0
  158. package/dist/cjs/utils/hash.js +109 -0
  159. package/dist/cjs/utils/hash.js.map +1 -0
  160. package/dist/cjs/utils/index.js +10 -4
  161. package/dist/cjs/utils/index.js.map +1 -1
  162. package/dist/cjs/utils/merchant-validator.js +246 -0
  163. package/dist/cjs/utils/merchant-validator.js.map +1 -0
  164. package/dist/cjs/utils/network-normalizer.js +236 -0
  165. package/dist/cjs/utils/network-normalizer.js.map +1 -0
  166. package/dist/cjs/utils/priority-fee.js +215 -0
  167. package/dist/cjs/utils/priority-fee.js.map +1 -0
  168. package/dist/cjs/utils/rpc-strategy.js +239 -0
  169. package/dist/cjs/utils/rpc-strategy.js.map +1 -0
  170. package/dist/cjs/utils/schemas.js +331 -0
  171. package/dist/cjs/utils/schemas.js.map +1 -0
  172. package/dist/cjs/utils/serialization.js +105 -0
  173. package/dist/cjs/utils/serialization.js.map +1 -0
  174. package/dist/cjs/utils/validate.js +1 -1
  175. package/dist/cjs/utils/validate.js.map +1 -1
  176. package/dist/cjs/utils/validation.js +36 -0
  177. package/dist/cjs/utils/validation.js.map +1 -0
  178. package/dist/cjs/utils/volume-curve.js +117 -0
  179. package/dist/cjs/utils/volume-curve.js.map +1 -0
  180. package/dist/cjs/utils/x402-direct.js +231 -0
  181. package/dist/cjs/utils/x402-direct.js.map +1 -0
  182. package/dist/esm/client.js +31 -14
  183. package/dist/esm/client.js.map +1 -1
  184. package/dist/esm/constants/addresses.d.ts +117 -0
  185. package/dist/esm/constants/addresses.d.ts.map +1 -0
  186. package/dist/esm/constants/addresses.js +140 -0
  187. package/dist/esm/constants/addresses.js.map +1 -0
  188. package/dist/esm/constants/index.d.ts +31 -0
  189. package/dist/esm/constants/index.d.ts.map +1 -0
  190. package/dist/esm/constants/index.js +35 -0
  191. package/dist/esm/constants/index.js.map +1 -0
  192. package/dist/esm/constants/limits.d.ts +149 -0
  193. package/dist/esm/constants/limits.d.ts.map +1 -0
  194. package/dist/esm/constants/limits.js +158 -0
  195. package/dist/esm/constants/limits.js.map +1 -0
  196. package/dist/esm/constants/network.d.ts +81 -0
  197. package/dist/esm/constants/network.d.ts.map +1 -0
  198. package/dist/esm/constants/network.js +78 -0
  199. package/dist/esm/constants/network.js.map +1 -0
  200. package/dist/esm/constants/payments.d.ts +121 -0
  201. package/dist/esm/constants/payments.d.ts.map +1 -0
  202. package/dist/esm/constants/payments.js +131 -0
  203. package/dist/esm/constants/payments.js.map +1 -0
  204. package/dist/esm/constants/programs.d.ts +69 -0
  205. package/dist/esm/constants/programs.d.ts.map +1 -0
  206. package/dist/esm/constants/programs.js +75 -0
  207. package/dist/esm/constants/programs.js.map +1 -0
  208. package/dist/esm/constants/seeds.d.ts +80 -0
  209. package/dist/esm/constants/seeds.d.ts.map +1 -0
  210. package/dist/esm/constants/seeds.js +73 -0
  211. package/dist/esm/constants/seeds.js.map +1 -0
  212. package/dist/esm/constants.d.ts +14 -27
  213. package/dist/esm/constants.d.ts.map +1 -1
  214. package/dist/esm/constants.js +16 -31
  215. package/dist/esm/constants.js.map +1 -1
  216. package/dist/esm/core/client.d.ts +452 -0
  217. package/dist/esm/core/client.d.ts.map +1 -0
  218. package/dist/esm/core/client.js +539 -0
  219. package/dist/esm/core/client.js.map +1 -0
  220. package/dist/esm/core/connection.d.ts +305 -0
  221. package/dist/esm/core/connection.d.ts.map +1 -0
  222. package/dist/esm/core/connection.js +345 -0
  223. package/dist/esm/core/connection.js.map +1 -0
  224. package/dist/esm/core/index.d.ts +20 -0
  225. package/dist/esm/core/index.d.ts.map +1 -0
  226. package/dist/esm/core/index.js +19 -0
  227. package/dist/esm/core/index.js.map +1 -0
  228. package/dist/esm/errors/index.d.ts +276 -0
  229. package/dist/esm/errors/index.d.ts.map +1 -0
  230. package/dist/esm/errors/index.js +325 -0
  231. package/dist/esm/errors/index.js.map +1 -0
  232. package/dist/esm/errors.d.ts +8 -0
  233. package/dist/esm/errors.d.ts.map +1 -1
  234. package/dist/esm/errors.js +8 -0
  235. package/dist/esm/errors.js.map +1 -1
  236. package/dist/esm/events/geyser.d.ts +150 -0
  237. package/dist/esm/events/geyser.d.ts.map +1 -0
  238. package/dist/esm/events/geyser.js +258 -0
  239. package/dist/esm/events/geyser.js.map +1 -0
  240. package/dist/esm/events/index.d.ts +11 -7
  241. package/dist/esm/events/index.d.ts.map +1 -1
  242. package/dist/esm/events/index.js +30 -26
  243. package/dist/esm/events/index.js.map +1 -1
  244. package/dist/esm/idl/index.d.ts +70 -0
  245. package/dist/esm/idl/index.d.ts.map +1 -0
  246. package/dist/esm/idl/index.js +57 -0
  247. package/dist/esm/idl/index.js.map +1 -0
  248. package/dist/esm/idl/synapse_agent_sap.json +14595 -0
  249. package/dist/esm/instructions/agent.js +1 -0
  250. package/dist/esm/instructions/agent.js.map +1 -1
  251. package/dist/esm/instructions/attestation.js +1 -0
  252. package/dist/esm/instructions/attestation.js.map +1 -1
  253. package/dist/esm/instructions/digest.js +1 -0
  254. package/dist/esm/instructions/digest.js.map +1 -1
  255. package/dist/esm/instructions/dispute.js +1 -0
  256. package/dist/esm/instructions/dispute.js.map +1 -1
  257. package/dist/esm/instructions/escrow.js +1 -0
  258. package/dist/esm/instructions/escrow.js.map +1 -1
  259. package/dist/esm/instructions/global.js +1 -0
  260. package/dist/esm/instructions/global.js.map +1 -1
  261. package/dist/esm/instructions/indexing.js +1 -0
  262. package/dist/esm/instructions/indexing.js.map +1 -1
  263. package/dist/esm/instructions/misc.js +1 -0
  264. package/dist/esm/instructions/misc.js.map +1 -1
  265. package/dist/esm/instructions/session.js +1 -0
  266. package/dist/esm/instructions/session.js.map +1 -1
  267. package/dist/esm/instructions/staking.js +1 -0
  268. package/dist/esm/instructions/staking.js.map +1 -1
  269. package/dist/esm/instructions/subscription.js +1 -0
  270. package/dist/esm/instructions/subscription.js.map +1 -1
  271. package/dist/esm/instructions/tools.js +1 -0
  272. package/dist/esm/instructions/tools.js.map +1 -1
  273. package/dist/esm/instructions/vault.js +1 -0
  274. package/dist/esm/instructions/vault.js.map +1 -1
  275. package/dist/esm/modules/agent.d.ts +166 -0
  276. package/dist/esm/modules/agent.d.ts.map +1 -0
  277. package/dist/esm/modules/agent.js +268 -0
  278. package/dist/esm/modules/agent.js.map +1 -0
  279. package/dist/esm/modules/attestation.d.ts +96 -0
  280. package/dist/esm/modules/attestation.d.ts.map +1 -0
  281. package/dist/esm/modules/attestation.js +143 -0
  282. package/dist/esm/modules/attestation.js.map +1 -0
  283. package/dist/esm/modules/base.d.ts +161 -0
  284. package/dist/esm/modules/base.d.ts.map +1 -0
  285. package/dist/esm/modules/base.js +185 -0
  286. package/dist/esm/modules/base.js.map +1 -0
  287. package/dist/esm/modules/escrow-v2.d.ts +169 -0
  288. package/dist/esm/modules/escrow-v2.d.ts.map +1 -0
  289. package/dist/esm/modules/escrow-v2.js +603 -0
  290. package/dist/esm/modules/escrow-v2.js.map +1 -0
  291. package/dist/esm/modules/escrow.d.ts +168 -0
  292. package/dist/esm/modules/escrow.d.ts.map +1 -0
  293. package/dist/esm/modules/escrow.js +332 -0
  294. package/dist/esm/modules/escrow.js.map +1 -0
  295. package/dist/esm/modules/feedback.d.ts +105 -0
  296. package/dist/esm/modules/feedback.d.ts.map +1 -0
  297. package/dist/esm/modules/feedback.js +162 -0
  298. package/dist/esm/modules/feedback.js.map +1 -0
  299. package/dist/esm/modules/index.d.ts +28 -0
  300. package/dist/esm/modules/index.d.ts.map +1 -0
  301. package/dist/esm/modules/index.js +27 -0
  302. package/dist/esm/modules/index.js.map +1 -0
  303. package/dist/esm/modules/indexing.d.ts +200 -0
  304. package/dist/esm/modules/indexing.d.ts.map +1 -0
  305. package/dist/esm/modules/indexing.js +371 -0
  306. package/dist/esm/modules/indexing.js.map +1 -0
  307. package/dist/esm/modules/ledger.d.ts +150 -0
  308. package/dist/esm/modules/ledger.d.ts.map +1 -0
  309. package/dist/esm/modules/ledger.js +230 -0
  310. package/dist/esm/modules/ledger.js.map +1 -0
  311. package/dist/esm/modules/receipt.d.ts +77 -0
  312. package/dist/esm/modules/receipt.d.ts.map +1 -0
  313. package/dist/esm/modules/receipt.js +144 -0
  314. package/dist/esm/modules/receipt.js.map +1 -0
  315. package/dist/esm/modules/staking.d.ts +51 -0
  316. package/dist/esm/modules/staking.d.ts.map +1 -0
  317. package/dist/esm/modules/staking.js +155 -0
  318. package/dist/esm/modules/staking.js.map +1 -0
  319. package/dist/esm/modules/subscription.d.ts +33 -0
  320. package/dist/esm/modules/subscription.d.ts.map +1 -0
  321. package/dist/esm/modules/subscription.js +92 -0
  322. package/dist/esm/modules/subscription.js.map +1 -0
  323. package/dist/esm/modules/tools.d.ts +182 -0
  324. package/dist/esm/modules/tools.d.ts.map +1 -0
  325. package/dist/esm/modules/tools.js +341 -0
  326. package/dist/esm/modules/tools.js.map +1 -0
  327. package/dist/esm/modules/vault.d.ts +240 -0
  328. package/dist/esm/modules/vault.d.ts.map +1 -0
  329. package/dist/esm/modules/vault.js +423 -0
  330. package/dist/esm/modules/vault.js.map +1 -0
  331. package/dist/esm/parser/client.d.ts +123 -0
  332. package/dist/esm/parser/client.d.ts.map +1 -0
  333. package/dist/esm/parser/client.js +142 -0
  334. package/dist/esm/parser/client.js.map +1 -0
  335. package/dist/esm/parser/complete.d.ts +90 -0
  336. package/dist/esm/parser/complete.d.ts.map +1 -0
  337. package/dist/esm/parser/complete.js +173 -0
  338. package/dist/esm/parser/complete.js.map +1 -0
  339. package/dist/esm/parser/index.d.ts +40 -0
  340. package/dist/esm/parser/index.d.ts.map +1 -0
  341. package/dist/esm/parser/index.js +43 -0
  342. package/dist/esm/parser/index.js.map +1 -0
  343. package/dist/esm/parser/inner.d.ts +114 -0
  344. package/dist/esm/parser/inner.d.ts.map +1 -0
  345. package/dist/esm/parser/inner.js +180 -0
  346. package/dist/esm/parser/inner.js.map +1 -0
  347. package/dist/esm/parser/instructions.d.ts +76 -0
  348. package/dist/esm/parser/instructions.d.ts.map +1 -0
  349. package/dist/esm/parser/instructions.js +109 -0
  350. package/dist/esm/parser/instructions.js.map +1 -0
  351. package/dist/esm/parser/transaction.d.ts +77 -0
  352. package/dist/esm/parser/transaction.d.ts.map +1 -0
  353. package/dist/esm/parser/transaction.js +149 -0
  354. package/dist/esm/parser/transaction.js.map +1 -0
  355. package/dist/esm/parser/types.d.ts +154 -0
  356. package/dist/esm/parser/types.d.ts.map +1 -0
  357. package/dist/esm/parser/types.js +13 -0
  358. package/dist/esm/parser/types.js.map +1 -0
  359. package/dist/esm/pda/index.d.ts +510 -0
  360. package/dist/esm/pda/index.d.ts.map +1 -0
  361. package/dist/esm/pda/index.js +638 -0
  362. package/dist/esm/pda/index.js.map +1 -0
  363. package/dist/esm/plugin/index.d.ts +171 -0
  364. package/dist/esm/plugin/index.d.ts.map +1 -0
  365. package/dist/esm/plugin/index.js +945 -0
  366. package/dist/esm/plugin/index.js.map +1 -0
  367. package/dist/esm/plugin/protocols.d.ts +152 -0
  368. package/dist/esm/plugin/protocols.d.ts.map +1 -0
  369. package/dist/esm/plugin/protocols.js +279 -0
  370. package/dist/esm/plugin/protocols.js.map +1 -0
  371. package/dist/esm/plugin/schemas.d.ts +829 -0
  372. package/dist/esm/plugin/schemas.d.ts.map +1 -0
  373. package/dist/esm/plugin/schemas.js +860 -0
  374. package/dist/esm/plugin/schemas.js.map +1 -0
  375. package/dist/esm/postgres/adapter.d.ts +355 -0
  376. package/dist/esm/postgres/adapter.d.ts.map +1 -0
  377. package/dist/esm/postgres/adapter.js +678 -0
  378. package/dist/esm/postgres/adapter.js.map +1 -0
  379. package/dist/esm/postgres/index.d.ts +24 -0
  380. package/dist/esm/postgres/index.d.ts.map +1 -0
  381. package/dist/esm/postgres/index.js +27 -0
  382. package/dist/esm/postgres/index.js.map +1 -0
  383. package/dist/esm/postgres/serializers.d.ts +30 -0
  384. package/dist/esm/postgres/serializers.d.ts.map +1 -0
  385. package/dist/esm/postgres/serializers.js +362 -0
  386. package/dist/esm/postgres/serializers.js.map +1 -0
  387. package/dist/esm/postgres/sync.d.ts +156 -0
  388. package/dist/esm/postgres/sync.d.ts.map +1 -0
  389. package/dist/esm/postgres/sync.js +285 -0
  390. package/dist/esm/postgres/sync.js.map +1 -0
  391. package/dist/esm/postgres/types.d.ts +167 -0
  392. package/dist/esm/postgres/types.d.ts.map +1 -0
  393. package/dist/esm/postgres/types.js +41 -0
  394. package/dist/esm/postgres/types.js.map +1 -0
  395. package/dist/esm/registries/builder.d.ts +340 -0
  396. package/dist/esm/registries/builder.d.ts.map +1 -0
  397. package/dist/esm/registries/builder.js +410 -0
  398. package/dist/esm/registries/builder.js.map +1 -0
  399. package/dist/esm/registries/discovery.d.ts +333 -0
  400. package/dist/esm/registries/discovery.d.ts.map +1 -0
  401. package/dist/esm/registries/discovery.js +358 -0
  402. package/dist/esm/registries/discovery.js.map +1 -0
  403. package/dist/esm/registries/fairscale.d.ts +680 -0
  404. package/dist/esm/registries/fairscale.d.ts.map +1 -0
  405. package/dist/esm/registries/fairscale.js +633 -0
  406. package/dist/esm/registries/fairscale.js.map +1 -0
  407. package/dist/esm/registries/index.d.ts +52 -0
  408. package/dist/esm/registries/index.d.ts.map +1 -0
  409. package/dist/esm/registries/index.js +46 -0
  410. package/dist/esm/registries/index.js.map +1 -0
  411. package/dist/esm/registries/metaplex-bridge.d.ts +489 -0
  412. package/dist/esm/registries/metaplex-bridge.d.ts.map +1 -0
  413. package/dist/esm/registries/metaplex-bridge.js +706 -0
  414. package/dist/esm/registries/metaplex-bridge.js.map +1 -0
  415. package/dist/esm/registries/session.d.ts +323 -0
  416. package/dist/esm/registries/session.d.ts.map +1 -0
  417. package/dist/esm/registries/session.js +429 -0
  418. package/dist/esm/registries/session.js.map +1 -0
  419. package/dist/esm/registries/x402.d.ts +530 -0
  420. package/dist/esm/registries/x402.d.ts.map +1 -0
  421. package/dist/esm/registries/x402.js +664 -0
  422. package/dist/esm/registries/x402.js.map +1 -0
  423. package/dist/esm/types/accounts.d.ts +765 -0
  424. package/dist/esm/types/accounts.d.ts.map +1 -0
  425. package/dist/esm/types/accounts.js +12 -0
  426. package/dist/esm/types/accounts.js.map +1 -0
  427. package/dist/esm/types/common.d.ts +166 -0
  428. package/dist/esm/types/common.d.ts.map +1 -0
  429. package/dist/esm/types/common.js +12 -0
  430. package/dist/esm/types/common.js.map +1 -0
  431. package/dist/esm/types/endpoint.d.ts +161 -0
  432. package/dist/esm/types/endpoint.d.ts.map +1 -0
  433. package/dist/esm/types/endpoint.js +14 -0
  434. package/dist/esm/types/endpoint.js.map +1 -0
  435. package/dist/esm/types/enums.d.ts +353 -0
  436. package/dist/esm/types/enums.d.ts.map +1 -0
  437. package/dist/esm/types/enums.js +266 -0
  438. package/dist/esm/types/enums.js.map +1 -0
  439. package/dist/esm/types/index.d.ts +29 -0
  440. package/dist/esm/types/index.d.ts.map +1 -0
  441. package/dist/esm/types/index.js +25 -0
  442. package/dist/esm/types/index.js.map +1 -0
  443. package/dist/esm/types/instructions.d.ts +400 -0
  444. package/dist/esm/types/instructions.d.ts.map +1 -0
  445. package/dist/esm/types/instructions.js +89 -0
  446. package/dist/esm/types/instructions.js.map +1 -0
  447. package/dist/esm/types.d.ts +28 -0
  448. package/dist/esm/types.d.ts.map +1 -1
  449. package/dist/esm/types.js +1 -0
  450. package/dist/esm/types.js.map +1 -1
  451. package/dist/esm/utils/anchor-errors.d.ts +61 -0
  452. package/dist/esm/utils/anchor-errors.d.ts.map +1 -0
  453. package/dist/esm/utils/anchor-errors.js +447 -0
  454. package/dist/esm/utils/anchor-errors.js.map +1 -0
  455. package/dist/esm/utils/endpoint-validator.d.ts +110 -0
  456. package/dist/esm/utils/endpoint-validator.d.ts.map +1 -0
  457. package/dist/esm/utils/endpoint-validator.js +226 -0
  458. package/dist/esm/utils/endpoint-validator.js.map +1 -0
  459. package/dist/esm/utils/escrow-validation.d.ts +145 -0
  460. package/dist/esm/utils/escrow-validation.d.ts.map +1 -0
  461. package/dist/esm/utils/escrow-validation.js +212 -0
  462. package/dist/esm/utils/escrow-validation.js.map +1 -0
  463. package/dist/esm/utils/hash.d.ts +75 -0
  464. package/dist/esm/utils/hash.d.ts.map +1 -0
  465. package/dist/esm/utils/hash.js +103 -0
  466. package/dist/esm/utils/hash.js.map +1 -0
  467. package/dist/esm/utils/index.d.ts +3 -1
  468. package/dist/esm/utils/index.d.ts.map +1 -1
  469. package/dist/esm/utils/index.js +6 -3
  470. package/dist/esm/utils/index.js.map +1 -1
  471. package/dist/esm/utils/merchant-validator.d.ts +176 -0
  472. package/dist/esm/utils/merchant-validator.d.ts.map +1 -0
  473. package/dist/esm/utils/merchant-validator.js +241 -0
  474. package/dist/esm/utils/merchant-validator.js.map +1 -0
  475. package/dist/esm/utils/network-normalizer.d.ts +120 -0
  476. package/dist/esm/utils/network-normalizer.d.ts.map +1 -0
  477. package/dist/esm/utils/network-normalizer.js +229 -0
  478. package/dist/esm/utils/network-normalizer.js.map +1 -0
  479. package/dist/esm/utils/priority-fee.d.ts +205 -0
  480. package/dist/esm/utils/priority-fee.d.ts.map +1 -0
  481. package/dist/esm/utils/priority-fee.js +209 -0
  482. package/dist/esm/utils/priority-fee.js.map +1 -0
  483. package/dist/esm/utils/rpc-strategy.d.ts +172 -0
  484. package/dist/esm/utils/rpc-strategy.d.ts.map +1 -0
  485. package/dist/esm/utils/rpc-strategy.js +231 -0
  486. package/dist/esm/utils/rpc-strategy.js.map +1 -0
  487. package/dist/esm/utils/schemas.d.ts +351 -0
  488. package/dist/esm/utils/schemas.d.ts.map +1 -0
  489. package/dist/esm/utils/schemas.js +320 -0
  490. package/dist/esm/utils/schemas.js.map +1 -0
  491. package/dist/esm/utils/serialization.d.ts +69 -0
  492. package/dist/esm/utils/serialization.d.ts.map +1 -0
  493. package/dist/esm/utils/serialization.js +98 -0
  494. package/dist/esm/utils/serialization.js.map +1 -0
  495. package/dist/esm/utils/validate.js +1 -1
  496. package/dist/esm/utils/validate.js.map +1 -1
  497. package/dist/esm/utils/validation.d.ts +29 -0
  498. package/dist/esm/utils/validation.d.ts.map +1 -0
  499. package/dist/esm/utils/validation.js +33 -0
  500. package/dist/esm/utils/validation.js.map +1 -0
  501. package/dist/esm/utils/volume-curve.d.ts +60 -0
  502. package/dist/esm/utils/volume-curve.d.ts.map +1 -0
  503. package/dist/esm/utils/volume-curve.js +114 -0
  504. package/dist/esm/utils/volume-curve.js.map +1 -0
  505. package/dist/esm/utils/x402-direct.d.ts +114 -0
  506. package/dist/esm/utils/x402-direct.d.ts.map +1 -0
  507. package/dist/esm/utils/x402-direct.js +228 -0
  508. package/dist/esm/utils/x402-direct.js.map +1 -0
  509. package/package.json +2 -2
  510. package/dist/esm/instructions/memory.d.ts +0 -8
  511. package/dist/esm/instructions/memory.d.ts.map +0 -1
  512. package/dist/esm/instructions/memory.js +0 -234
  513. package/dist/esm/instructions/memory.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../../src/utils/hash.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,MAAM,GAAI,OAAO,MAAM,GAAG,MAAM,GAAG,UAAU,KAAG,UAM5D,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,UAAU,KAAG,MAAM,EAAsB,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,gBAAgB,GAC3B,eAAe,aAAa,CAAC,UAAU,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,KAC3D,UAyBF,CAAC"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * @module utils/hash
3
+ * @description Cryptographic hashing utilities.
4
+ *
5
+ * @category Utils
6
+ * @since v0.1.0
7
+ */
8
+ import { createHash } from "crypto";
9
+ /**
10
+ * Compute the SHA-256 hash of a UTF-8 string or byte buffer.
11
+ *
12
+ * Returns a 32-byte `Uint8Array` suitable for PDA seeds
13
+ * and Anchor instruction arguments.
14
+ *
15
+ * @name sha256
16
+ * @description Hashes the input using Node’s `crypto.createHash("sha256")`.
17
+ * @param input - A UTF-8 string, `Buffer`, or `Uint8Array` to hash.
18
+ * @returns {Uint8Array} 32-byte SHA-256 digest.
19
+ * @category Utils
20
+ * @since v0.1.0
21
+ * @example
22
+ * ```ts
23
+ * import { sha256 } from "@synapse-sap/sdk/utils";
24
+ *
25
+ * const hash = sha256("jupiter:swap"); // Uint8Array (32 bytes)
26
+ * ```
27
+ */
28
+ export const sha256 = (input) => {
29
+ const hash = createHash("sha256");
30
+ hash.update(typeof input === "string" ? Buffer.from(input, "utf-8") : input);
31
+ return new Uint8Array(hash.digest());
32
+ };
33
+ /**
34
+ * Convert a `Uint8Array` hash to a plain `number[]`.
35
+ *
36
+ * Anchor instruction argument types expect `number[]` for hash fields
37
+ * rather than typed arrays.
38
+ *
39
+ * @name hashToArray
40
+ * @description Converts a byte array (typically 32 bytes) to a plain JavaScript `number[]`.
41
+ * @param hash - The byte array to convert.
42
+ * @returns {number[]} Shallow copy as a plain array of numbers.
43
+ * @category Utils
44
+ * @since v0.1.0
45
+ * @example
46
+ * ```ts
47
+ * import { sha256, hashToArray } from "@synapse-sap/sdk/utils";
48
+ *
49
+ * const arr = hashToArray(sha256("jupiter:swap")); // number[]
50
+ * ```
51
+ */
52
+ export const hashToArray = (hash) => Array.from(hash);
53
+ /**
54
+ * Compute the deterministic batch root used by `settle_batch` (v0.10.0).
55
+ *
56
+ * The on-chain program enforces:
57
+ * `batch_root == sha256(s_0 || s_1 || ... || s_{N-1})`
58
+ * where each `s_i` is a 32-byte service hash, in the same order as the
59
+ * `settlements: Settlement[]` array passed to the instruction.
60
+ *
61
+ * Use this helper to derive the seed for the {@link deriveSettlementReceipt}
62
+ * PDA when batching settlements.
63
+ *
64
+ * @name computeBatchRoot
65
+ * @param serviceHashes - Array of 32-byte service hashes (Buffer/Uint8Array/number[]).
66
+ * @returns {Uint8Array} 32-byte batch root.
67
+ * @throws If any `serviceHashes[i]` is not exactly 32 bytes long.
68
+ * @category Utils
69
+ * @since v0.10.0
70
+ *
71
+ * @example
72
+ * ```ts
73
+ * import { computeBatchRoot, hashToArray } from "@synapse-sap/sdk/utils";
74
+ *
75
+ * const root = computeBatchRoot([h1, h2, h3]);
76
+ * await client.escrow.settleBatch(depositor, settlements, root);
77
+ * ```
78
+ */
79
+ export const computeBatchRoot = (serviceHashes) => {
80
+ if (serviceHashes.length === 0) {
81
+ throw new Error("computeBatchRoot: serviceHashes must not be empty");
82
+ }
83
+ const hash = createHash("sha256");
84
+ for (let i = 0; i < serviceHashes.length; i++) {
85
+ const h = serviceHashes[i];
86
+ let buf;
87
+ if (h instanceof Uint8Array) {
88
+ buf = Buffer.from(h);
89
+ }
90
+ else if (Array.isArray(h)) {
91
+ buf = Buffer.from(h);
92
+ }
93
+ else {
94
+ throw new Error(`computeBatchRoot: serviceHashes[${i}] is undefined or unsupported type`);
95
+ }
96
+ if (buf.length !== 32) {
97
+ throw new Error(`computeBatchRoot: serviceHashes[${i}] must be 32 bytes, got ${buf.length}`);
98
+ }
99
+ hash.update(buf);
100
+ }
101
+ return new Uint8Array(hash.digest());
102
+ };
103
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../src/utils/hash.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAmC,EAAc,EAAE;IACxE,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,CACT,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAChE,CAAC;IACF,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAgB,EAAY,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,aAA4D,EAChD,EAAE;IACd,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC,YAAY,UAAU,EAAE,CAAC;YAC5B,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,mCAAmC,CAAC,oCAAoC,CACzE,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,mCAAmC,CAAC,2BAA2B,GAAG,CAAC,MAAM,EAAE,CAC5E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC"}
@@ -1,4 +1,6 @@
1
1
  export * from "./validate";
2
- export declare function sha256(data: Uint8Array): Uint8Array;
2
+ export { sha256, hashToArray } from "./hash";
3
3
  export declare function hashReceipt(agent: Uint8Array, requestId: Uint8Array, callCount: number, amount: bigint): Uint8Array;
4
+ /** Assert helper */
5
+ export declare function assert(cond: boolean, msg: string): asserts cond;
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAKA,cAAc,YAAY,CAAC;AAG3B,wBAAgB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAEnD;AAGD,wBAAgB,WAAW,CACzB,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,UAAU,EACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,UAAU,CAEZ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAKA,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG7C,wBAAgB,WAAW,CACzB,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,UAAU,EACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,UAAU,CAEZ;AAED,oBAAoB;AACpB,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAE/D"}
@@ -4,11 +4,14 @@
4
4
  // ================================================================
5
5
  export * from "./validate";
6
6
  // ── Merkle helpers for receipt proofs ──
7
- export function sha256(data) {
8
- return crypto.subtle.digest("SHA-256", data).then(b => new Uint8Array(b));
9
- }
7
+ export { sha256, hashToArray } from "./hash";
10
8
  // client-side sha256 for receipt hashing
11
9
  export function hashReceipt(agent, requestId, callCount, amount) {
12
10
  return new Uint8Array(32); // Stub
13
11
  }
12
+ /** Assert helper */
13
+ export function assert(cond, msg) {
14
+ if (!cond)
15
+ throw new Error(msg);
16
+ }
14
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,wCAAwC;AACxC,2BAA2B;AAC3B,mEAAmE;AAEnE,cAAc,YAAY,CAAC;AAE3B,0CAA0C;AAC1C,MAAM,UAAU,MAAM,CAAC,IAAgB;IACrC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAQ,CAAC;AACnF,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,WAAW,CACzB,KAAiB,EACjB,SAAqB,EACrB,SAAiB,EACjB,MAAc;IAEd,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO;AACpC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,wCAAwC;AACxC,2BAA2B;AAC3B,mEAAmE;AAEnE,cAAc,YAAY,CAAC;AAE3B,0CAA0C;AAC1C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE7C,yCAAyC;AACzC,MAAM,UAAU,WAAW,CACzB,KAAiB,EACjB,SAAqB,EACrB,SAAiB,EACjB,MAAc;IAEd,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO;AACpC,CAAC;AAED,oBAAoB;AACpB,MAAM,UAAU,MAAM,CAAC,IAAa,EAAE,GAAW;IAC/C,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * @module utils/merchant-validator
3
+ * @description Standard Synapse merchant middleware for x402 settlement.
4
+ *
5
+ * Reads `X-Payment-*` headers from incoming HTTP requests, validates
6
+ * the escrow on-chain, auto-generates the correct `AccountMeta[]`,
7
+ * and throws explicit errors (e.g. {@link MissingEscrowAtaError})
8
+ * instead of letting the program return a generic crash.
9
+ *
10
+ * Designed for agents like Syra/Invoica that receive x402 payments.
11
+ *
12
+ * @category Utils
13
+ * @since v0.6.4
14
+ */
15
+ import { type PublicKey, type Connection, type AccountMeta } from "@solana/web3.js";
16
+ import { BN } from "@coral-xyz/anchor";
17
+ import type { EscrowValidationResult } from "./escrow-validation";
18
+ import type { EscrowAccountData } from "../types";
19
+ /**
20
+ * @interface ParsedX402Headers
21
+ * @description Parsed and typed x402 payment headers from incoming HTTP request.
22
+ * @category Utils
23
+ * @since v0.6.4
24
+ */
25
+ export interface ParsedX402Headers {
26
+ /** x402 protocol identifier — must be "SAP-x402". */
27
+ readonly protocol: string;
28
+ /** Escrow PDA address. */
29
+ readonly escrowPda: PublicKey;
30
+ /** Agent PDA address. */
31
+ readonly agentPda: PublicKey;
32
+ /** Depositor wallet address. */
33
+ readonly depositorWallet: PublicKey;
34
+ /** Max calls allowed. */
35
+ readonly maxCalls: BN;
36
+ /** Price per call. */
37
+ readonly pricePerCall: BN;
38
+ /** SAP program ID. */
39
+ readonly programId: PublicKey;
40
+ /** Network identifier. */
41
+ readonly network: string;
42
+ }
43
+ /**
44
+ * @interface MerchantValidationResult
45
+ * @description Complete validation result for merchant-side x402 processing.
46
+ * @category Utils
47
+ * @since v0.6.4
48
+ */
49
+ export interface MerchantValidationResult {
50
+ /** Whether the escrow is valid and ready for settlement. */
51
+ readonly valid: boolean;
52
+ /** Parsed x402 headers. */
53
+ readonly headers: ParsedX402Headers;
54
+ /** Full escrow validation result. */
55
+ readonly escrowValidation: EscrowValidationResult;
56
+ /** Pre-built AccountMeta[] for settlement TX (empty for SOL escrows). */
57
+ readonly accountMetas: AccountMeta[];
58
+ /** All validation errors. */
59
+ readonly errors: string[];
60
+ }
61
+ /**
62
+ * @name parseX402Headers
63
+ * @description Parse and validate x402 headers from an HTTP request.
64
+ *
65
+ * @param headers - HTTP headers object (case-insensitive key lookup).
66
+ * @returns Parsed x402 headers.
67
+ * @throws {SapValidationError} If required headers are missing or malformed.
68
+ *
69
+ * @category Utils
70
+ * @since v0.6.4
71
+ */
72
+ export declare function parseX402Headers(headers: Record<string, string | string[] | undefined>): ParsedX402Headers;
73
+ /**
74
+ * @name SapMerchantValidator
75
+ * @description Standard Synapse merchant middleware for x402 payment validation.
76
+ *
77
+ * Reads `X-Payment-*` headers, validates escrow state on-chain, generates
78
+ * correct `AccountMeta[]` for SPL token escrows, and throws explicit errors
79
+ * (e.g. {@link MissingEscrowAtaError}) when ATA accounts are missing.
80
+ *
81
+ * @category Utils
82
+ * @since v0.6.4
83
+ *
84
+ * @example
85
+ * ```ts
86
+ * const validator = new SapMerchantValidator(connection, fetchEscrow);
87
+ *
88
+ * // Express.js integration
89
+ * app.post("/api/v1/chat", async (req, res) => {
90
+ * try {
91
+ * const validation = await validator.validateRequest(req.headers, {
92
+ * callsToSettle: 1,
93
+ * });
94
+ *
95
+ * if (!validation.valid) {
96
+ * return res.status(402).json({ errors: validation.errors });
97
+ * }
98
+ *
99
+ * // Process request...
100
+ *
101
+ * // Settle payment using pre-built account metas
102
+ * await client.escrow.settle(
103
+ * validation.headers.depositorWallet,
104
+ * 1,
105
+ * serviceHash,
106
+ * validation.accountMetas,
107
+ * );
108
+ *
109
+ * res.json({ result: "..." });
110
+ * } catch (err) {
111
+ * if (err instanceof MissingEscrowAtaError) {
112
+ * return res.status(402).json({
113
+ * error: err.message,
114
+ * side: err.side,
115
+ * ata: err.ataAddress,
116
+ * });
117
+ * }
118
+ * throw err;
119
+ * }
120
+ * });
121
+ * ```
122
+ */
123
+ export declare class SapMerchantValidator {
124
+ private readonly connection;
125
+ private readonly fetchEscrow;
126
+ /**
127
+ * @param connection - Solana RPC connection.
128
+ * @param fetchEscrow - Callback to fetch escrow account data by PDA.
129
+ * Typically `(pda) => client.escrow.fetchByPda(pda).catch(() => null)`.
130
+ */
131
+ constructor(connection: Connection, fetchEscrow: (escrowPda: PublicKey) => Promise<EscrowAccountData | null>);
132
+ /**
133
+ * @name validateRequest
134
+ * @description Full validation pipeline for an incoming x402 request.
135
+ *
136
+ * Steps:
137
+ * 1. Parse `X-Payment-*` headers
138
+ * 2. Fetch escrow on-chain
139
+ * 3. Validate escrow state (balance, expiry, max calls)
140
+ * 4. If SPL escrow: validate ATAs exist and mint matches
141
+ * 5. Build `AccountMeta[]` for settlement TX
142
+ *
143
+ * @param headers - HTTP headers from the incoming request.
144
+ * @param opts
145
+ * @param opts.callsToSettle - Number of calls to validate affordability for (default: 1).
146
+ * @param opts.throwOnMissingAta - Throw {@link MissingEscrowAtaError} instead of returning errors (default: true).
147
+ *
148
+ * @returns A complete {@link MerchantValidationResult}.
149
+ *
150
+ * @throws {SapValidationError} If headers are missing or malformed.
151
+ * @throws {MissingEscrowAtaError} If SPL ATAs are missing and `throwOnMissingAta` is true.
152
+ *
153
+ * @category Utils
154
+ * @since v0.6.4
155
+ */
156
+ validateRequest(headers: Record<string, string | string[] | undefined>, opts?: {
157
+ callsToSettle?: number;
158
+ throwOnMissingAta?: boolean;
159
+ }): Promise<MerchantValidationResult>;
160
+ /**
161
+ * @name validateEscrow
162
+ * @description Validate escrow from pre-parsed headers (convenience method).
163
+ * Call this when you've already parsed the headers yourself.
164
+ *
165
+ * @param headers - Pre-parsed x402 headers.
166
+ * @param opts
167
+ * @returns The escrow validation result with pre-built account metas.
168
+ *
169
+ * @category Utils
170
+ * @since v0.6.4
171
+ */
172
+ validateEscrow(headers: ParsedX402Headers, opts?: {
173
+ callsToSettle?: number;
174
+ }): Promise<EscrowValidationResult>;
175
+ }
176
+ //# sourceMappingURL=merchant-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merchant-validator.d.ts","sourceRoot":"","sources":["../../../src/utils/merchant-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAMvC,OAAO,KAAK,EACV,sBAAsB,EACvB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAMlD;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,0BAA0B;IAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,yBAAyB;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,gCAAgC;IAChC,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC;IACpC,yBAAyB;IACzB,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;IACtB,sBAAsB;IACtB,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC;IAC1B,sBAAsB;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,0BAA0B;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,2BAA2B;IAC3B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,qCAAqC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;IAClD,yEAAyE;IACzE,QAAQ,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;IACrC,6BAA6B;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;CAC3B;AAkBD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,GACrD,iBAAiB,CA6EnB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAEW;IAEvC;;;;OAIG;gBAED,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,CACX,SAAS,EAAE,SAAS,KACjB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAMxC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,eAAe,CACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,EACtD,IAAI,CAAC,EAAE;QACL,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,GACA,OAAO,CAAC,wBAAwB,CAAC;IAwCpC;;;;;;;;;;;OAWG;IACG,cAAc,CAClB,OAAO,EAAE,iBAAiB,EAC1B,IAAI,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAChC,OAAO,CAAC,sBAAsB,CAAC;CASnC"}
@@ -0,0 +1,241 @@
1
+ /**
2
+ * @module utils/merchant-validator
3
+ * @description Standard Synapse merchant middleware for x402 settlement.
4
+ *
5
+ * Reads `X-Payment-*` headers from incoming HTTP requests, validates
6
+ * the escrow on-chain, auto-generates the correct `AccountMeta[]`,
7
+ * and throws explicit errors (e.g. {@link MissingEscrowAtaError})
8
+ * instead of letting the program return a generic crash.
9
+ *
10
+ * Designed for agents like Syra/Invoica that receive x402 payments.
11
+ *
12
+ * @category Utils
13
+ * @since v0.6.4
14
+ */
15
+ import { PublicKey as PK } from "@solana/web3.js";
16
+ import { BN } from "@coral-xyz/anchor";
17
+ import { validateEscrowState, toAccountMetas, MissingEscrowAtaError, } from "./escrow-validation";
18
+ import { SapValidationError } from "../errors/index";
19
+ // ═══════════════════════════════════════════════════════════════════
20
+ // Header parsing
21
+ // ═══════════════════════════════════════════════════════════════════
22
+ /** Required x402 headers. */
23
+ const REQUIRED_HEADERS = [
24
+ "X-Payment-Protocol",
25
+ "X-Payment-Escrow",
26
+ "X-Payment-Agent",
27
+ "X-Payment-Depositor",
28
+ "X-Payment-MaxCalls",
29
+ "X-Payment-PricePerCall",
30
+ "X-Payment-Program",
31
+ "X-Payment-Network",
32
+ ];
33
+ /**
34
+ * @name parseX402Headers
35
+ * @description Parse and validate x402 headers from an HTTP request.
36
+ *
37
+ * @param headers - HTTP headers object (case-insensitive key lookup).
38
+ * @returns Parsed x402 headers.
39
+ * @throws {SapValidationError} If required headers are missing or malformed.
40
+ *
41
+ * @category Utils
42
+ * @since v0.6.4
43
+ */
44
+ export function parseX402Headers(headers) {
45
+ // Normalize to case-insensitive
46
+ const normalized = new Map();
47
+ for (const [key, value] of Object.entries(headers)) {
48
+ const val = Array.isArray(value) ? value[0] : value;
49
+ if (val !== undefined) {
50
+ normalized.set(key.toLowerCase(), val);
51
+ }
52
+ }
53
+ // Validate required headers present
54
+ const missing = [];
55
+ for (const h of REQUIRED_HEADERS) {
56
+ if (!normalized.has(h.toLowerCase())) {
57
+ missing.push(h);
58
+ }
59
+ }
60
+ if (missing.length > 0) {
61
+ throw new SapValidationError(`Missing required x402 headers: ${missing.join(", ")}`, "x402-headers");
62
+ }
63
+ const get = (key) => normalized.get(key.toLowerCase());
64
+ // Validate protocol
65
+ const protocol = get("X-Payment-Protocol");
66
+ if (protocol !== "SAP-x402") {
67
+ throw new SapValidationError(`Invalid X-Payment-Protocol: "${protocol}" (expected "SAP-x402")`, "X-Payment-Protocol");
68
+ }
69
+ // Parse PublicKeys
70
+ let escrowPda;
71
+ let agentPda;
72
+ let depositorWallet;
73
+ let programId;
74
+ try {
75
+ escrowPda = new PK(get("X-Payment-Escrow"));
76
+ agentPda = new PK(get("X-Payment-Agent"));
77
+ depositorWallet = new PK(get("X-Payment-Depositor"));
78
+ programId = new PK(get("X-Payment-Program"));
79
+ }
80
+ catch {
81
+ throw new SapValidationError("Malformed public key in x402 headers", "x402-headers");
82
+ }
83
+ // Parse numeric values
84
+ const maxCallsStr = get("X-Payment-MaxCalls");
85
+ const pricePerCallStr = get("X-Payment-PricePerCall");
86
+ let maxCalls;
87
+ let pricePerCall;
88
+ try {
89
+ maxCalls = new BN(maxCallsStr);
90
+ pricePerCall = new BN(pricePerCallStr);
91
+ }
92
+ catch {
93
+ throw new SapValidationError("Invalid numeric value in X-Payment-MaxCalls or X-Payment-PricePerCall", "x402-headers");
94
+ }
95
+ return {
96
+ protocol,
97
+ escrowPda,
98
+ agentPda,
99
+ depositorWallet,
100
+ maxCalls,
101
+ pricePerCall,
102
+ programId,
103
+ network: get("X-Payment-Network"),
104
+ };
105
+ }
106
+ // ═══════════════════════════════════════════════════════════════════
107
+ // Merchant Validator
108
+ // ═══════════════════════════════════════════════════════════════════
109
+ /**
110
+ * @name SapMerchantValidator
111
+ * @description Standard Synapse merchant middleware for x402 payment validation.
112
+ *
113
+ * Reads `X-Payment-*` headers, validates escrow state on-chain, generates
114
+ * correct `AccountMeta[]` for SPL token escrows, and throws explicit errors
115
+ * (e.g. {@link MissingEscrowAtaError}) when ATA accounts are missing.
116
+ *
117
+ * @category Utils
118
+ * @since v0.6.4
119
+ *
120
+ * @example
121
+ * ```ts
122
+ * const validator = new SapMerchantValidator(connection, fetchEscrow);
123
+ *
124
+ * // Express.js integration
125
+ * app.post("/api/v1/chat", async (req, res) => {
126
+ * try {
127
+ * const validation = await validator.validateRequest(req.headers, {
128
+ * callsToSettle: 1,
129
+ * });
130
+ *
131
+ * if (!validation.valid) {
132
+ * return res.status(402).json({ errors: validation.errors });
133
+ * }
134
+ *
135
+ * // Process request...
136
+ *
137
+ * // Settle payment using pre-built account metas
138
+ * await client.escrow.settle(
139
+ * validation.headers.depositorWallet,
140
+ * 1,
141
+ * serviceHash,
142
+ * validation.accountMetas,
143
+ * );
144
+ *
145
+ * res.json({ result: "..." });
146
+ * } catch (err) {
147
+ * if (err instanceof MissingEscrowAtaError) {
148
+ * return res.status(402).json({
149
+ * error: err.message,
150
+ * side: err.side,
151
+ * ata: err.ataAddress,
152
+ * });
153
+ * }
154
+ * throw err;
155
+ * }
156
+ * });
157
+ * ```
158
+ */
159
+ export class SapMerchantValidator {
160
+ connection;
161
+ fetchEscrow;
162
+ /**
163
+ * @param connection - Solana RPC connection.
164
+ * @param fetchEscrow - Callback to fetch escrow account data by PDA.
165
+ * Typically `(pda) => client.escrow.fetchByPda(pda).catch(() => null)`.
166
+ */
167
+ constructor(connection, fetchEscrow) {
168
+ this.connection = connection;
169
+ this.fetchEscrow = fetchEscrow;
170
+ }
171
+ /**
172
+ * @name validateRequest
173
+ * @description Full validation pipeline for an incoming x402 request.
174
+ *
175
+ * Steps:
176
+ * 1. Parse `X-Payment-*` headers
177
+ * 2. Fetch escrow on-chain
178
+ * 3. Validate escrow state (balance, expiry, max calls)
179
+ * 4. If SPL escrow: validate ATAs exist and mint matches
180
+ * 5. Build `AccountMeta[]` for settlement TX
181
+ *
182
+ * @param headers - HTTP headers from the incoming request.
183
+ * @param opts
184
+ * @param opts.callsToSettle - Number of calls to validate affordability for (default: 1).
185
+ * @param opts.throwOnMissingAta - Throw {@link MissingEscrowAtaError} instead of returning errors (default: true).
186
+ *
187
+ * @returns A complete {@link MerchantValidationResult}.
188
+ *
189
+ * @throws {SapValidationError} If headers are missing or malformed.
190
+ * @throws {MissingEscrowAtaError} If SPL ATAs are missing and `throwOnMissingAta` is true.
191
+ *
192
+ * @category Utils
193
+ * @since v0.6.4
194
+ */
195
+ async validateRequest(headers, opts) {
196
+ // 1. Parse headers
197
+ const parsed = parseX402Headers(headers);
198
+ // 2. Validate escrow state
199
+ const escrowValidation = await validateEscrowState(this.connection, parsed.agentPda, // agentWallet derived inside validate
200
+ parsed.depositorWallet, this.fetchEscrow, { callsToSettle: opts?.callsToSettle ?? 1 });
201
+ // 3. Check for ATA errors and optionally throw
202
+ const throwOnMissingAta = opts?.throwOnMissingAta !== false;
203
+ if (throwOnMissingAta && escrowValidation.isSplEscrow) {
204
+ for (const error of escrowValidation.errors) {
205
+ if (error.includes("Depositor ATA does not exist")) {
206
+ const ataAddr = error.split(": ")[1] ?? "unknown";
207
+ throw new MissingEscrowAtaError(ataAddr, "depositor");
208
+ }
209
+ if (error.includes("Escrow ATA does not exist")) {
210
+ const ataAddr = error.split(": ")[1] ?? "unknown";
211
+ throw new MissingEscrowAtaError(ataAddr, "escrow");
212
+ }
213
+ }
214
+ }
215
+ // 4. Build account metas
216
+ const accountMetas = toAccountMetas(escrowValidation.splAccounts);
217
+ return {
218
+ valid: escrowValidation.valid,
219
+ headers: parsed,
220
+ escrowValidation,
221
+ accountMetas,
222
+ errors: escrowValidation.errors,
223
+ };
224
+ }
225
+ /**
226
+ * @name validateEscrow
227
+ * @description Validate escrow from pre-parsed headers (convenience method).
228
+ * Call this when you've already parsed the headers yourself.
229
+ *
230
+ * @param headers - Pre-parsed x402 headers.
231
+ * @param opts
232
+ * @returns The escrow validation result with pre-built account metas.
233
+ *
234
+ * @category Utils
235
+ * @since v0.6.4
236
+ */
237
+ async validateEscrow(headers, opts) {
238
+ return validateEscrowState(this.connection, headers.agentPda, headers.depositorWallet, this.fetchEscrow, opts);
239
+ }
240
+ }
241
+ //# sourceMappingURL=merchant-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merchant-validator.js","sourceRoot":"","sources":["../../../src/utils/merchant-validator.ts"],"names":[],"mappings":"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"}