@oobe-protocol-labs/synapse-sap-sdk 0.1.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 (315) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +882 -0
  3. package/dist/cjs/constants/index.js +43 -0
  4. package/dist/cjs/constants/index.js.map +1 -0
  5. package/dist/cjs/constants/limits.js +161 -0
  6. package/dist/cjs/constants/limits.js.map +1 -0
  7. package/dist/cjs/constants/programs.js +78 -0
  8. package/dist/cjs/constants/programs.js.map +1 -0
  9. package/dist/cjs/constants/seeds.js +57 -0
  10. package/dist/cjs/constants/seeds.js.map +1 -0
  11. package/dist/cjs/core/client.js +391 -0
  12. package/dist/cjs/core/client.js.map +1 -0
  13. package/dist/cjs/core/connection.js +319 -0
  14. package/dist/cjs/core/connection.js.map +1 -0
  15. package/dist/cjs/core/index.js +24 -0
  16. package/dist/cjs/core/index.js.map +1 -0
  17. package/dist/cjs/errors/index.js +334 -0
  18. package/dist/cjs/errors/index.js.map +1 -0
  19. package/dist/cjs/events/index.js +136 -0
  20. package/dist/cjs/events/index.js.map +1 -0
  21. package/dist/cjs/idl/index.js +63 -0
  22. package/dist/cjs/idl/index.js.map +1 -0
  23. package/dist/cjs/idl/synapse_agent_sap.json +9710 -0
  24. package/dist/cjs/index.js +147 -0
  25. package/dist/cjs/index.js.map +1 -0
  26. package/dist/cjs/modules/agent.js +272 -0
  27. package/dist/cjs/modules/agent.js.map +1 -0
  28. package/dist/cjs/modules/attestation.js +147 -0
  29. package/dist/cjs/modules/attestation.js.map +1 -0
  30. package/dist/cjs/modules/base.js +128 -0
  31. package/dist/cjs/modules/base.js.map +1 -0
  32. package/dist/cjs/modules/escrow.js +246 -0
  33. package/dist/cjs/modules/escrow.js.map +1 -0
  34. package/dist/cjs/modules/feedback.js +166 -0
  35. package/dist/cjs/modules/feedback.js.map +1 -0
  36. package/dist/cjs/modules/index.js +35 -0
  37. package/dist/cjs/modules/index.js.map +1 -0
  38. package/dist/cjs/modules/indexing.js +375 -0
  39. package/dist/cjs/modules/indexing.js.map +1 -0
  40. package/dist/cjs/modules/ledger.js +234 -0
  41. package/dist/cjs/modules/ledger.js.map +1 -0
  42. package/dist/cjs/modules/tools.js +319 -0
  43. package/dist/cjs/modules/tools.js.map +1 -0
  44. package/dist/cjs/modules/vault.js +410 -0
  45. package/dist/cjs/modules/vault.js.map +1 -0
  46. package/dist/cjs/pda/index.js +377 -0
  47. package/dist/cjs/pda/index.js.map +1 -0
  48. package/dist/cjs/plugin/index.js +934 -0
  49. package/dist/cjs/plugin/index.js.map +1 -0
  50. package/dist/cjs/plugin/protocols.js +282 -0
  51. package/dist/cjs/plugin/protocols.js.map +1 -0
  52. package/dist/cjs/plugin/schemas.js +831 -0
  53. package/dist/cjs/plugin/schemas.js.map +1 -0
  54. package/dist/cjs/postgres/adapter.js +715 -0
  55. package/dist/cjs/postgres/adapter.js.map +1 -0
  56. package/dist/cjs/postgres/index.js +50 -0
  57. package/dist/cjs/postgres/index.js.map +1 -0
  58. package/dist/cjs/postgres/serializers.js +381 -0
  59. package/dist/cjs/postgres/serializers.js.map +1 -0
  60. package/dist/cjs/postgres/sync.js +221 -0
  61. package/dist/cjs/postgres/sync.js.map +1 -0
  62. package/dist/cjs/postgres/types.js +44 -0
  63. package/dist/cjs/postgres/types.js.map +1 -0
  64. package/dist/cjs/registries/builder.js +414 -0
  65. package/dist/cjs/registries/builder.js.map +1 -0
  66. package/dist/cjs/registries/discovery.js +362 -0
  67. package/dist/cjs/registries/discovery.js.map +1 -0
  68. package/dist/cjs/registries/index.js +51 -0
  69. package/dist/cjs/registries/index.js.map +1 -0
  70. package/dist/cjs/registries/session.js +433 -0
  71. package/dist/cjs/registries/session.js.map +1 -0
  72. package/dist/cjs/registries/x402.js +577 -0
  73. package/dist/cjs/registries/x402.js.map +1 -0
  74. package/dist/cjs/types/accounts.js +13 -0
  75. package/dist/cjs/types/accounts.js.map +1 -0
  76. package/dist/cjs/types/common.js +13 -0
  77. package/dist/cjs/types/common.js.map +1 -0
  78. package/dist/cjs/types/enums.js +174 -0
  79. package/dist/cjs/types/enums.js.map +1 -0
  80. package/dist/cjs/types/index.js +36 -0
  81. package/dist/cjs/types/index.js.map +1 -0
  82. package/dist/cjs/types/instructions.js +92 -0
  83. package/dist/cjs/types/instructions.js.map +1 -0
  84. package/dist/cjs/utils/hash.js +58 -0
  85. package/dist/cjs/utils/hash.js.map +1 -0
  86. package/dist/cjs/utils/index.js +27 -0
  87. package/dist/cjs/utils/index.js.map +1 -0
  88. package/dist/cjs/utils/serialization.js +105 -0
  89. package/dist/cjs/utils/serialization.js.map +1 -0
  90. package/dist/cjs/utils/validation.js +36 -0
  91. package/dist/cjs/utils/validation.js.map +1 -0
  92. package/dist/esm/constants/index.js +29 -0
  93. package/dist/esm/constants/index.js.map +1 -0
  94. package/dist/esm/constants/limits.js +158 -0
  95. package/dist/esm/constants/limits.js.map +1 -0
  96. package/dist/esm/constants/programs.js +75 -0
  97. package/dist/esm/constants/programs.js.map +1 -0
  98. package/dist/esm/constants/seeds.js +54 -0
  99. package/dist/esm/constants/seeds.js.map +1 -0
  100. package/dist/esm/core/client.js +384 -0
  101. package/dist/esm/core/client.js.map +1 -0
  102. package/dist/esm/core/connection.js +315 -0
  103. package/dist/esm/core/connection.js.map +1 -0
  104. package/dist/esm/core/index.js +19 -0
  105. package/dist/esm/core/index.js.map +1 -0
  106. package/dist/esm/errors/index.js +325 -0
  107. package/dist/esm/errors/index.js.map +1 -0
  108. package/dist/esm/events/index.js +132 -0
  109. package/dist/esm/events/index.js.map +1 -0
  110. package/dist/esm/idl/index.js +57 -0
  111. package/dist/esm/idl/index.js.map +1 -0
  112. package/dist/esm/idl/synapse_agent_sap.json +9710 -0
  113. package/dist/esm/index.js +70 -0
  114. package/dist/esm/index.js.map +1 -0
  115. package/dist/esm/modules/agent.js +268 -0
  116. package/dist/esm/modules/agent.js.map +1 -0
  117. package/dist/esm/modules/attestation.js +143 -0
  118. package/dist/esm/modules/attestation.js.map +1 -0
  119. package/dist/esm/modules/base.js +124 -0
  120. package/dist/esm/modules/base.js.map +1 -0
  121. package/dist/esm/modules/escrow.js +242 -0
  122. package/dist/esm/modules/escrow.js.map +1 -0
  123. package/dist/esm/modules/feedback.js +162 -0
  124. package/dist/esm/modules/feedback.js.map +1 -0
  125. package/dist/esm/modules/index.js +23 -0
  126. package/dist/esm/modules/index.js.map +1 -0
  127. package/dist/esm/modules/indexing.js +371 -0
  128. package/dist/esm/modules/indexing.js.map +1 -0
  129. package/dist/esm/modules/ledger.js +230 -0
  130. package/dist/esm/modules/ledger.js.map +1 -0
  131. package/dist/esm/modules/tools.js +315 -0
  132. package/dist/esm/modules/tools.js.map +1 -0
  133. package/dist/esm/modules/vault.js +406 -0
  134. package/dist/esm/modules/vault.js.map +1 -0
  135. package/dist/esm/pda/index.js +357 -0
  136. package/dist/esm/pda/index.js.map +1 -0
  137. package/dist/esm/plugin/index.js +927 -0
  138. package/dist/esm/plugin/index.js.map +1 -0
  139. package/dist/esm/plugin/protocols.js +279 -0
  140. package/dist/esm/plugin/protocols.js.map +1 -0
  141. package/dist/esm/plugin/schemas.js +828 -0
  142. package/dist/esm/plugin/schemas.js.map +1 -0
  143. package/dist/esm/postgres/adapter.js +678 -0
  144. package/dist/esm/postgres/adapter.js.map +1 -0
  145. package/dist/esm/postgres/index.js +27 -0
  146. package/dist/esm/postgres/index.js.map +1 -0
  147. package/dist/esm/postgres/serializers.js +362 -0
  148. package/dist/esm/postgres/serializers.js.map +1 -0
  149. package/dist/esm/postgres/sync.js +217 -0
  150. package/dist/esm/postgres/sync.js.map +1 -0
  151. package/dist/esm/postgres/types.js +41 -0
  152. package/dist/esm/postgres/types.js.map +1 -0
  153. package/dist/esm/registries/builder.js +410 -0
  154. package/dist/esm/registries/builder.js.map +1 -0
  155. package/dist/esm/registries/discovery.js +358 -0
  156. package/dist/esm/registries/discovery.js.map +1 -0
  157. package/dist/esm/registries/index.js +44 -0
  158. package/dist/esm/registries/index.js.map +1 -0
  159. package/dist/esm/registries/session.js +429 -0
  160. package/dist/esm/registries/session.js.map +1 -0
  161. package/dist/esm/registries/x402.js +573 -0
  162. package/dist/esm/registries/x402.js.map +1 -0
  163. package/dist/esm/types/accounts.js +12 -0
  164. package/dist/esm/types/accounts.js.map +1 -0
  165. package/dist/esm/types/common.js +12 -0
  166. package/dist/esm/types/common.js.map +1 -0
  167. package/dist/esm/types/enums.js +171 -0
  168. package/dist/esm/types/enums.js.map +1 -0
  169. package/dist/esm/types/index.js +25 -0
  170. package/dist/esm/types/index.js.map +1 -0
  171. package/dist/esm/types/instructions.js +89 -0
  172. package/dist/esm/types/instructions.js.map +1 -0
  173. package/dist/esm/utils/hash.js +53 -0
  174. package/dist/esm/utils/hash.js.map +1 -0
  175. package/dist/esm/utils/index.js +19 -0
  176. package/dist/esm/utils/index.js.map +1 -0
  177. package/dist/esm/utils/serialization.js +98 -0
  178. package/dist/esm/utils/serialization.js.map +1 -0
  179. package/dist/esm/utils/validation.js +33 -0
  180. package/dist/esm/utils/validation.js.map +1 -0
  181. package/dist/types/constants/index.d.ts +27 -0
  182. package/dist/types/constants/index.d.ts.map +1 -0
  183. package/dist/types/constants/limits.d.ts +149 -0
  184. package/dist/types/constants/limits.d.ts.map +1 -0
  185. package/dist/types/constants/programs.d.ts +69 -0
  186. package/dist/types/constants/programs.d.ts.map +1 -0
  187. package/dist/types/constants/seeds.d.ts +61 -0
  188. package/dist/types/constants/seeds.d.ts.map +1 -0
  189. package/dist/types/core/client.d.ts +323 -0
  190. package/dist/types/core/client.d.ts.map +1 -0
  191. package/dist/types/core/connection.d.ts +279 -0
  192. package/dist/types/core/connection.d.ts.map +1 -0
  193. package/dist/types/core/index.d.ts +20 -0
  194. package/dist/types/core/index.d.ts.map +1 -0
  195. package/dist/types/errors/index.d.ts +276 -0
  196. package/dist/types/errors/index.d.ts.map +1 -0
  197. package/dist/types/events/index.d.ts +248 -0
  198. package/dist/types/events/index.d.ts.map +1 -0
  199. package/dist/types/idl/index.d.ts +70 -0
  200. package/dist/types/idl/index.d.ts.map +1 -0
  201. package/dist/types/index.d.ts +68 -0
  202. package/dist/types/index.d.ts.map +1 -0
  203. package/dist/types/modules/agent.d.ts +166 -0
  204. package/dist/types/modules/agent.d.ts.map +1 -0
  205. package/dist/types/modules/attestation.d.ts +96 -0
  206. package/dist/types/modules/attestation.d.ts.map +1 -0
  207. package/dist/types/modules/base.d.ts +126 -0
  208. package/dist/types/modules/base.d.ts.map +1 -0
  209. package/dist/types/modules/escrow.d.ts +151 -0
  210. package/dist/types/modules/escrow.d.ts.map +1 -0
  211. package/dist/types/modules/feedback.d.ts +105 -0
  212. package/dist/types/modules/feedback.d.ts.map +1 -0
  213. package/dist/types/modules/index.d.ts +24 -0
  214. package/dist/types/modules/index.d.ts.map +1 -0
  215. package/dist/types/modules/indexing.d.ts +200 -0
  216. package/dist/types/modules/indexing.d.ts.map +1 -0
  217. package/dist/types/modules/ledger.d.ts +150 -0
  218. package/dist/types/modules/ledger.d.ts.map +1 -0
  219. package/dist/types/modules/tools.d.ts +182 -0
  220. package/dist/types/modules/tools.d.ts.map +1 -0
  221. package/dist/types/modules/vault.d.ts +240 -0
  222. package/dist/types/modules/vault.d.ts.map +1 -0
  223. package/dist/types/pda/index.d.ts +296 -0
  224. package/dist/types/pda/index.d.ts.map +1 -0
  225. package/dist/types/plugin/index.d.ts +171 -0
  226. package/dist/types/plugin/index.d.ts.map +1 -0
  227. package/dist/types/plugin/protocols.d.ts +152 -0
  228. package/dist/types/plugin/protocols.d.ts.map +1 -0
  229. package/dist/types/plugin/schemas.d.ts +823 -0
  230. package/dist/types/plugin/schemas.d.ts.map +1 -0
  231. package/dist/types/postgres/adapter.d.ts +355 -0
  232. package/dist/types/postgres/adapter.d.ts.map +1 -0
  233. package/dist/types/postgres/index.d.ts +24 -0
  234. package/dist/types/postgres/index.d.ts.map +1 -0
  235. package/dist/types/postgres/serializers.d.ts +30 -0
  236. package/dist/types/postgres/serializers.d.ts.map +1 -0
  237. package/dist/types/postgres/sync.d.ts +132 -0
  238. package/dist/types/postgres/sync.d.ts.map +1 -0
  239. package/dist/types/postgres/types.d.ts +167 -0
  240. package/dist/types/postgres/types.d.ts.map +1 -0
  241. package/dist/types/registries/builder.d.ts +340 -0
  242. package/dist/types/registries/builder.d.ts.map +1 -0
  243. package/dist/types/registries/discovery.d.ts +333 -0
  244. package/dist/types/registries/discovery.d.ts.map +1 -0
  245. package/dist/types/registries/index.d.ts +48 -0
  246. package/dist/types/registries/index.d.ts.map +1 -0
  247. package/dist/types/registries/session.d.ts +323 -0
  248. package/dist/types/registries/session.d.ts.map +1 -0
  249. package/dist/types/registries/x402.d.ts +463 -0
  250. package/dist/types/registries/x402.d.ts.map +1 -0
  251. package/dist/types/types/accounts.d.ts +565 -0
  252. package/dist/types/types/accounts.d.ts.map +1 -0
  253. package/dist/types/types/common.d.ts +166 -0
  254. package/dist/types/types/common.d.ts.map +1 -0
  255. package/dist/types/types/enums.d.ts +238 -0
  256. package/dist/types/types/enums.d.ts.map +1 -0
  257. package/dist/types/types/index.d.ts +28 -0
  258. package/dist/types/types/index.d.ts.map +1 -0
  259. package/dist/types/types/instructions.d.ts +366 -0
  260. package/dist/types/types/instructions.d.ts.map +1 -0
  261. package/dist/types/utils/hash.d.ts +48 -0
  262. package/dist/types/utils/hash.d.ts.map +1 -0
  263. package/dist/types/utils/index.d.ts +19 -0
  264. package/dist/types/utils/index.d.ts.map +1 -0
  265. package/dist/types/utils/serialization.d.ts +69 -0
  266. package/dist/types/utils/serialization.d.ts.map +1 -0
  267. package/dist/types/utils/validation.d.ts +29 -0
  268. package/dist/types/utils/validation.d.ts.map +1 -0
  269. package/package.json +178 -0
  270. package/src/constants/index.ts +44 -0
  271. package/src/constants/limits.ts +165 -0
  272. package/src/constants/programs.ts +83 -0
  273. package/src/constants/seeds.ts +66 -0
  274. package/src/core/client.ts +416 -0
  275. package/src/core/connection.ts +409 -0
  276. package/src/core/index.ts +20 -0
  277. package/src/errors/index.ts +346 -0
  278. package/src/events/index.ts +335 -0
  279. package/src/idl/index.ts +76 -0
  280. package/src/idl/synapse_agent_sap.json +9710 -0
  281. package/src/index.ts +253 -0
  282. package/src/modules/agent.ts +319 -0
  283. package/src/modules/attestation.ts +168 -0
  284. package/src/modules/base.ts +158 -0
  285. package/src/modules/escrow.ts +308 -0
  286. package/src/modules/feedback.ts +186 -0
  287. package/src/modules/index.ts +24 -0
  288. package/src/modules/indexing.ts +444 -0
  289. package/src/modules/ledger.ts +262 -0
  290. package/src/modules/tools.ts +411 -0
  291. package/src/modules/vault.ts +533 -0
  292. package/src/pda/index.ts +512 -0
  293. package/src/plugin/index.ts +1202 -0
  294. package/src/plugin/protocols.ts +404 -0
  295. package/src/plugin/schemas.ts +909 -0
  296. package/src/postgres/adapter.ts +904 -0
  297. package/src/postgres/index.ts +59 -0
  298. package/src/postgres/schema.sql +683 -0
  299. package/src/postgres/serializers.ts +485 -0
  300. package/src/postgres/sync.ts +254 -0
  301. package/src/postgres/types.ts +245 -0
  302. package/src/registries/builder.ts +607 -0
  303. package/src/registries/discovery.ts +572 -0
  304. package/src/registries/index.ts +77 -0
  305. package/src/registries/session.ts +613 -0
  306. package/src/registries/x402.ts +906 -0
  307. package/src/types/accounts.ts +618 -0
  308. package/src/types/common.ts +187 -0
  309. package/src/types/enums.ts +214 -0
  310. package/src/types/index.ts +92 -0
  311. package/src/types/instructions.ts +413 -0
  312. package/src/utils/hash.ts +57 -0
  313. package/src/utils/index.ts +19 -0
  314. package/src/utils/serialization.ts +98 -0
  315. package/src/utils/validation.ts +36 -0
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ /**
3
+ * @module base
4
+ * @description Abstract base class for all SDK modules.
5
+ *
6
+ * Provides shared access to the Anchor program, provider,
7
+ * and typed `fetch` / `fetchNullable` helpers.
8
+ *
9
+ * @category Modules
10
+ * @since v0.1.0
11
+ * @packageDocumentation
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.BaseModule = void 0;
15
+ const anchor_1 = require("@coral-xyz/anchor");
16
+ /**
17
+ * @name BaseModule
18
+ * @description Abstract base module inherited by every domain module in the SDK.
19
+ * Encapsulates the Anchor program reference, provider access, and common
20
+ * helpers for account fetching and BN construction.
21
+ *
22
+ * @abstract
23
+ * @category Modules
24
+ * @since v0.1.0
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * class MyModule extends BaseModule {
29
+ * async doSomething() {
30
+ * const data = await this.fetchAccount<MyData>("myAccount", pda);
31
+ * }
32
+ * }
33
+ * ```
34
+ */
35
+ class BaseModule {
36
+ program;
37
+ /**
38
+ * Create a new module instance.
39
+ *
40
+ * @param program - The Anchor `Program` instance for the SAP IDL.
41
+ * @protected
42
+ */
43
+ constructor(program) {
44
+ this.program = program;
45
+ }
46
+ /**
47
+ * @name methods
48
+ * @description Instruction method namespace — bypasses `noUncheckedIndexedAccess`
49
+ * on `Program<any>` where every property is `T | undefined`.
50
+ * Used internally by subclasses to build and send instructions.
51
+ * @returns The Anchor program `methods` object for chaining instruction builders.
52
+ * @protected
53
+ * @since v0.1.0
54
+ */
55
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
56
+ get methods() {
57
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
58
+ return this.program.methods;
59
+ }
60
+ /**
61
+ * @name provider
62
+ * @description The AnchorProvider from the program, giving access to
63
+ * the connection and wallet for signing transactions.
64
+ * @returns {AnchorProvider} The Anchor provider instance.
65
+ * @protected
66
+ * @since v0.1.0
67
+ */
68
+ get provider() {
69
+ return this.program.provider;
70
+ }
71
+ /**
72
+ * @name walletPubkey
73
+ * @description Convenience accessor for the signer wallet's public key.
74
+ * @returns {PublicKey} The public key of the connected wallet.
75
+ * @protected
76
+ * @since v0.1.0
77
+ */
78
+ get walletPubkey() {
79
+ return this.provider.wallet.publicKey;
80
+ }
81
+ /**
82
+ * @name fetchAccount
83
+ * @description Generic account fetch — deserializes the on-chain account
84
+ * data into the given type `T`, or throws if the account does not exist.
85
+ * @typeParam T - The expected deserialized account data type.
86
+ * @param accountName - The Anchor account discriminator name (e.g. `"agentAccount"`).
87
+ * @param address - The public key of the account to fetch.
88
+ * @returns {Promise<T>} The deserialized account data.
89
+ * @throws Will throw if the account does not exist on-chain.
90
+ * @protected
91
+ * @since v0.1.0
92
+ */
93
+ async fetchAccount(accountName, address) {
94
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
95
+ return this.program.account[accountName].fetch(address);
96
+ }
97
+ /**
98
+ * @name fetchAccountNullable
99
+ * @description Generic nullable account fetch — deserializes the on-chain
100
+ * account data into type `T`, or returns `null` if the account does not exist.
101
+ * @typeParam T - The expected deserialized account data type.
102
+ * @param accountName - The Anchor account discriminator name (e.g. `"agentAccount"`).
103
+ * @param address - The public key of the account to fetch.
104
+ * @returns {Promise<T | null>} The deserialized account data, or `null`.
105
+ * @protected
106
+ * @since v0.1.0
107
+ */
108
+ async fetchAccountNullable(accountName, address) {
109
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
110
+ return this.program.account[accountName].fetchNullable(address);
111
+ }
112
+ /**
113
+ * @name bn
114
+ * @description Create an Anchor `BN` from a number, bigint, or existing BN.
115
+ * Passes through values that are already `BN` instances.
116
+ * @param value - The numeric value to convert.
117
+ * @returns {BN} An Anchor-compatible big number.
118
+ * @protected
119
+ * @since v0.1.0
120
+ */
121
+ bn(value) {
122
+ if (anchor_1.BN.isBN(value))
123
+ return value;
124
+ return new anchor_1.BN(value.toString());
125
+ }
126
+ }
127
+ exports.BaseModule = BaseModule;
128
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/modules/base.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAEH,8CAA0E;AA2B1E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAsB,UAAU;IAOC;IAN/B;;;;;OAKG;IACH,YAA+B,OAAmB;QAAnB,YAAO,GAAP,OAAO,CAAY;IAAG,CAAC;IAEtD;;;;;;;;OAQG;IACH,8DAA8D;IAC9D,IAAc,OAAO;QACnB,+DAA+D;QAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED;;;;;;;OAOG;IACH,IAAc,QAAQ;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,QAA0B,CAAC;IACjD,CAAC;IAED;;;;;;OAMG;IACH,IAAc,YAAY;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;IACxC,CAAC;IAED;;;;;;;;;;;OAWG;IACO,KAAK,CAAC,YAAY,CAC1B,WAAmB,EACnB,OAAkB;QAElB,0GAA0G;QAC1G,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,OAAO,CAAe,CAAC;IACjF,CAAC;IAED;;;;;;;;;;OAUG;IACO,KAAK,CAAC,oBAAoB,CAClC,WAAmB,EACnB,OAAkB;QAElB,0GAA0G;QAC1G,OAAQ,IAAI,CAAC,OAAO,CAAC,OAAe,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,OAAO,CAAsB,CAAC;IAChG,CAAC;IAED;;;;;;;;OAQG;IACO,EAAE,CAAC,KAA2B;QACtC,IAAI,WAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACjC,OAAO,IAAI,WAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClC,CAAC;CACF;AAnGD,gCAmGC"}
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+ /**
3
+ * @module escrow
4
+ * @description x402 escrow settlement layer — create, deposit,
5
+ * settle, withdraw, batch settle, and close escrow accounts.
6
+ *
7
+ * Supports both SOL and SPL token escrows. SPL operations require
8
+ * passing additional `AccountMeta[]` via the `splAccounts` parameter.
9
+ *
10
+ * @category Modules
11
+ * @since v0.1.0
12
+ * @packageDocumentation
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.EscrowModule = void 0;
16
+ const web3_js_1 = require("@solana/web3.js");
17
+ const base_1 = require("./base");
18
+ const pda_1 = require("../pda");
19
+ /**
20
+ * @name EscrowModule
21
+ * @description Manages x402-compatible escrow accounts for agent micropayments.
22
+ * Provides methods to create, fund, settle, withdraw, batch-settle, close,
23
+ * and fetch escrow PDAs on the Solana Agent Protocol.
24
+ *
25
+ * @category Modules
26
+ * @since v0.1.0
27
+ * @extends BaseModule
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * const sap = new SapClient(provider);
32
+ * // Create a SOL escrow for an agent
33
+ * const sig = await sap.escrow.create(agentWallet, {
34
+ * pricePerCall: new BN(1_000_000),
35
+ * maxCalls: new BN(100),
36
+ * initialDeposit: new BN(100_000_000),
37
+ * expiresAt: null,
38
+ * volumeCurve: null,
39
+ * tokenMint: null,
40
+ * tokenDecimals: null,
41
+ * });
42
+ * ```
43
+ */
44
+ class EscrowModule extends base_1.BaseModule {
45
+ // ── PDA helpers ──────────────────────────────────────
46
+ /**
47
+ * @name deriveEscrow
48
+ * @description Derive the `EscrowAccount` PDA for a given agent and depositor.
49
+ * @param agentPda - The agent account PDA.
50
+ * @param depositor - The depositor wallet. Defaults to the connected wallet.
51
+ * @returns A tuple of `[PublicKey, bump]` for the escrow PDA.
52
+ * @see {@link deriveEscrow} from `pda/` module for the underlying derivation.
53
+ * @since v0.1.0
54
+ */
55
+ deriveEscrow(agentPda, depositor) {
56
+ return (0, pda_1.deriveEscrow)(agentPda, depositor ?? this.walletPubkey);
57
+ }
58
+ // ── Instructions ─────────────────────────────────────
59
+ /**
60
+ * @name create
61
+ * @description Create a new escrow for agent micropayments.
62
+ *
63
+ * For **SOL escrow**: pass `tokenMint: null` and leave `splAccounts` empty.
64
+ * For **SPL escrow**: pass `tokenMint`, `tokenDecimals`, and provide
65
+ * `splAccounts` with `[depositorAta, escrowAta, tokenMint, tokenProgram]`.
66
+ *
67
+ * @param agentWallet - The wallet of the agent to pay.
68
+ * @param args - Escrow creation parameters (price, max calls, deposit, expiry, volume curve, token info).
69
+ * @param splAccounts - Remaining accounts for SPL token transfers:
70
+ * `[depositorAta, escrowAta, tokenMint, tokenProgram]`. Defaults to `[]`.
71
+ * @returns {Promise<TransactionSignature>} The transaction signature.
72
+ * @since v0.1.0
73
+ */
74
+ async create(agentWallet, args, splAccounts = []) {
75
+ const [agentPda] = (0, pda_1.deriveAgent)(agentWallet);
76
+ const [escrowPda] = this.deriveEscrow(agentPda);
77
+ const [statsPda] = (0, pda_1.deriveAgentStats)(agentPda);
78
+ return this.methods
79
+ .createEscrow(args.pricePerCall, args.maxCalls, args.initialDeposit, args.expiresAt, args.volumeCurve, args.tokenMint, args.tokenDecimals)
80
+ .accounts({
81
+ depositor: this.walletPubkey,
82
+ agent: agentPda,
83
+ agentStats: statsPda,
84
+ escrow: escrowPda,
85
+ systemProgram: web3_js_1.SystemProgram.programId,
86
+ })
87
+ .remainingAccounts(splAccounts)
88
+ .rpc();
89
+ }
90
+ /**
91
+ * @name deposit
92
+ * @description Deposit additional funds into an existing escrow.
93
+ * @param agentWallet - The wallet of the agent associated with the escrow.
94
+ * @param amount - The amount to deposit (lamports for SOL, smallest unit for SPL).
95
+ * @param splAccounts - Remaining accounts for SPL token transfers. Defaults to `[]`.
96
+ * @returns {Promise<TransactionSignature>} The transaction signature.
97
+ * @since v0.1.0
98
+ */
99
+ async deposit(agentWallet, amount, splAccounts = []) {
100
+ const [agentPda] = (0, pda_1.deriveAgent)(agentWallet);
101
+ const [escrowPda] = this.deriveEscrow(agentPda);
102
+ return this.methods
103
+ .depositEscrow(this.bn(amount))
104
+ .accounts({
105
+ depositor: this.walletPubkey,
106
+ escrow: escrowPda,
107
+ systemProgram: web3_js_1.SystemProgram.programId,
108
+ })
109
+ .remainingAccounts(splAccounts)
110
+ .rpc();
111
+ }
112
+ /**
113
+ * @name settle
114
+ * @description Agent settles calls — claims earned funds from the escrow.
115
+ * Must be called by the agent owner wallet.
116
+ * @param depositorWallet - The wallet of the client who funded the escrow.
117
+ * @param callsToSettle - Number of calls to settle payment for.
118
+ * @param serviceHash - A 32-byte SHA-256 hash identifying the service rendered.
119
+ * @param splAccounts - Remaining accounts for SPL token transfers. Defaults to `[]`.
120
+ * @returns {Promise<TransactionSignature>} The transaction signature.
121
+ * @since v0.1.0
122
+ */
123
+ async settle(depositorWallet, callsToSettle, serviceHash, splAccounts = []) {
124
+ const [agentPda] = (0, pda_1.deriveAgent)(this.walletPubkey);
125
+ const [escrowPda] = (0, pda_1.deriveEscrow)(agentPda, depositorWallet);
126
+ const [statsPda] = (0, pda_1.deriveAgentStats)(agentPda);
127
+ return this.methods
128
+ .settleCalls(this.bn(callsToSettle), serviceHash)
129
+ .accounts({
130
+ wallet: this.walletPubkey,
131
+ agent: agentPda,
132
+ agentStats: statsPda,
133
+ escrow: escrowPda,
134
+ systemProgram: web3_js_1.SystemProgram.programId,
135
+ })
136
+ .remainingAccounts(splAccounts)
137
+ .rpc();
138
+ }
139
+ /**
140
+ * @name withdraw
141
+ * @description Client withdraws un-settled funds from their escrow.
142
+ * @param agentWallet - The wallet of the agent associated with the escrow.
143
+ * @param amount - The amount to withdraw (lamports for SOL, smallest unit for SPL).
144
+ * @param splAccounts - Remaining accounts for SPL token transfers. Defaults to `[]`.
145
+ * @returns {Promise<TransactionSignature>} The transaction signature.
146
+ * @since v0.1.0
147
+ */
148
+ async withdraw(agentWallet, amount, splAccounts = []) {
149
+ const [agentPda] = (0, pda_1.deriveAgent)(agentWallet);
150
+ const [escrowPda] = this.deriveEscrow(agentPda);
151
+ return this.methods
152
+ .withdrawEscrow(this.bn(amount))
153
+ .accounts({
154
+ depositor: this.walletPubkey,
155
+ escrow: escrowPda,
156
+ systemProgram: web3_js_1.SystemProgram.programId,
157
+ })
158
+ .remainingAccounts(splAccounts)
159
+ .rpc();
160
+ }
161
+ /**
162
+ * @name close
163
+ * @description Close an empty escrow PDA (balance must be 0) and reclaim rent.
164
+ * @param agentWallet - The wallet of the agent associated with the escrow.
165
+ * @returns {Promise<TransactionSignature>} The transaction signature.
166
+ * @since v0.1.0
167
+ */
168
+ async close(agentWallet) {
169
+ const [agentPda] = (0, pda_1.deriveAgent)(agentWallet);
170
+ const [escrowPda] = this.deriveEscrow(agentPda);
171
+ return this.methods
172
+ .closeEscrow()
173
+ .accounts({
174
+ depositor: this.walletPubkey,
175
+ escrow: escrowPda,
176
+ })
177
+ .rpc();
178
+ }
179
+ /**
180
+ * @name settleBatch
181
+ * @description Batch settlement — process up to 10 settlements in a single
182
+ * transaction. Must be called by the agent owner wallet.
183
+ * @param depositorWallet - The wallet of the client who funded the escrow.
184
+ * @param settlements - Array of settlement entries (up to 10).
185
+ * @param splAccounts - Remaining accounts for SPL token transfers. Defaults to `[]`.
186
+ * @returns {Promise<TransactionSignature>} The transaction signature.
187
+ * @since v0.1.0
188
+ */
189
+ async settleBatch(depositorWallet, settlements, splAccounts = []) {
190
+ const [agentPda] = (0, pda_1.deriveAgent)(this.walletPubkey);
191
+ const [escrowPda] = (0, pda_1.deriveEscrow)(agentPda, depositorWallet);
192
+ const [statsPda] = (0, pda_1.deriveAgentStats)(agentPda);
193
+ return this.methods
194
+ .settleBatch(settlements)
195
+ .accounts({
196
+ wallet: this.walletPubkey,
197
+ agent: agentPda,
198
+ agentStats: statsPda,
199
+ escrow: escrowPda,
200
+ systemProgram: web3_js_1.SystemProgram.programId,
201
+ })
202
+ .remainingAccounts(splAccounts)
203
+ .rpc();
204
+ }
205
+ // ── Fetchers ─────────────────────────────────────────
206
+ /**
207
+ * @name fetch
208
+ * @description Fetch a deserialized `EscrowAccount`.
209
+ * @param agentPda - The agent account PDA.
210
+ * @param depositor - The depositor wallet. Defaults to the connected wallet.
211
+ * @returns {Promise<EscrowAccountData>} The escrow account data.
212
+ * @throws Will throw if the escrow account does not exist.
213
+ * @since v0.1.0
214
+ */
215
+ async fetch(agentPda, depositor) {
216
+ const [pda] = this.deriveEscrow(agentPda, depositor);
217
+ return this.fetchAccount("escrowAccount", pda);
218
+ }
219
+ /**
220
+ * @name fetchNullable
221
+ * @description Fetch a deserialized `EscrowAccount`, or `null` if it
222
+ * does not exist on-chain.
223
+ * @param agentPda - The agent account PDA.
224
+ * @param depositor - The depositor wallet. Defaults to the connected wallet.
225
+ * @returns {Promise<EscrowAccountData | null>} The escrow data or `null`.
226
+ * @since v0.1.0
227
+ */
228
+ async fetchNullable(agentPda, depositor) {
229
+ const [pda] = this.deriveEscrow(agentPda, depositor);
230
+ return this.fetchAccountNullable("escrowAccount", pda);
231
+ }
232
+ /**
233
+ * @name fetchByPda
234
+ * @description Fetch an escrow account by its PDA address directly,
235
+ * bypassing PDA derivation.
236
+ * @param escrowPda - The escrow PDA public key.
237
+ * @returns {Promise<EscrowAccountData>} The escrow account data.
238
+ * @throws Will throw if the escrow account does not exist.
239
+ * @since v0.1.0
240
+ */
241
+ async fetchByPda(escrowPda) {
242
+ return this.fetchAccount("escrowAccount", escrowPda);
243
+ }
244
+ }
245
+ exports.EscrowModule = EscrowModule;
246
+ //# sourceMappingURL=escrow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escrow.js","sourceRoot":"","sources":["../../../src/modules/escrow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ /**
3
+ * @module feedback
4
+ * @description Trustless reputation system — give, update, revoke, and close
5
+ * on-chain feedback entries for agents.
6
+ *
7
+ * Feedback entries are PDA-based reviews tied to an agent and a reviewer wallet,
8
+ * enabling permissionless, verifiable reputation on Solana.
9
+ *
10
+ * @category Modules
11
+ * @since v0.1.0
12
+ * @packageDocumentation
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.FeedbackModule = void 0;
16
+ const web3_js_1 = require("@solana/web3.js");
17
+ const base_1 = require("./base");
18
+ const pda_1 = require("../pda");
19
+ /**
20
+ * @name FeedbackModule
21
+ * @description Manages on-chain feedback entries for the Solana Agent Protocol.
22
+ * Provides methods to give, update, revoke, close, and fetch feedback PDAs
23
+ * that form the trustless reputation layer.
24
+ *
25
+ * @category Modules
26
+ * @since v0.1.0
27
+ * @extends BaseModule
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * const sap = new SapClient(provider);
32
+ * const sig = await sap.feedback.give(agentWallet, {
33
+ * score: 5,
34
+ * tag: { quality: {} },
35
+ * commentHash: null,
36
+ * });
37
+ * ```
38
+ */
39
+ class FeedbackModule extends base_1.BaseModule {
40
+ // ── PDA helpers ──────────────────────────────────────
41
+ /**
42
+ * @name deriveFeedback
43
+ * @description Derive the `FeedbackAccount` PDA for a given agent and reviewer.
44
+ * @param agentPda - The agent account PDA to review.
45
+ * @param reviewer - The reviewer wallet. Defaults to the connected wallet.
46
+ * @returns A tuple of `[PublicKey, bump]` for the feedback PDA.
47
+ * @see {@link deriveFeedback} from `pda/` module for the underlying derivation.
48
+ * @since v0.1.0
49
+ */
50
+ deriveFeedback(agentPda, reviewer) {
51
+ return (0, pda_1.deriveFeedback)(agentPda, reviewer ?? this.walletPubkey);
52
+ }
53
+ // ── Instructions ─────────────────────────────────────
54
+ /**
55
+ * @name give
56
+ * @description Leave on-chain feedback for an agent. Creates a new
57
+ * `FeedbackAccount` PDA owned by the reviewer.
58
+ * @param agentWallet - The wallet that owns the target agent.
59
+ * @param args - Feedback parameters (score, tag, optional comment hash).
60
+ * @returns {Promise<TransactionSignature>} The transaction signature.
61
+ * @since v0.1.0
62
+ */
63
+ async give(agentWallet, args) {
64
+ const [agentPda] = (0, pda_1.deriveAgent)(agentWallet);
65
+ const [feedbackPda] = this.deriveFeedback(agentPda);
66
+ const [globalPda] = (0, pda_1.deriveGlobalRegistry)();
67
+ return this.methods
68
+ .giveFeedback(args.score, args.tag, args.commentHash ?? null)
69
+ .accounts({
70
+ reviewer: this.walletPubkey,
71
+ agent: agentPda,
72
+ feedback: feedbackPda,
73
+ globalRegistry: globalPda,
74
+ systemProgram: web3_js_1.SystemProgram.programId,
75
+ })
76
+ .rpc();
77
+ }
78
+ /**
79
+ * @name update
80
+ * @description Update an existing feedback entry. Only the original reviewer
81
+ * may update their feedback.
82
+ * @param agentWallet - The wallet that owns the target agent.
83
+ * @param args - Updated feedback parameters (new score, optional new tag, optional comment hash).
84
+ * @returns {Promise<TransactionSignature>} The transaction signature.
85
+ * @since v0.1.0
86
+ */
87
+ async update(agentWallet, args) {
88
+ const [agentPda] = (0, pda_1.deriveAgent)(agentWallet);
89
+ const [feedbackPda] = this.deriveFeedback(agentPda);
90
+ return this.methods
91
+ .updateFeedback(args.newScore, args.newTag ?? null, args.commentHash ?? null)
92
+ .accounts({
93
+ reviewer: this.walletPubkey,
94
+ agent: agentPda,
95
+ feedback: feedbackPda,
96
+ })
97
+ .rpc();
98
+ }
99
+ /**
100
+ * @name revoke
101
+ * @description Revoke a feedback entry, marking it as revoked and excluding
102
+ * it from reputation calculations.
103
+ * @param agentWallet - The wallet that owns the target agent.
104
+ * @returns {Promise<TransactionSignature>} The transaction signature.
105
+ * @since v0.1.0
106
+ */
107
+ async revoke(agentWallet) {
108
+ const [agentPda] = (0, pda_1.deriveAgent)(agentWallet);
109
+ const [feedbackPda] = this.deriveFeedback(agentPda);
110
+ return this.methods
111
+ .revokeFeedback()
112
+ .accounts({
113
+ reviewer: this.walletPubkey,
114
+ agent: agentPda,
115
+ feedback: feedbackPda,
116
+ })
117
+ .rpc();
118
+ }
119
+ /**
120
+ * @name close
121
+ * @description Close a revoked feedback PDA and reclaim rent to the reviewer.
122
+ * @param agentWallet - The wallet that owns the target agent.
123
+ * @returns {Promise<TransactionSignature>} The transaction signature.
124
+ * @since v0.1.0
125
+ */
126
+ async close(agentWallet) {
127
+ const [agentPda] = (0, pda_1.deriveAgent)(agentWallet);
128
+ const [feedbackPda] = this.deriveFeedback(agentPda);
129
+ return this.methods
130
+ .closeFeedback()
131
+ .accounts({
132
+ reviewer: this.walletPubkey,
133
+ feedback: feedbackPda,
134
+ })
135
+ .rpc();
136
+ }
137
+ // ── Fetchers ─────────────────────────────────────────
138
+ /**
139
+ * @name fetch
140
+ * @description Fetch a deserialized `FeedbackAccount`.
141
+ * @param agentPda - The agent account PDA.
142
+ * @param reviewer - The reviewer wallet. Defaults to the connected wallet.
143
+ * @returns {Promise<FeedbackAccountData>} The feedback account data.
144
+ * @throws Will throw if the feedback account does not exist.
145
+ * @since v0.1.0
146
+ */
147
+ async fetch(agentPda, reviewer) {
148
+ const [pda] = this.deriveFeedback(agentPda, reviewer);
149
+ return this.fetchAccount("feedbackAccount", pda);
150
+ }
151
+ /**
152
+ * @name fetchNullable
153
+ * @description Fetch a deserialized `FeedbackAccount`, or `null` if it
154
+ * does not exist on-chain.
155
+ * @param agentPda - The agent account PDA.
156
+ * @param reviewer - The reviewer wallet. Defaults to the connected wallet.
157
+ * @returns {Promise<FeedbackAccountData | null>} The feedback data or `null`.
158
+ * @since v0.1.0
159
+ */
160
+ async fetchNullable(agentPda, reviewer) {
161
+ const [pda] = this.deriveFeedback(agentPda, reviewer);
162
+ return this.fetchAccountNullable("feedbackAccount", pda);
163
+ }
164
+ }
165
+ exports.FeedbackModule = FeedbackModule;
166
+ //# sourceMappingURL=feedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../../src/modules/feedback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ /**
3
+ * @module modules
4
+ * @description Barrel export for all domain modules of the `@synapse-sap/sdk`.
5
+ *
6
+ * Re-exports every module class so consumers can import from a single entry point:
7
+ * ```ts
8
+ * import { AgentModule, VaultModule } from "@synapse-sap/sdk/modules";
9
+ * ```
10
+ *
11
+ * @category Modules
12
+ * @since v0.1.0
13
+ * @packageDocumentation
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.BaseModule = exports.LedgerModule = exports.AttestationModule = exports.EscrowModule = exports.VaultModule = exports.ToolsModule = exports.IndexingModule = exports.FeedbackModule = exports.AgentModule = void 0;
17
+ var agent_1 = require("./agent");
18
+ Object.defineProperty(exports, "AgentModule", { enumerable: true, get: function () { return agent_1.AgentModule; } });
19
+ var feedback_1 = require("./feedback");
20
+ Object.defineProperty(exports, "FeedbackModule", { enumerable: true, get: function () { return feedback_1.FeedbackModule; } });
21
+ var indexing_1 = require("./indexing");
22
+ Object.defineProperty(exports, "IndexingModule", { enumerable: true, get: function () { return indexing_1.IndexingModule; } });
23
+ var tools_1 = require("./tools");
24
+ Object.defineProperty(exports, "ToolsModule", { enumerable: true, get: function () { return tools_1.ToolsModule; } });
25
+ var vault_1 = require("./vault");
26
+ Object.defineProperty(exports, "VaultModule", { enumerable: true, get: function () { return vault_1.VaultModule; } });
27
+ var escrow_1 = require("./escrow");
28
+ Object.defineProperty(exports, "EscrowModule", { enumerable: true, get: function () { return escrow_1.EscrowModule; } });
29
+ var attestation_1 = require("./attestation");
30
+ Object.defineProperty(exports, "AttestationModule", { enumerable: true, get: function () { return attestation_1.AttestationModule; } });
31
+ var ledger_1 = require("./ledger");
32
+ Object.defineProperty(exports, "LedgerModule", { enumerable: true, get: function () { return ledger_1.LedgerModule; } });
33
+ var base_1 = require("./base");
34
+ Object.defineProperty(exports, "BaseModule", { enumerable: true, get: function () { return base_1.BaseModule; } });
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAEH,iCAAsC;AAA7B,oGAAA,WAAW,OAAA;AACpB,uCAA4C;AAAnC,0GAAA,cAAc,OAAA;AACvB,uCAA4C;AAAnC,0GAAA,cAAc,OAAA;AACvB,iCAAsC;AAA7B,oGAAA,WAAW,OAAA;AACpB,iCAAsC;AAA7B,oGAAA,WAAW,OAAA;AACpB,mCAAwC;AAA/B,sGAAA,YAAY,OAAA;AACrB,6CAAkD;AAAzC,gHAAA,iBAAiB,OAAA;AAC1B,mCAAwC;AAA/B,sGAAA,YAAY,OAAA;AACrB,+BAAoC;AAA3B,kGAAA,UAAU,OAAA"}