@oobe-protocol-labs/synapse-sap-sdk 0.14.0 → 0.15.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 (651) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +986 -0
  3. package/dist/cjs/client.js +30 -13
  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 +30 -13
  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/dist/types/constants/addresses.d.ts +117 -0
  510. package/dist/types/constants/addresses.d.ts.map +1 -0
  511. package/dist/types/constants/index.d.ts +31 -0
  512. package/dist/types/constants/index.d.ts.map +1 -0
  513. package/dist/types/constants/limits.d.ts +149 -0
  514. package/dist/types/constants/limits.d.ts.map +1 -0
  515. package/dist/types/constants/network.d.ts +81 -0
  516. package/dist/types/constants/network.d.ts.map +1 -0
  517. package/dist/types/constants/payments.d.ts +121 -0
  518. package/dist/types/constants/payments.d.ts.map +1 -0
  519. package/dist/types/constants/programs.d.ts +69 -0
  520. package/dist/types/constants/programs.d.ts.map +1 -0
  521. package/dist/types/constants/seeds.d.ts +82 -0
  522. package/dist/types/constants/seeds.d.ts.map +1 -0
  523. package/dist/types/core/client.d.ts +467 -0
  524. package/dist/types/core/client.d.ts.map +1 -0
  525. package/dist/types/core/connection.d.ts +305 -0
  526. package/dist/types/core/connection.d.ts.map +1 -0
  527. package/dist/types/core/index.d.ts +20 -0
  528. package/dist/types/core/index.d.ts.map +1 -0
  529. package/dist/types/errors/index.d.ts +335 -0
  530. package/dist/types/errors/index.d.ts.map +1 -0
  531. package/dist/types/events/geyser.d.ts +150 -0
  532. package/dist/types/events/geyser.d.ts.map +1 -0
  533. package/dist/types/events/index.d.ts +248 -0
  534. package/dist/types/events/index.d.ts.map +1 -0
  535. package/dist/types/idl/index.d.ts +70 -0
  536. package/dist/types/idl/index.d.ts.map +1 -0
  537. package/dist/types/index.d.ts +86 -0
  538. package/dist/types/index.d.ts.map +1 -0
  539. package/dist/types/modules/agent.d.ts +156 -0
  540. package/dist/types/modules/agent.d.ts.map +1 -0
  541. package/dist/types/modules/attestation.d.ts +96 -0
  542. package/dist/types/modules/attestation.d.ts.map +1 -0
  543. package/dist/types/modules/base.d.ts +215 -0
  544. package/dist/types/modules/base.d.ts.map +1 -0
  545. package/dist/types/modules/escrow-v2.d.ts +285 -0
  546. package/dist/types/modules/escrow-v2.d.ts.map +1 -0
  547. package/dist/types/modules/feedback.d.ts +105 -0
  548. package/dist/types/modules/feedback.d.ts.map +1 -0
  549. package/dist/types/modules/index.d.ts +27 -0
  550. package/dist/types/modules/index.d.ts.map +1 -0
  551. package/dist/types/modules/indexing.d.ts +200 -0
  552. package/dist/types/modules/indexing.d.ts.map +1 -0
  553. package/dist/types/modules/ledger.d.ts +150 -0
  554. package/dist/types/modules/ledger.d.ts.map +1 -0
  555. package/dist/types/modules/receipt.d.ts +91 -0
  556. package/dist/types/modules/receipt.d.ts.map +1 -0
  557. package/dist/types/modules/staking.d.ts +51 -0
  558. package/dist/types/modules/staking.d.ts.map +1 -0
  559. package/dist/types/modules/subscription.d.ts +33 -0
  560. package/dist/types/modules/subscription.d.ts.map +1 -0
  561. package/dist/types/modules/tools.d.ts +172 -0
  562. package/dist/types/modules/tools.d.ts.map +1 -0
  563. package/dist/types/modules/vault.d.ts +240 -0
  564. package/dist/types/modules/vault.d.ts.map +1 -0
  565. package/dist/types/parser/client.d.ts +123 -0
  566. package/dist/types/parser/client.d.ts.map +1 -0
  567. package/dist/types/parser/complete.d.ts +90 -0
  568. package/dist/types/parser/complete.d.ts.map +1 -0
  569. package/dist/types/parser/index.d.ts +40 -0
  570. package/dist/types/parser/index.d.ts.map +1 -0
  571. package/dist/types/parser/inner.d.ts +114 -0
  572. package/dist/types/parser/inner.d.ts.map +1 -0
  573. package/dist/types/parser/instructions.d.ts +76 -0
  574. package/dist/types/parser/instructions.d.ts.map +1 -0
  575. package/dist/types/parser/transaction.d.ts +77 -0
  576. package/dist/types/parser/transaction.d.ts.map +1 -0
  577. package/dist/types/parser/types.d.ts +154 -0
  578. package/dist/types/parser/types.d.ts.map +1 -0
  579. package/dist/types/pda/index.d.ts +527 -0
  580. package/dist/types/pda/index.d.ts.map +1 -0
  581. package/dist/types/plugin/index.d.ts +171 -0
  582. package/dist/types/plugin/index.d.ts.map +1 -0
  583. package/dist/types/plugin/protocols.d.ts +152 -0
  584. package/dist/types/plugin/protocols.d.ts.map +1 -0
  585. package/dist/types/plugin/schemas.d.ts +829 -0
  586. package/dist/types/plugin/schemas.d.ts.map +1 -0
  587. package/dist/types/postgres/adapter.d.ts +355 -0
  588. package/dist/types/postgres/adapter.d.ts.map +1 -0
  589. package/dist/types/postgres/index.d.ts +24 -0
  590. package/dist/types/postgres/index.d.ts.map +1 -0
  591. package/dist/types/postgres/serializers.d.ts +30 -0
  592. package/dist/types/postgres/serializers.d.ts.map +1 -0
  593. package/dist/types/postgres/sync.d.ts +156 -0
  594. package/dist/types/postgres/sync.d.ts.map +1 -0
  595. package/dist/types/postgres/types.d.ts +167 -0
  596. package/dist/types/postgres/types.d.ts.map +1 -0
  597. package/dist/types/registries/builder.d.ts +333 -0
  598. package/dist/types/registries/builder.d.ts.map +1 -0
  599. package/dist/types/registries/discovery.d.ts +333 -0
  600. package/dist/types/registries/discovery.d.ts.map +1 -0
  601. package/dist/types/registries/fairscale.d.ts +680 -0
  602. package/dist/types/registries/fairscale.d.ts.map +1 -0
  603. package/dist/types/registries/index.d.ts +52 -0
  604. package/dist/types/registries/index.d.ts.map +1 -0
  605. package/dist/types/registries/metaplex-bridge.d.ts +488 -0
  606. package/dist/types/registries/metaplex-bridge.d.ts.map +1 -0
  607. package/dist/types/registries/session.d.ts +317 -0
  608. package/dist/types/registries/session.d.ts.map +1 -0
  609. package/dist/types/registries/x402.d.ts +523 -0
  610. package/dist/types/registries/x402.d.ts.map +1 -0
  611. package/dist/types/types/accounts.d.ts +817 -0
  612. package/dist/types/types/accounts.d.ts.map +1 -0
  613. package/dist/types/types/common.d.ts +166 -0
  614. package/dist/types/types/common.d.ts.map +1 -0
  615. package/dist/types/types/endpoint.d.ts +161 -0
  616. package/dist/types/types/endpoint.d.ts.map +1 -0
  617. package/dist/types/types/enums.d.ts +353 -0
  618. package/dist/types/types/enums.d.ts.map +1 -0
  619. package/dist/types/types/index.d.ts +29 -0
  620. package/dist/types/types/index.d.ts.map +1 -0
  621. package/dist/types/types/instructions.d.ts +400 -0
  622. package/dist/types/types/instructions.d.ts.map +1 -0
  623. package/dist/types/utils/anchor-errors.d.ts +61 -0
  624. package/dist/types/utils/anchor-errors.d.ts.map +1 -0
  625. package/dist/types/utils/endpoint-validator.d.ts +110 -0
  626. package/dist/types/utils/endpoint-validator.d.ts.map +1 -0
  627. package/dist/types/utils/escrow-validation.d.ts +145 -0
  628. package/dist/types/utils/escrow-validation.d.ts.map +1 -0
  629. package/dist/types/utils/hash.d.ts +75 -0
  630. package/dist/types/utils/hash.d.ts.map +1 -0
  631. package/dist/types/utils/index.d.ts +36 -0
  632. package/dist/types/utils/index.d.ts.map +1 -0
  633. package/dist/types/utils/merchant-validator.d.ts +176 -0
  634. package/dist/types/utils/merchant-validator.d.ts.map +1 -0
  635. package/dist/types/utils/network-normalizer.d.ts +120 -0
  636. package/dist/types/utils/network-normalizer.d.ts.map +1 -0
  637. package/dist/types/utils/priority-fee.d.ts +205 -0
  638. package/dist/types/utils/priority-fee.d.ts.map +1 -0
  639. package/dist/types/utils/rpc-strategy.d.ts +179 -0
  640. package/dist/types/utils/rpc-strategy.d.ts.map +1 -0
  641. package/dist/types/utils/schemas.d.ts +351 -0
  642. package/dist/types/utils/schemas.d.ts.map +1 -0
  643. package/dist/types/utils/serialization.d.ts +69 -0
  644. package/dist/types/utils/serialization.d.ts.map +1 -0
  645. package/dist/types/utils/validation.d.ts +29 -0
  646. package/dist/types/utils/validation.d.ts.map +1 -0
  647. package/dist/types/utils/volume-curve.d.ts +60 -0
  648. package/dist/types/utils/volume-curve.d.ts.map +1 -0
  649. package/dist/types/utils/x402-direct.d.ts +114 -0
  650. package/dist/types/utils/x402-direct.d.ts.map +1 -0
  651. package/package.json +2 -2
@@ -0,0 +1,209 @@
1
+ /**
2
+ * @module utils/priority-fee
3
+ * @description Compute budget and priority fee utilities for SAP transactions.
4
+ *
5
+ * Solana transactions that include a priority fee (via the Compute Budget program)
6
+ * land faster because validators prefer higher-fee transactions. This module
7
+ * provides a clean, composable API for building priority-fee instructions
8
+ * that can be prepended to any Anchor method builder via `.preInstructions()`.
9
+ *
10
+ * Typical use: x402 settlement transactions where the receiving agent's RPC
11
+ * has a short confirmation window (e.g., 30 seconds).
12
+ *
13
+ * @category Utils
14
+ * @since v0.6.2
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * import { buildPriorityFeeIxs, DEFAULT_SETTLE_PRIORITY } from "@synapse-sap/sdk";
19
+ *
20
+ * // Append to any Anchor method builder:
21
+ * await program.methods
22
+ * .settleCalls(calls, hash)
23
+ * .accounts({ ... })
24
+ * .preInstructions(buildPriorityFeeIxs({ priorityFeeMicroLamports: 5000 }))
25
+ * .rpc({ skipPreflight: true });
26
+ * ```
27
+ */
28
+ import { ComputeBudgetProgram, } from "@solana/web3.js";
29
+ // ═══════════════════════════════════════════════════════════════════
30
+ // Constants
31
+ // ═══════════════════════════════════════════════════════════════════
32
+ /**
33
+ * Default priority fee for settlement transactions (in microlamports).
34
+ * 5000 µL ≈ 0.0005 SOL per 200k CU — fast enough for most agent RPCs.
35
+ *
36
+ * @since v0.6.2
37
+ */
38
+ export const DEFAULT_SETTLE_PRIORITY_FEE = 5_000;
39
+ /**
40
+ * Default compute unit limit for settlement transactions.
41
+ * `settle_calls` uses ~60k CU; 100k provides a safe margin.
42
+ *
43
+ * @since v0.6.2
44
+ */
45
+ export const DEFAULT_SETTLE_COMPUTE_UNITS = 100_000;
46
+ /**
47
+ * Default compute unit limit for batch settlement transactions.
48
+ * `settle_batch` with 10 entries uses ~200k CU; 300k provides margin.
49
+ *
50
+ * @since v0.6.2
51
+ */
52
+ export const DEFAULT_BATCH_SETTLE_COMPUTE_UNITS = 300_000;
53
+ /**
54
+ * Per-settlement CU cost observed for `settle_batch` (sha256 of the
55
+ * service hash, dedup scan, volume-curve math, account writes).
56
+ *
57
+ * @since v0.11.0
58
+ * @internal
59
+ */
60
+ const BATCH_SETTLE_CU_PER_ENTRY = 25_000;
61
+ /**
62
+ * Fixed CU overhead for a `settle_batch` transaction independent of
63
+ * the entry count (signature verify, account loads, transfer, event).
64
+ *
65
+ * @since v0.11.0
66
+ * @internal
67
+ */
68
+ const BATCH_SETTLE_CU_BASE = 60_000;
69
+ /**
70
+ * Hard ceiling — Solana caps a single instruction at 1.4M CU. We
71
+ * stay below that so a transaction with extra preInstructions
72
+ * (priority-fee, ATA creation) still fits.
73
+ *
74
+ * @since v0.11.0
75
+ * @internal
76
+ */
77
+ const BATCH_SETTLE_CU_MAX = 1_200_000;
78
+ /**
79
+ * @name computeBatchSettleCu
80
+ * @description Compute the CU limit needed by `settle_batch` for a
81
+ * given entry count. Returned value is safe to pass to
82
+ * `ComputeBudgetProgram.setComputeUnitLimit`.
83
+ *
84
+ * Formula: `60_000 + n * 25_000`, clamped to 1.2M.
85
+ *
86
+ * @param entryCount - Number of settlements in the batch (1..N).
87
+ * @returns CU limit suitable for `setComputeUnitLimit`.
88
+ *
89
+ * @example
90
+ * ```ts
91
+ * const cu = computeBatchSettleCu(20); // 560_000
92
+ * ```
93
+ *
94
+ * @category Utils
95
+ * @since v0.11.0
96
+ */
97
+ export function computeBatchSettleCu(entryCount) {
98
+ if (!Number.isFinite(entryCount) || entryCount <= 0) {
99
+ return DEFAULT_BATCH_SETTLE_COMPUTE_UNITS;
100
+ }
101
+ const raw = BATCH_SETTLE_CU_BASE + Math.ceil(entryCount) * BATCH_SETTLE_CU_PER_ENTRY;
102
+ return Math.min(raw, BATCH_SETTLE_CU_MAX);
103
+ }
104
+ // ═══════════════════════════════════════════════════════════════════
105
+ // Presets
106
+ // ═══════════════════════════════════════════════════════════════════
107
+ /**
108
+ * Recommended preset for fast x402 settlements.
109
+ * Priority fee 5000 µL, 100k CU, skip preflight, confirmed commitment.
110
+ *
111
+ * @since v0.6.2
112
+ */
113
+ export const FAST_SETTLE_OPTIONS = Object.freeze({
114
+ priorityFeeMicroLamports: DEFAULT_SETTLE_PRIORITY_FEE,
115
+ computeUnits: DEFAULT_SETTLE_COMPUTE_UNITS,
116
+ skipPreflight: true,
117
+ commitment: "confirmed",
118
+ });
119
+ /**
120
+ * Recommended preset for fast batch settlements.
121
+ * Priority fee 5000 µL, 300k CU, skip preflight, confirmed commitment.
122
+ *
123
+ * @since v0.6.2
124
+ */
125
+ export const FAST_BATCH_SETTLE_OPTIONS = Object.freeze({
126
+ priorityFeeMicroLamports: DEFAULT_SETTLE_PRIORITY_FEE,
127
+ computeUnits: DEFAULT_BATCH_SETTLE_COMPUTE_UNITS,
128
+ skipPreflight: true,
129
+ commitment: "confirmed",
130
+ });
131
+ // ═══════════════════════════════════════════════════════════════════
132
+ // Builder
133
+ // ═══════════════════════════════════════════════════════════════════
134
+ /**
135
+ * @name buildPriorityFeeIxs
136
+ * @description Build compute budget instructions for priority fee transactions.
137
+ *
138
+ * Returns an array of 0–2 `TransactionInstruction`s:
139
+ * - `SetComputeUnitPrice` (if `priorityFeeMicroLamports > 0`)
140
+ * - `SetComputeUnitLimit` (if `computeUnits` provided)
141
+ *
142
+ * The returned array is designed to be passed directly to
143
+ * Anchor's `.preInstructions()` builder method.
144
+ *
145
+ * @param config - Priority fee configuration.
146
+ * @returns Array of compute budget instructions (may be empty).
147
+ *
148
+ * @category Utils
149
+ * @since v0.6.2
150
+ *
151
+ * @example
152
+ * ```ts
153
+ * const ixs = buildPriorityFeeIxs({
154
+ * priorityFeeMicroLamports: 5000,
155
+ * computeUnits: 100_000,
156
+ * });
157
+ *
158
+ * await program.methods
159
+ * .settleCalls(calls, hash)
160
+ * .accounts({ ... })
161
+ * .preInstructions(ixs)
162
+ * .rpc({ skipPreflight: true });
163
+ * ```
164
+ */
165
+ export function buildPriorityFeeIxs(config) {
166
+ if (!config)
167
+ return [];
168
+ const ixs = [];
169
+ const fee = config.priorityFeeMicroLamports ?? 0;
170
+ if (fee > 0) {
171
+ ixs.push(ComputeBudgetProgram.setComputeUnitPrice({
172
+ microLamports: fee,
173
+ }));
174
+ }
175
+ const cu = config.computeUnits;
176
+ if (cu !== undefined && cu > 0) {
177
+ ixs.push(ComputeBudgetProgram.setComputeUnitLimit({
178
+ units: cu,
179
+ }));
180
+ }
181
+ return ixs;
182
+ }
183
+ /**
184
+ * @name buildRpcOptions
185
+ * @description Build Anchor `.rpc()` options from {@link SettleOptions}.
186
+ *
187
+ * @param opts - Settle options.
188
+ * @returns Options object suitable for Anchor `.rpc(opts)`.
189
+ *
190
+ * @category Utils
191
+ * @since v0.6.2
192
+ * @internal
193
+ */
194
+ export function buildRpcOptions(opts) {
195
+ if (!opts)
196
+ return undefined;
197
+ const rpcOpts = {};
198
+ if (opts.skipPreflight !== undefined) {
199
+ rpcOpts.skipPreflight = opts.skipPreflight;
200
+ }
201
+ if (opts.commitment !== undefined) {
202
+ rpcOpts.commitment = opts.commitment;
203
+ }
204
+ if (opts.maxRetries !== undefined) {
205
+ rpcOpts.maxRetries = opts.maxRetries;
206
+ }
207
+ return Object.keys(rpcOpts).length > 0 ? rpcOpts : undefined;
208
+ }
209
+ //# sourceMappingURL=priority-fee.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priority-fee.js","sourceRoot":"","sources":["../../../src/utils/priority-fee.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * @module utils/rpc-strategy
3
+ * @description Dual-connection RPC strategy and idempotent ATA creation.
4
+ *
5
+ * Solves two interoperability problems:
6
+ *
7
+ * 1. **WebSocket 400 loop**: Some authenticated RPCs reject WebSocket
8
+ * connections for SPL token operations. This module exposes a
9
+ * dual-connection strategy: primary RPC for SAP program calls,
10
+ * fallback public RPC for token operations.
11
+ *
12
+ * 2. **Idempotent ATA creation**: Wraps `getOrCreateAssociatedTokenAccount`
13
+ * with retries so "account already exists" doesn't surface as a
14
+ * hard error.
15
+ *
16
+ * @category Utils
17
+ * @since v0.6.0
18
+ */
19
+ import { Connection, type Commitment, PublicKey, type TransactionSignature } from "@solana/web3.js";
20
+ /**
21
+ * @interface RpcConfig
22
+ * @description Configuration for dual-connection RPC strategy.
23
+ * @category Utils
24
+ * @since v0.6.0
25
+ */
26
+ export interface RpcConfig {
27
+ /** Primary RPC URL (for SAP program calls). */
28
+ readonly primaryUrl: string;
29
+ /** Fallback RPC URL (for SPL token ops, public RPCs). */
30
+ readonly fallbackUrl?: string;
31
+ /** Commitment level. */
32
+ readonly commitment?: Commitment;
33
+ }
34
+ /**
35
+ * @interface DualConnection
36
+ * @description Dual RPC connections: primary for SAP, fallback for tokens.
37
+ * @category Utils
38
+ * @since v0.6.0
39
+ */
40
+ export interface DualConnection {
41
+ /** Primary connection for SAP program calls. */
42
+ readonly primary: Connection;
43
+ /** Fallback connection for SPL token operations. */
44
+ readonly fallback: Connection;
45
+ }
46
+ /**
47
+ * @name getRpcUrl
48
+ * @description Get the primary RPC URL from environment or config.
49
+ *
50
+ * Resolution order:
51
+ * 1. Explicit `config.primaryUrl`
52
+ * 2. `SOLANA_RPC_URL` env var
53
+ * 3. Cluster-appropriate public RPC
54
+ *
55
+ * @param config - Optional RPC configuration.
56
+ * @param cluster - Cluster hint (defaults to "mainnet-beta").
57
+ * @returns The resolved primary RPC URL.
58
+ *
59
+ * @category Utils
60
+ * @since v0.6.0
61
+ */
62
+ export declare function getRpcUrl(config?: Partial<RpcConfig>, cluster?: string): string;
63
+ /**
64
+ * @name getFallbackRpcUrl
65
+ * @description Get the fallback RPC URL for SPL token operations.
66
+ *
67
+ * This avoids the WebSocket-400 loop when the primary RPC is
68
+ * an authenticated endpoint that rejects token-related WebSocket
69
+ * subscriptions.
70
+ *
71
+ * @param config - Optional RPC configuration.
72
+ * @param cluster - Cluster hint (defaults to "mainnet-beta").
73
+ * @returns The resolved fallback RPC URL.
74
+ *
75
+ * @category Utils
76
+ * @since v0.6.0
77
+ */
78
+ export declare function getFallbackRpcUrl(config?: Partial<RpcConfig>, cluster?: string): string;
79
+ /**
80
+ * @name createDualConnection
81
+ * @description Create a dual-connection pair: primary for SAP program calls,
82
+ * fallback for SPL token operations.
83
+ *
84
+ * @param config - RPC configuration.
85
+ * @param cluster - Cluster hint.
86
+ * @returns A {@link DualConnection} with both connections.
87
+ *
88
+ * @category Utils
89
+ * @since v0.6.0
90
+ *
91
+ * @example
92
+ * ```ts
93
+ * const { primary, fallback } = createDualConnection({
94
+ * primaryUrl: "https://my-rpc.example.com",
95
+ * }, "mainnet-beta");
96
+ *
97
+ * // Use primary for SAP calls
98
+ * const provider = new AnchorProvider(primary, wallet, {});
99
+ *
100
+ * // Use fallback for SPL token account creation
101
+ * const ata = await getOrCreateATA(fallback, mint, owner);
102
+ * ```
103
+ */
104
+ export declare function createDualConnection(config: Partial<RpcConfig>, cluster?: string): DualConnection;
105
+ /**
106
+ * @interface AtaResult
107
+ * @description Result of idempotent ATA creation attempt.
108
+ * @category Utils
109
+ * @since v0.6.0
110
+ */
111
+ export interface AtaResult {
112
+ /** The ATA public key (exists or newly created). */
113
+ readonly address: PublicKey;
114
+ /** Whether the ATA already existed. */
115
+ readonly existed: boolean;
116
+ /** Transaction signature (only if newly created). */
117
+ readonly txSignature?: TransactionSignature;
118
+ }
119
+ /**
120
+ * @name findATA
121
+ * @description Derive the Associated Token Account address.
122
+ * Uses the standard ATA PDA derivation without importing the full
123
+ * `@solana/spl-token` package.
124
+ *
125
+ * @param owner - The token account owner.
126
+ * @param mint - The token mint.
127
+ * @param programId - Token program ID (defaults to TOKEN_PROGRAM_ID).
128
+ * @returns The derived ATA public key.
129
+ *
130
+ * @category Utils
131
+ * @since v0.6.0
132
+ */
133
+ export declare function findATA(owner: PublicKey, mint: PublicKey, programId?: PublicKey): PublicKey;
134
+ /**
135
+ * @name classifyAnchorError
136
+ * @description Convert an Anchor error code into a friendly, actionable message.
137
+ *
138
+ * @param errorCode - The numeric Anchor error code.
139
+ * @returns A human-readable error message, or a generic message for unknown codes.
140
+ *
141
+ * @category Utils
142
+ * @since v0.6.0
143
+ *
144
+ * @example
145
+ * ```ts
146
+ * try {
147
+ * await client.escrow.create(...);
148
+ * } catch (err) {
149
+ * const code = extractAnchorErrorCode(err);
150
+ * if (code !== null) {
151
+ * console.error(classifyAnchorError(code));
152
+ * }
153
+ * }
154
+ * ```
155
+ */
156
+ export declare function classifyAnchorError(errorCode: number): string;
157
+ /**
158
+ * @name extractAnchorErrorCode
159
+ * @description Attempt to extract an Anchor error code from an Error object.
160
+ *
161
+ * Anchor errors typically have the structure `{ code: number, msg: string }`.
162
+ * This function handles both the direct `error.code` pattern and the
163
+ * `error.error.errorCode.number` nested pattern.
164
+ *
165
+ * @param err - The caught error object.
166
+ * @returns The numeric error code, or `null` if not an Anchor error.
167
+ *
168
+ * @category Utils
169
+ * @since v0.6.0
170
+ */
171
+ export declare function extractAnchorErrorCode(err: unknown): number | null;
172
+ //# sourceMappingURL=rpc-strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-strategy.d.ts","sourceRoot":"","sources":["../../../src/utils/rpc-strategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACL,UAAU,EACV,KAAK,UAAU,EACf,SAAS,EACT,KAAK,oBAAoB,EAC1B,MAAM,iBAAiB,CAAC;AAMzB;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,yDAAyD;IACzD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,wBAAwB;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;CAC/B;AAiBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CACvB,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EAC3B,OAAO,GAAE,MAAuB,GAC/B,MAAM,CASR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EAC3B,OAAO,GAAE,MAAuB,GAC/B,MAAM,CAWR;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,EAC1B,OAAO,GAAE,MAAuB,GAC/B,cAAc,CAShB;AAMD;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,qDAAqD;IACrD,QAAQ,CAAC,WAAW,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,EACf,SAAS,GAAE,SAAwE,GAClF,SAAS,CAUX;AAiCD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAyBlE"}
@@ -0,0 +1,231 @@
1
+ /**
2
+ * @module utils/rpc-strategy
3
+ * @description Dual-connection RPC strategy and idempotent ATA creation.
4
+ *
5
+ * Solves two interoperability problems:
6
+ *
7
+ * 1. **WebSocket 400 loop**: Some authenticated RPCs reject WebSocket
8
+ * connections for SPL token operations. This module exposes a
9
+ * dual-connection strategy: primary RPC for SAP program calls,
10
+ * fallback public RPC for token operations.
11
+ *
12
+ * 2. **Idempotent ATA creation**: Wraps `getOrCreateAssociatedTokenAccount`
13
+ * with retries so "account already exists" doesn't surface as a
14
+ * hard error.
15
+ *
16
+ * @category Utils
17
+ * @since v0.6.0
18
+ */
19
+ import { Connection, PublicKey, } from "@solana/web3.js";
20
+ // ═══════════════════════════════════════════════════════════════════
21
+ // Default Public RPCs
22
+ // ═══════════════════════════════════════════════════════════════════
23
+ /** Well-known public fallback RPCs by cluster. */
24
+ const PUBLIC_RPCS = {
25
+ "mainnet-beta": "https://api.mainnet-beta.solana.com",
26
+ devnet: "https://api.devnet.solana.com",
27
+ localnet: "http://localhost:8899",
28
+ };
29
+ // ═══════════════════════════════════════════════════════════════════
30
+ // Public API
31
+ // ═══════════════════════════════════════════════════════════════════
32
+ /**
33
+ * @name getRpcUrl
34
+ * @description Get the primary RPC URL from environment or config.
35
+ *
36
+ * Resolution order:
37
+ * 1. Explicit `config.primaryUrl`
38
+ * 2. `SOLANA_RPC_URL` env var
39
+ * 3. Cluster-appropriate public RPC
40
+ *
41
+ * @param config - Optional RPC configuration.
42
+ * @param cluster - Cluster hint (defaults to "mainnet-beta").
43
+ * @returns The resolved primary RPC URL.
44
+ *
45
+ * @category Utils
46
+ * @since v0.6.0
47
+ */
48
+ export function getRpcUrl(config, cluster = "mainnet-beta") {
49
+ if (config?.primaryUrl)
50
+ return config.primaryUrl;
51
+ // Environment variable
52
+ const envUrl = typeof process !== "undefined" ? process.env?.SOLANA_RPC_URL : undefined;
53
+ if (envUrl)
54
+ return envUrl;
55
+ return PUBLIC_RPCS[cluster] ?? PUBLIC_RPCS["mainnet-beta"];
56
+ }
57
+ /**
58
+ * @name getFallbackRpcUrl
59
+ * @description Get the fallback RPC URL for SPL token operations.
60
+ *
61
+ * This avoids the WebSocket-400 loop when the primary RPC is
62
+ * an authenticated endpoint that rejects token-related WebSocket
63
+ * subscriptions.
64
+ *
65
+ * @param config - Optional RPC configuration.
66
+ * @param cluster - Cluster hint (defaults to "mainnet-beta").
67
+ * @returns The resolved fallback RPC URL.
68
+ *
69
+ * @category Utils
70
+ * @since v0.6.0
71
+ */
72
+ export function getFallbackRpcUrl(config, cluster = "mainnet-beta") {
73
+ if (config?.fallbackUrl)
74
+ return config.fallbackUrl;
75
+ // Env fallback
76
+ const envUrl = typeof process !== "undefined"
77
+ ? process.env?.SOLANA_FALLBACK_RPC_URL
78
+ : undefined;
79
+ if (envUrl)
80
+ return envUrl;
81
+ return PUBLIC_RPCS[cluster] ?? PUBLIC_RPCS["mainnet-beta"];
82
+ }
83
+ /**
84
+ * @name createDualConnection
85
+ * @description Create a dual-connection pair: primary for SAP program calls,
86
+ * fallback for SPL token operations.
87
+ *
88
+ * @param config - RPC configuration.
89
+ * @param cluster - Cluster hint.
90
+ * @returns A {@link DualConnection} with both connections.
91
+ *
92
+ * @category Utils
93
+ * @since v0.6.0
94
+ *
95
+ * @example
96
+ * ```ts
97
+ * const { primary, fallback } = createDualConnection({
98
+ * primaryUrl: "https://my-rpc.example.com",
99
+ * }, "mainnet-beta");
100
+ *
101
+ * // Use primary for SAP calls
102
+ * const provider = new AnchorProvider(primary, wallet, {});
103
+ *
104
+ * // Use fallback for SPL token account creation
105
+ * const ata = await getOrCreateATA(fallback, mint, owner);
106
+ * ```
107
+ */
108
+ export function createDualConnection(config, cluster = "mainnet-beta") {
109
+ const commitment = config.commitment ?? "confirmed";
110
+ const primaryUrl = getRpcUrl(config, cluster);
111
+ const fallbackUrl = getFallbackRpcUrl(config, cluster);
112
+ return {
113
+ primary: new Connection(primaryUrl, { commitment }),
114
+ fallback: new Connection(fallbackUrl, { commitment }),
115
+ };
116
+ }
117
+ /**
118
+ * @name findATA
119
+ * @description Derive the Associated Token Account address.
120
+ * Uses the standard ATA PDA derivation without importing the full
121
+ * `@solana/spl-token` package.
122
+ *
123
+ * @param owner - The token account owner.
124
+ * @param mint - The token mint.
125
+ * @param programId - Token program ID (defaults to TOKEN_PROGRAM_ID).
126
+ * @returns The derived ATA public key.
127
+ *
128
+ * @category Utils
129
+ * @since v0.6.0
130
+ */
131
+ export function findATA(owner, mint, programId = new PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA")) {
132
+ const ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");
133
+ const [ata] = PublicKey.findProgramAddressSync([owner.toBuffer(), programId.toBuffer(), mint.toBuffer()], ASSOCIATED_TOKEN_PROGRAM_ID);
134
+ return ata;
135
+ }
136
+ // ═══════════════════════════════════════════════════════════════════
137
+ // Error Classification
138
+ // ═══════════════════════════════════════════════════════════════════
139
+ /**
140
+ * Anchor error code to friendly message mapping.
141
+ * Converts cryptic Anchor errors into actionable messages.
142
+ */
143
+ const ANCHOR_ERROR_MESSAGES = {
144
+ 6000: "Agent already registered for this wallet",
145
+ 6001: "Agent not found — register first",
146
+ 6002: "Name exceeds maximum length (64 bytes)",
147
+ 6003: "Description exceeds maximum length (256 bytes)",
148
+ 6004: "Too many capabilities (max 10)",
149
+ 6005: "Too many pricing tiers (max 5)",
150
+ 6006: "Too many protocols (max 5)",
151
+ 6007: "Feedback score out of range (0-1000)",
152
+ 6008: "Unauthorized — only the agent owner can perform this action",
153
+ 6009: "Escrow expired",
154
+ 6010: "Insufficient escrow balance",
155
+ 6011: "Max calls exceeded",
156
+ 6012: "Invalid settlement — calls must be > 0",
157
+ 6013: "Escrow not empty — withdraw balance before closing",
158
+ 6014: "Invalid token program — make sure you passed TOKEN_PROGRAM_ID as the 3rd remaining account",
159
+ 6015: "Vault already initialized",
160
+ 6016: "Session already exists",
161
+ 6017: "Session closed — cannot write to closed session",
162
+ 6018: "Data exceeds maximum write size (750 bytes)",
163
+ 6019: "Ring buffer overflow — seal before writing more",
164
+ };
165
+ /**
166
+ * @name classifyAnchorError
167
+ * @description Convert an Anchor error code into a friendly, actionable message.
168
+ *
169
+ * @param errorCode - The numeric Anchor error code.
170
+ * @returns A human-readable error message, or a generic message for unknown codes.
171
+ *
172
+ * @category Utils
173
+ * @since v0.6.0
174
+ *
175
+ * @example
176
+ * ```ts
177
+ * try {
178
+ * await client.escrow.create(...);
179
+ * } catch (err) {
180
+ * const code = extractAnchorErrorCode(err);
181
+ * if (code !== null) {
182
+ * console.error(classifyAnchorError(code));
183
+ * }
184
+ * }
185
+ * ```
186
+ */
187
+ export function classifyAnchorError(errorCode) {
188
+ return (ANCHOR_ERROR_MESSAGES[errorCode] ??
189
+ `Unknown SAP program error (code ${errorCode}). Check the IDL for details.`);
190
+ }
191
+ /**
192
+ * @name extractAnchorErrorCode
193
+ * @description Attempt to extract an Anchor error code from an Error object.
194
+ *
195
+ * Anchor errors typically have the structure `{ code: number, msg: string }`.
196
+ * This function handles both the direct `error.code` pattern and the
197
+ * `error.error.errorCode.number` nested pattern.
198
+ *
199
+ * @param err - The caught error object.
200
+ * @returns The numeric error code, or `null` if not an Anchor error.
201
+ *
202
+ * @category Utils
203
+ * @since v0.6.0
204
+ */
205
+ export function extractAnchorErrorCode(err) {
206
+ if (err == null || typeof err !== "object")
207
+ return null;
208
+ // Direct code property
209
+ const direct = err.code;
210
+ if (typeof direct === "number")
211
+ return direct;
212
+ // Nested Anchor format: error.error.errorCode.number
213
+ const nested = err.error;
214
+ if (nested && typeof nested === "object") {
215
+ const errorCode = nested.errorCode;
216
+ if (errorCode && typeof errorCode === "object") {
217
+ const num = errorCode.number;
218
+ if (typeof num === "number")
219
+ return num;
220
+ }
221
+ }
222
+ // AnchorError pattern: { logs: [...], error: { errorCode: { number } } }
223
+ const msg = err.message;
224
+ if (typeof msg === "string") {
225
+ const match = msg.match(/custom program error:\s*0x([0-9a-fA-F]+)/);
226
+ if (match?.[1])
227
+ return parseInt(match[1], 16);
228
+ }
229
+ return null;
230
+ }
231
+ //# sourceMappingURL=rpc-strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-strategy.js","sourceRoot":"","sources":["../../../src/utils/rpc-strategy.ts"],"names":[],"mappings":"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"}