@nucypher/taco 0.7.0-alpha.2 → 0.7.0-dev.viem

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 (297) hide show
  1. package/README.md +149 -0
  2. package/dist/cjs/access-client/client.d.ts +237 -0
  3. package/dist/cjs/access-client/client.js +196 -0
  4. package/dist/cjs/access-client/client.js.map +1 -0
  5. package/dist/cjs/access-client/config-validator.d.ts +92 -0
  6. package/dist/cjs/access-client/config-validator.js +204 -0
  7. package/dist/cjs/access-client/config-validator.js.map +1 -0
  8. package/dist/cjs/access-client/config.d.ts +50 -0
  9. package/dist/cjs/access-client/config.js +27 -0
  10. package/dist/cjs/access-client/config.js.map +1 -0
  11. package/dist/cjs/access-client/index.d.ts +2 -0
  12. package/dist/cjs/access-client/index.js +19 -0
  13. package/dist/cjs/access-client/index.js.map +1 -0
  14. package/dist/cjs/conditions/base/contract.d.ts +4 -4
  15. package/dist/cjs/conditions/base/contract.js +8 -8
  16. package/dist/cjs/conditions/base/contract.js.map +1 -1
  17. package/dist/cjs/conditions/base/index.d.ts +6 -9
  18. package/dist/cjs/conditions/base/index.js +7 -10
  19. package/dist/cjs/conditions/base/index.js.map +1 -1
  20. package/dist/cjs/conditions/base/json-api.d.ts +4 -4
  21. package/dist/cjs/conditions/base/json-api.js +8 -8
  22. package/dist/cjs/conditions/base/json-api.js.map +1 -1
  23. package/dist/cjs/conditions/base/json-rpc.d.ts +4 -4
  24. package/dist/cjs/conditions/base/json-rpc.js +8 -8
  25. package/dist/cjs/conditions/base/json-rpc.js.map +1 -1
  26. package/dist/cjs/conditions/base/jwt.d.ts +4 -4
  27. package/dist/cjs/conditions/base/jwt.js +9 -9
  28. package/dist/cjs/conditions/base/jwt.js.map +1 -1
  29. package/dist/cjs/conditions/base/rpc.d.ts +4 -4
  30. package/dist/cjs/conditions/base/rpc.js +8 -8
  31. package/dist/cjs/conditions/base/rpc.js.map +1 -1
  32. package/dist/cjs/conditions/base/time.d.ts +4 -4
  33. package/dist/cjs/conditions/base/time.js +9 -9
  34. package/dist/cjs/conditions/base/time.js.map +1 -1
  35. package/dist/cjs/conditions/compound-condition.d.ts +4 -4
  36. package/dist/cjs/conditions/compound-condition.js +9 -9
  37. package/dist/cjs/conditions/compound-condition.js.map +1 -1
  38. package/dist/cjs/conditions/condition-expr.d.ts +1 -1
  39. package/dist/cjs/conditions/condition-expr.js +7 -7
  40. package/dist/cjs/conditions/condition-expr.js.map +1 -1
  41. package/dist/cjs/conditions/condition-factory.d.ts +1 -1
  42. package/dist/cjs/conditions/condition-factory.js +27 -38
  43. package/dist/cjs/conditions/condition-factory.js.map +1 -1
  44. package/dist/cjs/conditions/condition.d.ts +1 -1
  45. package/dist/cjs/conditions/condition.js +6 -6
  46. package/dist/cjs/conditions/condition.js.map +1 -1
  47. package/dist/cjs/conditions/context/context.d.ts +2 -6
  48. package/dist/cjs/conditions/context/context.js +16 -41
  49. package/dist/cjs/conditions/context/context.js.map +1 -1
  50. package/dist/cjs/conditions/context/index.d.ts +1 -1
  51. package/dist/cjs/conditions/context/index.js +2 -2
  52. package/dist/cjs/conditions/context/index.js.map +1 -1
  53. package/dist/cjs/conditions/if-then-else-condition.d.ts +4 -4
  54. package/dist/cjs/conditions/if-then-else-condition.js +8 -8
  55. package/dist/cjs/conditions/if-then-else-condition.js.map +1 -1
  56. package/dist/cjs/conditions/index.d.ts +9 -9
  57. package/dist/cjs/conditions/index.js +10 -10
  58. package/dist/cjs/conditions/index.js.map +1 -1
  59. package/dist/cjs/conditions/multi-condition.d.ts +1 -1
  60. package/dist/cjs/conditions/multi-condition.js +8 -8
  61. package/dist/cjs/conditions/multi-condition.js.map +1 -1
  62. package/dist/cjs/conditions/predefined/erc20.d.ts +1 -1
  63. package/dist/cjs/conditions/predefined/erc20.js +3 -3
  64. package/dist/cjs/conditions/predefined/erc20.js.map +1 -1
  65. package/dist/cjs/conditions/predefined/erc721.d.ts +1 -1
  66. package/dist/cjs/conditions/predefined/erc721.js +5 -5
  67. package/dist/cjs/conditions/predefined/erc721.js.map +1 -1
  68. package/dist/cjs/conditions/predefined/index.d.ts +2 -2
  69. package/dist/cjs/conditions/predefined/index.js +2 -2
  70. package/dist/cjs/conditions/predefined/index.js.map +1 -1
  71. package/dist/cjs/conditions/schemas/common.d.ts +0 -2
  72. package/dist/cjs/conditions/schemas/common.js +8 -25
  73. package/dist/cjs/conditions/schemas/common.js.map +1 -1
  74. package/dist/cjs/conditions/schemas/compound.js +6 -6
  75. package/dist/cjs/conditions/schemas/compound.js.map +1 -1
  76. package/dist/cjs/conditions/schemas/context.js +5 -5
  77. package/dist/cjs/conditions/schemas/context.js.map +1 -1
  78. package/dist/cjs/conditions/schemas/contract.d.ts +30 -33
  79. package/dist/cjs/conditions/schemas/contract.js +4 -4
  80. package/dist/cjs/conditions/schemas/contract.js.map +1 -1
  81. package/dist/cjs/conditions/schemas/export-for-zod-doc-gen.d.ts +13 -16
  82. package/dist/cjs/conditions/schemas/export-for-zod-doc-gen.js +13 -17
  83. package/dist/cjs/conditions/schemas/export-for-zod-doc-gen.js.map +1 -1
  84. package/dist/cjs/conditions/schemas/if-then-else.js +10 -10
  85. package/dist/cjs/conditions/schemas/if-then-else.js.map +1 -1
  86. package/dist/cjs/conditions/schemas/json-api.d.ts +14 -47
  87. package/dist/cjs/conditions/schemas/json-api.js +9 -23
  88. package/dist/cjs/conditions/schemas/json-api.js.map +1 -1
  89. package/dist/cjs/conditions/schemas/json-rpc.d.ts +13 -48
  90. package/dist/cjs/conditions/schemas/json-rpc.js +9 -23
  91. package/dist/cjs/conditions/schemas/json-rpc.js.map +1 -1
  92. package/dist/cjs/conditions/schemas/jwt.d.ts +4 -2
  93. package/dist/cjs/conditions/schemas/jwt.js +4 -4
  94. package/dist/cjs/conditions/schemas/jwt.js.map +1 -1
  95. package/dist/cjs/conditions/schemas/return-value-test.d.ts +12 -28
  96. package/dist/cjs/conditions/schemas/return-value-test.js +8 -22
  97. package/dist/cjs/conditions/schemas/return-value-test.js.map +1 -1
  98. package/dist/cjs/conditions/schemas/rpc.d.ts +16 -22
  99. package/dist/cjs/conditions/schemas/rpc.js +8 -8
  100. package/dist/cjs/conditions/schemas/rpc.js.map +1 -1
  101. package/dist/cjs/conditions/schemas/sequential.js +18 -38
  102. package/dist/cjs/conditions/schemas/sequential.js.map +1 -1
  103. package/dist/cjs/conditions/schemas/time.d.ts +10 -18
  104. package/dist/cjs/conditions/schemas/time.js +2 -2
  105. package/dist/cjs/conditions/schemas/time.js.map +1 -1
  106. package/dist/cjs/conditions/schemas/utils.js +18 -25
  107. package/dist/cjs/conditions/schemas/utils.js.map +1 -1
  108. package/dist/cjs/conditions/sequential.d.ts +4 -4
  109. package/dist/cjs/conditions/sequential.js +8 -8
  110. package/dist/cjs/conditions/sequential.js.map +1 -1
  111. package/dist/cjs/conditions/shared.d.ts +2 -2
  112. package/dist/cjs/conditions/shared.js +6 -6
  113. package/dist/cjs/conditions/shared.js.map +1 -1
  114. package/dist/cjs/index.d.ts +3 -3
  115. package/dist/cjs/index.js +8 -9
  116. package/dist/cjs/index.js.map +1 -1
  117. package/dist/cjs/taco.d.ts +82 -43
  118. package/dist/cjs/taco.js +28 -86
  119. package/dist/cjs/taco.js.map +1 -1
  120. package/dist/cjs/tdec.d.ts +2 -2
  121. package/dist/cjs/tdec.js +7 -7
  122. package/dist/cjs/tdec.js.map +1 -1
  123. package/dist/cjs/types.d.ts +0 -1
  124. package/dist/es/access-client/client.d.ts +237 -0
  125. package/dist/es/access-client/client.js +192 -0
  126. package/dist/es/access-client/client.js.map +1 -0
  127. package/dist/es/access-client/config-validator.d.ts +92 -0
  128. package/dist/es/access-client/config-validator.js +200 -0
  129. package/dist/es/access-client/config-validator.js.map +1 -0
  130. package/dist/es/access-client/config.d.ts +50 -0
  131. package/dist/es/access-client/config.js +23 -0
  132. package/dist/es/access-client/config.js.map +1 -0
  133. package/dist/es/access-client/index.d.ts +2 -0
  134. package/dist/es/access-client/index.js +3 -0
  135. package/dist/es/access-client/index.js.map +1 -0
  136. package/dist/es/conditions/base/contract.d.ts +4 -4
  137. package/dist/es/conditions/base/contract.js +3 -3
  138. package/dist/es/conditions/base/contract.js.map +1 -1
  139. package/dist/es/conditions/base/index.d.ts +6 -9
  140. package/dist/es/conditions/base/index.js +6 -9
  141. package/dist/es/conditions/base/index.js.map +1 -1
  142. package/dist/es/conditions/base/json-api.d.ts +4 -4
  143. package/dist/es/conditions/base/json-api.js +3 -3
  144. package/dist/es/conditions/base/json-api.js.map +1 -1
  145. package/dist/es/conditions/base/json-rpc.d.ts +4 -4
  146. package/dist/es/conditions/base/json-rpc.js +3 -3
  147. package/dist/es/conditions/base/json-rpc.js.map +1 -1
  148. package/dist/es/conditions/base/jwt.d.ts +4 -4
  149. package/dist/es/conditions/base/jwt.js +3 -3
  150. package/dist/es/conditions/base/jwt.js.map +1 -1
  151. package/dist/es/conditions/base/rpc.d.ts +4 -4
  152. package/dist/es/conditions/base/rpc.js +3 -3
  153. package/dist/es/conditions/base/rpc.js.map +1 -1
  154. package/dist/es/conditions/base/time.d.ts +4 -4
  155. package/dist/es/conditions/base/time.js +3 -3
  156. package/dist/es/conditions/base/time.js.map +1 -1
  157. package/dist/es/conditions/compound-condition.d.ts +4 -4
  158. package/dist/es/conditions/compound-condition.js +3 -3
  159. package/dist/es/conditions/compound-condition.js.map +1 -1
  160. package/dist/es/conditions/condition-expr.d.ts +1 -1
  161. package/dist/es/conditions/condition-expr.js +2 -2
  162. package/dist/es/conditions/condition-expr.js.map +1 -1
  163. package/dist/es/conditions/condition-factory.d.ts +1 -1
  164. package/dist/es/conditions/condition-factory.js +9 -20
  165. package/dist/es/conditions/condition-factory.js.map +1 -1
  166. package/dist/es/conditions/condition.d.ts +1 -1
  167. package/dist/es/conditions/condition.js +3 -3
  168. package/dist/es/conditions/condition.js.map +1 -1
  169. package/dist/es/conditions/context/context.d.ts +2 -6
  170. package/dist/es/conditions/context/context.js +6 -31
  171. package/dist/es/conditions/context/context.js.map +1 -1
  172. package/dist/es/conditions/context/index.d.ts +1 -1
  173. package/dist/es/conditions/context/index.js +1 -1
  174. package/dist/es/conditions/context/index.js.map +1 -1
  175. package/dist/es/conditions/if-then-else-condition.d.ts +4 -4
  176. package/dist/es/conditions/if-then-else-condition.js +3 -3
  177. package/dist/es/conditions/if-then-else-condition.js.map +1 -1
  178. package/dist/es/conditions/index.d.ts +9 -9
  179. package/dist/es/conditions/index.js +9 -9
  180. package/dist/es/conditions/index.js.map +1 -1
  181. package/dist/es/conditions/multi-condition.d.ts +1 -1
  182. package/dist/es/conditions/multi-condition.js +3 -3
  183. package/dist/es/conditions/multi-condition.js.map +1 -1
  184. package/dist/es/conditions/predefined/erc20.d.ts +1 -1
  185. package/dist/es/conditions/predefined/erc20.js +1 -1
  186. package/dist/es/conditions/predefined/erc20.js.map +1 -1
  187. package/dist/es/conditions/predefined/erc721.d.ts +1 -1
  188. package/dist/es/conditions/predefined/erc721.js +1 -1
  189. package/dist/es/conditions/predefined/erc721.js.map +1 -1
  190. package/dist/es/conditions/predefined/index.d.ts +2 -2
  191. package/dist/es/conditions/predefined/index.js +2 -2
  192. package/dist/es/conditions/predefined/index.js.map +1 -1
  193. package/dist/es/conditions/schemas/common.d.ts +0 -2
  194. package/dist/es/conditions/schemas/common.js +3 -20
  195. package/dist/es/conditions/schemas/common.js.map +1 -1
  196. package/dist/es/conditions/schemas/compound.js +3 -3
  197. package/dist/es/conditions/schemas/compound.js.map +1 -1
  198. package/dist/es/conditions/schemas/context.js +2 -2
  199. package/dist/es/conditions/schemas/context.js.map +1 -1
  200. package/dist/es/conditions/schemas/contract.d.ts +30 -33
  201. package/dist/es/conditions/schemas/contract.js +2 -2
  202. package/dist/es/conditions/schemas/contract.js.map +1 -1
  203. package/dist/es/conditions/schemas/export-for-zod-doc-gen.d.ts +13 -16
  204. package/dist/es/conditions/schemas/export-for-zod-doc-gen.js +13 -17
  205. package/dist/es/conditions/schemas/export-for-zod-doc-gen.js.map +1 -1
  206. package/dist/es/conditions/schemas/if-then-else.js +3 -3
  207. package/dist/es/conditions/schemas/if-then-else.js.map +1 -1
  208. package/dist/es/conditions/schemas/json-api.d.ts +14 -47
  209. package/dist/es/conditions/schemas/json-api.js +5 -19
  210. package/dist/es/conditions/schemas/json-api.js.map +1 -1
  211. package/dist/es/conditions/schemas/json-rpc.d.ts +13 -48
  212. package/dist/es/conditions/schemas/json-rpc.js +5 -19
  213. package/dist/es/conditions/schemas/json-rpc.js.map +1 -1
  214. package/dist/es/conditions/schemas/jwt.d.ts +4 -2
  215. package/dist/es/conditions/schemas/jwt.js +2 -2
  216. package/dist/es/conditions/schemas/jwt.js.map +1 -1
  217. package/dist/es/conditions/schemas/return-value-test.d.ts +12 -28
  218. package/dist/es/conditions/schemas/return-value-test.js +6 -20
  219. package/dist/es/conditions/schemas/return-value-test.js.map +1 -1
  220. package/dist/es/conditions/schemas/rpc.d.ts +16 -22
  221. package/dist/es/conditions/schemas/rpc.js +3 -3
  222. package/dist/es/conditions/schemas/rpc.js.map +1 -1
  223. package/dist/es/conditions/schemas/sequential.js +14 -34
  224. package/dist/es/conditions/schemas/sequential.js.map +1 -1
  225. package/dist/es/conditions/schemas/time.d.ts +10 -18
  226. package/dist/es/conditions/schemas/time.js +1 -1
  227. package/dist/es/conditions/schemas/time.js.map +1 -1
  228. package/dist/es/conditions/schemas/utils.js +10 -17
  229. package/dist/es/conditions/schemas/utils.js.map +1 -1
  230. package/dist/es/conditions/sequential.d.ts +4 -4
  231. package/dist/es/conditions/sequential.js +3 -3
  232. package/dist/es/conditions/sequential.js.map +1 -1
  233. package/dist/es/conditions/shared.d.ts +2 -2
  234. package/dist/es/conditions/shared.js +2 -2
  235. package/dist/es/conditions/shared.js.map +1 -1
  236. package/dist/es/index.d.ts +3 -3
  237. package/dist/es/index.js +3 -3
  238. package/dist/es/index.js.map +1 -1
  239. package/dist/es/package.json +3 -0
  240. package/dist/es/taco.d.ts +82 -43
  241. package/dist/es/taco.js +25 -82
  242. package/dist/es/taco.js.map +1 -1
  243. package/dist/es/tdec.d.ts +2 -2
  244. package/dist/es/tdec.js +5 -5
  245. package/dist/es/tdec.js.map +1 -1
  246. package/dist/es/types.d.ts +0 -1
  247. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  248. package/dist/tsconfig.es.tsbuildinfo +1 -1
  249. package/package.json +12 -8
  250. package/dist/cjs/conditions/base/address-allowlist.d.ts +0 -10
  251. package/dist/cjs/conditions/base/address-allowlist.js +0 -19
  252. package/dist/cjs/conditions/base/address-allowlist.js.map +0 -1
  253. package/dist/cjs/conditions/base/ecdsa.d.ts +0 -7
  254. package/dist/cjs/conditions/base/ecdsa.js +0 -21
  255. package/dist/cjs/conditions/base/ecdsa.js.map +0 -1
  256. package/dist/cjs/conditions/base/signing.d.ts +0 -10
  257. package/dist/cjs/conditions/base/signing.js +0 -32
  258. package/dist/cjs/conditions/base/signing.js.map +0 -1
  259. package/dist/cjs/conditions/schemas/address-allowlist.d.ts +0 -16
  260. package/dist/cjs/conditions/schemas/address-allowlist.js +0 -20
  261. package/dist/cjs/conditions/schemas/address-allowlist.js.map +0 -1
  262. package/dist/cjs/conditions/schemas/ecdsa.d.ts +0 -38
  263. package/dist/cjs/conditions/schemas/ecdsa.js +0 -40
  264. package/dist/cjs/conditions/schemas/ecdsa.js.map +0 -1
  265. package/dist/cjs/conditions/schemas/signing.d.ts +0 -12
  266. package/dist/cjs/conditions/schemas/signing.js +0 -204
  267. package/dist/cjs/conditions/schemas/signing.js.map +0 -1
  268. package/dist/cjs/conditions/zod.d.ts +0 -3
  269. package/dist/cjs/conditions/zod.js +0 -19
  270. package/dist/cjs/conditions/zod.js.map +0 -1
  271. package/dist/cjs/sign.d.ts +0 -26
  272. package/dist/cjs/sign.js +0 -99
  273. package/dist/cjs/sign.js.map +0 -1
  274. package/dist/es/conditions/base/address-allowlist.d.ts +0 -10
  275. package/dist/es/conditions/base/address-allowlist.js +0 -15
  276. package/dist/es/conditions/base/address-allowlist.js.map +0 -1
  277. package/dist/es/conditions/base/ecdsa.d.ts +0 -7
  278. package/dist/es/conditions/base/ecdsa.js +0 -12
  279. package/dist/es/conditions/base/ecdsa.js.map +0 -1
  280. package/dist/es/conditions/base/signing.d.ts +0 -10
  281. package/dist/es/conditions/base/signing.js +0 -20
  282. package/dist/es/conditions/base/signing.js.map +0 -1
  283. package/dist/es/conditions/schemas/address-allowlist.d.ts +0 -16
  284. package/dist/es/conditions/schemas/address-allowlist.js +0 -17
  285. package/dist/es/conditions/schemas/address-allowlist.js.map +0 -1
  286. package/dist/es/conditions/schemas/ecdsa.d.ts +0 -38
  287. package/dist/es/conditions/schemas/ecdsa.js +0 -37
  288. package/dist/es/conditions/schemas/ecdsa.js.map +0 -1
  289. package/dist/es/conditions/schemas/signing.d.ts +0 -12
  290. package/dist/es/conditions/schemas/signing.js +0 -201
  291. package/dist/es/conditions/schemas/signing.js.map +0 -1
  292. package/dist/es/conditions/zod.d.ts +0 -3
  293. package/dist/es/conditions/zod.js +0 -17
  294. package/dist/es/conditions/zod.js.map +0 -1
  295. package/dist/es/sign.d.ts +0 -26
  296. package/dist/es/sign.js +0 -95
  297. package/dist/es/sign.js.map +0 -1
package/dist/cjs/taco.js CHANGED
@@ -1,101 +1,43 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.decrypt = exports.encryptWithPublicKey = exports.encrypt = void 0;
3
+ exports.encrypt = encrypt;
4
+ exports.encryptWithPublicKey = encryptWithPublicKey;
5
+ exports.decrypt = decrypt;
4
6
  const nucypher_core_1 = require("@nucypher/nucypher-core");
5
7
  const shared_1 = require("@nucypher/shared");
6
- const utils_1 = require("ethers/lib/utils");
7
- const condition_expr_1 = require("./conditions/condition-expr");
8
- const dkg_1 = require("./dkg");
9
- const tdec_1 = require("./tdec");
10
- /**
11
- * Encrypts a message under given conditions using a public key from an active DKG ritual.
12
- *
13
- * @export
14
- * @param {ethers.providers.Provider} provider - Instance of ethers provider which is used to interact with
15
- * your selected network.
16
- * @param {Domain} domain - Represents the logical network in which the encryption will be performed.
17
- * Must match the `ritualId`.
18
- * @param {Uint8Array | string} message - The message to be encrypted.
19
- * @param {Condition} condition - Condition under which the message will be encrypted. Those conditions must be
20
- * satisfied in order to decrypt the message.
21
- * @param {number} ritualId - The ID of the DKG Ritual to be used for encryption. The message will be encrypted
22
- * under the public key of this ritual.
23
- * @param {ethers.Signer} authSigner - The signer that will be used to sign the encrypter authorization.
24
- *
25
- * @returns {Promise<ThresholdMessageKit>} Returns Promise that resolves with an instance of ThresholdMessageKit.
26
- * It represents the encrypted message.
27
- *
28
- * @throws {Error} If the active DKG Ritual cannot be retrieved an error is thrown.
29
- */
30
- const encrypt = async (provider, domain, message, condition, ritualId, authSigner) => {
31
- // TODO(#264): Enable ritual initialization
32
- // if (ritualId === undefined) {
33
- // ritualId = await DkgClient.initializeRitual(
34
- // provider,
35
- // this.cohort.ursulaAddresses,
36
- // true
37
- // );
38
- // }
39
- // if (ritualId === undefined) {
40
- // // Given that we just initialized the ritual, this should never happen
41
- // throw new Error('Ritual ID is undefined');
42
- // }
43
- const dkgRitual = await dkg_1.DkgClient.getActiveRitual(provider, domain, ritualId);
44
- return await (0, exports.encryptWithPublicKey)(message, condition, dkgRitual.dkgPublicKey, authSigner);
45
- };
46
- exports.encrypt = encrypt;
47
- /**
48
- * Encrypts a message with the given DKG public key under a specified condition.
49
- *
50
- * @export
51
- * @param {Uint8Array | string} message - The message to be encrypted.
52
- * @param {Condition} condition - Condition under which the message will be encrypted. Those conditions must be
53
- * satisfied in order to decrypt the message.
54
- * @param {DkgPublicKey} dkgPublicKey - The public key of an active DKG Ritual to be used for encryption
55
- * @param {ethers.Signer} authSigner - The signer that will be used to sign the encrypter authorization.
56
- *
57
- * @returns {Promise<ThresholdMessageKit>} Returns Promise that resolves with an instance of ThresholdMessageKit.
58
- * It represents the encrypted message.
59
- *
60
- * @throws {Error} If the encryption process throws an error, an error is thrown.
61
- */
62
- const encryptWithPublicKey = async (message, condition, dkgPublicKey, authSigner) => {
8
+ const ethers_1 = require("ethers");
9
+ const condition_expr_js_1 = require("./conditions/condition-expr.js");
10
+ const dkg_js_1 = require("./dkg.js");
11
+ const tdec_js_1 = require("./tdec.js");
12
+ async function encrypt(providerLike, domain, message, condition, ritualId, signerLike) {
13
+ // Create TACo provider and signer adapters from viem objects
14
+ const providerAdapter = (0, shared_1.toEthersProvider)(providerLike);
15
+ const dkgRitual = await dkg_js_1.DkgClient.getActiveRitual(providerAdapter, domain, ritualId);
16
+ return await encryptWithPublicKey(message, condition, dkgRitual.dkgPublicKey,
17
+ // Casting is needed because with the function definition of encryptWithPublicKey,
18
+ // this param can be either a Signer or a viem signer account. But not a type that is the union of both.
19
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
+ signerLike);
21
+ }
22
+ async function encryptWithPublicKey(message, condition, dkgPublicKey, signerLike) {
63
23
  if (typeof message === 'string') {
64
24
  message = (0, shared_1.toBytes)(message);
65
25
  }
66
- const conditionExpr = new condition_expr_1.ConditionExpression(condition);
26
+ const signer = (0, shared_1.toTacoSigner)(signerLike);
27
+ const conditionExpr = new condition_expr_js_1.ConditionExpression(condition);
67
28
  const [ciphertext, authenticatedData] = (0, nucypher_core_1.encryptForDkg)(message, dkgPublicKey, conditionExpr.toCoreCondition());
68
- const headerHash = (0, utils_1.keccak256)(ciphertext.header.toBytes());
69
- const authorization = await authSigner.signMessage((0, shared_1.fromHexString)(headerHash));
29
+ const headerHash = ethers_1.ethers.utils.keccak256(ciphertext.header.toBytes());
30
+ const authorization = await signer.signMessage((0, shared_1.fromHexString)(headerHash));
70
31
  const acp = new nucypher_core_1.AccessControlPolicy(authenticatedData, (0, shared_1.fromHexString)(authorization));
71
32
  return new nucypher_core_1.ThresholdMessageKit(ciphertext, acp);
72
- };
73
- exports.encryptWithPublicKey = encryptWithPublicKey;
74
- /**
75
- * Decrypts an encrypted message.
76
- *
77
- * @export
78
- * @param {ethers.providers.Provider} provider - Instance of ethers provider which is used to interact with
79
- * your selected network.
80
- * @param {Domain} domain - Represents the logical network in which the decryption will be performed.
81
- * Must match the `ritualId`.
82
- * @param {ThresholdMessageKit} messageKit - The kit containing the message to be decrypted
83
- * @param {ConditionContext} context - Optional context data used for decryption time values for the condition(s) within the `messageKit`.
84
- * @param {string[]} [porterUris] - Optional URI(s) for the Porter service. If not provided, a value will be obtained
85
- * from the Domain
86
- *
87
- * @returns {Promise<Uint8Array>} Returns Promise that resolves with a decrypted message
88
- *
89
- * @throws {Error} If the active DKG Ritual cannot be retrieved or decryption process throws an error,
90
- * an error is thrown.
91
- */
92
- const decrypt = async (provider, domain, messageKit, context, porterUris) => {
33
+ }
34
+ async function decrypt(providerLike, domain, messageKit, context, porterUris) {
93
35
  const porterUrisFull = porterUris
94
36
  ? porterUris
95
37
  : await (0, shared_1.getPorterUris)(domain);
96
38
  const porter = new shared_1.PorterClient(porterUrisFull);
97
- const ritualId = await shared_1.DkgCoordinatorAgent.getRitualIdFromPublicKey(provider, domain, messageKit.acp.publicKey);
98
- return (0, tdec_1.retrieveAndDecrypt)(provider, domain, porter, messageKit, ritualId, context);
99
- };
100
- exports.decrypt = decrypt;
39
+ const providerAdapter = (0, shared_1.toEthersProvider)(providerLike);
40
+ const ritualId = await shared_1.DkgCoordinatorAgent.getRitualIdFromPublicKey(providerAdapter, domain, messageKit.acp.publicKey);
41
+ return (0, tdec_js_1.retrieveAndDecrypt)(providerAdapter, domain, porter, messageKit, ritualId, context);
42
+ }
101
43
  //# sourceMappingURL=taco.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taco.js","sourceRoot":"","sources":["../../src/taco.ts"],"names":[],"mappings":";;;AAAA,2DAKiC;AACjC,6CAO0B;AAE1B,4CAA6C;AAG7C,gEAAkE;AAElE,+BAAkC;AAClC,iCAA4C;AAE5C;;;;;;;;;;;;;;;;;;;GAmBG;AACI,MAAM,OAAO,GAAG,KAAK,EAC1B,QAAmC,EACnC,MAAc,EACd,OAA4B,EAC5B,SAAoB,EACpB,QAAgB,EAChB,UAAyB,EACK,EAAE;IAChC,2CAA2C;IAC3C,gCAAgC;IAChC,iDAAiD;IACjD,gBAAgB;IAChB,mCAAmC;IACnC,WAAW;IACX,OAAO;IACP,IAAI;IACJ,gCAAgC;IAChC,2EAA2E;IAC3E,+CAA+C;IAC/C,IAAI;IACJ,MAAM,SAAS,GAAG,MAAM,eAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE9E,OAAO,MAAM,IAAA,4BAAoB,EAC/B,OAAO,EACP,SAAS,EACT,SAAS,CAAC,YAAY,EACtB,UAAU,CACX,CAAC;AACJ,CAAC,CAAC;AA5BW,QAAA,OAAO,WA4BlB;AAEF;;;;;;;;;;;;;;GAcG;AACI,MAAM,oBAAoB,GAAG,KAAK,EACvC,OAA4B,EAC5B,SAAoB,EACpB,YAA0B,EAC1B,UAAyB,EACK,EAAE;IAChC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,GAAG,IAAA,gBAAO,EAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,oCAAmB,CAAC,SAAS,CAAC,CAAC;IAEzD,MAAM,CAAC,UAAU,EAAE,iBAAiB,CAAC,GAAG,IAAA,6BAAa,EACnD,OAAO,EACP,YAAY,EACZ,aAAa,CAAC,eAAe,EAAE,CAChC,CAAC;IAEF,MAAM,UAAU,GAAG,IAAA,iBAAS,EAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,IAAA,sBAAa,EAAC,UAAU,CAAC,CAAC,CAAC;IAC9E,MAAM,GAAG,GAAG,IAAI,mCAAmB,CACjC,iBAAiB,EACjB,IAAA,sBAAa,EAAC,aAAa,CAAC,CAC7B,CAAC;IAEF,OAAO,IAAI,mCAAmB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAClD,CAAC,CAAC;AA1BW,QAAA,oBAAoB,wBA0B/B;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACI,MAAM,OAAO,GAAG,KAAK,EAC1B,QAAmC,EACnC,MAAc,EACd,UAA+B,EAC/B,OAA0B,EAC1B,UAAqB,EACA,EAAE;IACvB,MAAM,cAAc,GAAa,UAAU;QACzC,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,MAAM,IAAA,sBAAa,EAAC,MAAM,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,qBAAY,CAAC,cAAc,CAAC,CAAC;IAEhD,MAAM,QAAQ,GAAG,MAAM,4BAAmB,CAAC,wBAAwB,CACjE,QAAQ,EACR,MAAM,EACN,UAAU,CAAC,GAAG,CAAC,SAAS,CACzB,CAAC;IACF,OAAO,IAAA,yBAAkB,EACvB,QAAQ,EACR,MAAM,EACN,MAAM,EACN,UAAU,EACV,QAAQ,EACR,OAAO,CACR,CAAC;AACJ,CAAC,CAAC;AAzBW,QAAA,OAAO,WAyBlB"}
1
+ {"version":3,"file":"taco.js","sourceRoot":"","sources":["../../src/taco.ts"],"names":[],"mappings":";;AAkFA,0BA0BC;AA0CD,oDA4BC;AA8CD,0BA2BC;AA3PD,2DAKiC;AACjC,6CAa0B;AAC1B,mCAAgC;AAEhC,sEAAqE;AAGrE,qCAAqC;AACrC,uCAA+C;AAwDxC,KAAK,UAAU,OAAO,CAC3B,YAA0B,EAC1B,MAAc,EACd,OAA4B,EAC5B,SAAoB,EACpB,QAAgB,EAChB,UAAsB;IAEtB,6DAA6D;IAC7D,MAAM,eAAe,GAAG,IAAA,yBAAgB,EAAC,YAAY,CAAC,CAAC;IAEvD,MAAM,SAAS,GAAG,MAAM,kBAAS,CAAC,eAAe,CAC/C,eAAe,EACf,MAAM,EACN,QAAQ,CACT,CAAC;IAEF,OAAO,MAAM,oBAAoB,CAC/B,OAAO,EACP,SAAS,EACT,SAAS,CAAC,YAAY;IACtB,kFAAkF;IAClF,wGAAwG;IACxG,8DAA8D;IAC9D,UAAiB,CAClB,CAAC;AACJ,CAAC;AA0CM,KAAK,UAAU,oBAAoB,CACxC,OAA4B,EAC5B,SAAoB,EACpB,YAA0B,EAC1B,UAAsB;IAEtB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,GAAG,IAAA,gBAAO,EAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,UAAU,CAAC,CAAC;IAExC,MAAM,aAAa,GAAG,IAAI,uCAAmB,CAAC,SAAS,CAAC,CAAC;IAEzD,MAAM,CAAC,UAAU,EAAE,iBAAiB,CAAC,GAAG,IAAA,6BAAa,EACnD,OAAO,EACP,YAAY,EACZ,aAAa,CAAC,eAAe,EAAE,CAChC,CAAC;IAEF,MAAM,UAAU,GAAG,eAAM,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACvE,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,IAAA,sBAAa,EAAC,UAAU,CAAC,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,IAAI,mCAAmB,CACjC,iBAAiB,EACjB,IAAA,sBAAa,EAAC,aAAa,CAAC,CAC7B,CAAC;IAEF,OAAO,IAAI,mCAAmB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAClD,CAAC;AA8CM,KAAK,UAAU,OAAO,CAC3B,YAA0B,EAC1B,MAAc,EACd,UAA+B,EAC/B,OAA0B,EAC1B,UAAqB;IAErB,MAAM,cAAc,GAAa,UAAU;QACzC,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,MAAM,IAAA,sBAAa,EAAC,MAAM,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,qBAAY,CAAC,cAAc,CAAC,CAAC;IAEhD,MAAM,eAAe,GAAG,IAAA,yBAAgB,EAAC,YAAY,CAAC,CAAC;IAEvD,MAAM,QAAQ,GAAG,MAAM,4BAAmB,CAAC,wBAAwB,CACjE,eAAe,EACf,MAAM,EACN,UAAU,CAAC,GAAG,CAAC,SAAS,CACzB,CAAC;IACF,OAAO,IAAA,4BAAkB,EACvB,eAAe,EACf,MAAM,EACN,MAAM,EACN,UAAU,EACV,QAAQ,EACR,OAAO,CACR,CAAC;AACJ,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { DkgPublicKey, ThresholdMessageKit } from '@nucypher/nucypher-core';
2
2
  import { Domain, PorterClient } from '@nucypher/shared';
3
3
  import { ethers } from 'ethers';
4
- import { ConditionExpression } from './conditions/condition-expr';
5
- import { ConditionContext } from './conditions/context';
4
+ import { ConditionExpression } from './conditions/condition-expr.js';
5
+ import { ConditionContext } from './conditions/context/index.js';
6
6
  export declare const encryptMessage: (plaintext: Uint8Array | string, encryptingKey: DkgPublicKey, conditions: ConditionExpression, authSigner: ethers.Signer) => Promise<ThresholdMessageKit>;
7
7
  export declare const retrieveAndDecrypt: (provider: ethers.providers.Provider, domain: Domain, porter: PorterClient, thresholdMessageKit: ThresholdMessageKit, ritualId: number, context?: ConditionContext) => Promise<Uint8Array>;
package/dist/cjs/tdec.js CHANGED
@@ -3,15 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.retrieveAndDecrypt = exports.encryptMessage = void 0;
4
4
  const nucypher_core_1 = require("@nucypher/nucypher-core");
5
5
  const shared_1 = require("@nucypher/shared");
6
- const utils_1 = require("ethers/lib/utils");
7
- const context_1 = require("./conditions/context");
8
- const dkg_1 = require("./dkg");
6
+ const ethers_1 = require("ethers");
7
+ const index_js_1 = require("./conditions/context/index.js");
8
+ const dkg_js_1 = require("./dkg.js");
9
9
  const ERR_DECRYPTION_FAILED = (errors) => `Threshold of responses not met; TACo decryption failed with errors: ${JSON.stringify(errors)}`;
10
10
  const ERR_RITUAL_ID_MISMATCH = (expectedRitualId, ritualIds) => `Ritual id mismatch. Expected ${expectedRitualId}, got ${ritualIds}`;
11
11
  const encryptMessage = async (plaintext, encryptingKey, conditions, authSigner) => {
12
12
  const [ciphertext, authenticatedData] = (0, nucypher_core_1.encryptForDkg)(plaintext instanceof Uint8Array ? plaintext : (0, shared_1.toBytes)(plaintext), encryptingKey, conditions.toCoreCondition());
13
- const headerHash = (0, utils_1.keccak256)(ciphertext.header.toBytes());
14
- const authorization = await authSigner.signMessage((0, utils_1.arrayify)(headerHash));
13
+ const headerHash = ethers_1.ethers.utils.keccak256(ciphertext.header.toBytes());
14
+ const authorization = await authSigner.signMessage(ethers_1.ethers.utils.arrayify(headerHash));
15
15
  const acp = new nucypher_core_1.AccessControlPolicy(authenticatedData, (0, shared_1.toBytes)(authorization));
16
16
  return new nucypher_core_1.ThresholdMessageKit(ciphertext, acp);
17
17
  };
@@ -25,11 +25,11 @@ const retrieveAndDecrypt = async (provider, domain, porter, thresholdMessageKit,
25
25
  exports.retrieveAndDecrypt = retrieveAndDecrypt;
26
26
  // Retrieve decryption shares
27
27
  const retrieve = async (provider, domain, porter, thresholdMessageKit, ritualId, context) => {
28
- const ritual = await dkg_1.DkgClient.getActiveRitual(provider, domain, ritualId);
28
+ const ritual = await dkg_js_1.DkgClient.getActiveRitual(provider, domain, ritualId);
29
29
  const dkgParticipants = await shared_1.DkgCoordinatorAgent.getParticipants(provider, domain, ritualId, ritual.sharesNum);
30
30
  const conditionContext = context
31
31
  ? context
32
- : context_1.ConditionContext.fromMessageKit(thresholdMessageKit);
32
+ : index_js_1.ConditionContext.fromMessageKit(thresholdMessageKit);
33
33
  const { sharedSecrets, encryptedRequests } = await makeDecryptionRequests(ritualId, conditionContext, dkgParticipants, thresholdMessageKit);
34
34
  const { encryptedResponses, errors } = await porter.tacoDecrypt(encryptedRequests, ritual.threshold);
35
35
  if (Object.keys(encryptedResponses).length < ritual.threshold) {
@@ -1 +1 @@
1
- {"version":3,"file":"tdec.js","sourceRoot":"","sources":["../../src/tdec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tdec.js","sourceRoot":"","sources":["../../src/tdec.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1 @@
1
1
  export { Conditions as CoreConditions, Context as CoreContext, } from '@nucypher/nucypher-core';
2
- export type { UserOperation } from '@nucypher/shared';
@@ -0,0 +1,237 @@
1
+ import { DkgPublicKey, ThresholdMessageKit } from '@nucypher/nucypher-core';
2
+ import { SignerAccount } from '@nucypher/shared';
3
+ import { ethers } from 'ethers';
4
+ import { Condition } from '../conditions/condition.js';
5
+ import { ConditionContext } from '../conditions/context/index.js';
6
+ import { type AccessClientConfig } from './config.js';
7
+ /**
8
+ * AccessClient provides an object-oriented interface for TACo cryptographic operations
9
+ *
10
+ * This class encapsulates TACo access-control configuration and provides simplified methods
11
+ * for encryption and decryption operations. It handles configuration validation,
12
+ * automatic WASM initialization, and provides enhanced error messages.
13
+ *
14
+ * @example Using with viem:
15
+ * ```typescript
16
+ * import { AccessClient, DOMAIN_NAMES } from '@nucypher/taco';
17
+ * import { createPublicClient, http } from 'viem';
18
+ * import { polygonAmoy } from 'viem/chains';
19
+ * import { privateKeyToAccount } from 'viem/accounts';
20
+ *
21
+ * // Create viem client and account
22
+ * const viemClient = createPublicClient({
23
+ * chain: polygonAmoy,
24
+ * transport: http()
25
+ * });
26
+ * const viemAccount = privateKeyToAccount('0x...');
27
+ *
28
+ * // Create AccessClient - WASM initializes automatically
29
+ * const accessClient = new AccessClient({
30
+ * domain: DOMAIN_NAMES.TESTNET, // 'tapir'
31
+ * ritualId: 6,
32
+ * viemClient
33
+ * });
34
+ *
35
+ * // Pass signer to encrypt operation
36
+ * const messageKit = await accessClient.encrypt('Hello, secret!', condition, viemAccount);
37
+ * // Decrypt doesn't require signer
38
+ * const decrypted = await accessClient.decrypt(messageKit, conditionContext);
39
+ * ```
40
+ *
41
+ * @example Using with ethers.js:
42
+ * ```typescript
43
+ * import { AccessClient, DOMAIN_NAMES } from '@nucypher/taco';
44
+ * import { ethers } from 'ethers';
45
+ *
46
+ * // Create ethers provider and signer
47
+ * const ethersProvider = new ethers.providers.JsonRpcProvider('https://rpc-amoy.polygon.technology');
48
+ * const ethersSigner = new ethers.Wallet('0x...', ethersProvider);
49
+ *
50
+ * // Create AccessClient - WASM initializes automatically
51
+ * const accessClient = new AccessClient({
52
+ * domain: DOMAIN_NAMES.TESTNET,
53
+ * ritualId: 6,
54
+ * ethersProvider
55
+ * });
56
+ *
57
+ * // Pass signer to encrypt operation
58
+ * const messageKit = await accessClient.encrypt('Hello, secret!', condition, ethersSigner);
59
+ * // Decrypt doesn't require signer
60
+ * const decrypted = await accessClient.decrypt(messageKit, conditionContext);
61
+ * ```
62
+ */
63
+ export declare class AccessClient {
64
+ private config;
65
+ private static initializationPromise;
66
+ /**
67
+ * Initialize TACo WASM globally (singleton pattern)
68
+ *
69
+ * This method ensures TACo WASM is initialized exactly once across all AccessClient instances.
70
+ * Initialization happens automatically when creating clients or calling operations, but you can
71
+ * call this explicitly for performance optimization or error handling.
72
+ *
73
+ * @returns {Promise<void>} Promise that resolves when TACo WASM is initialized
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * // Optional: Pre-initialize for better performance
78
+ * await AccessClient.initialize();
79
+ *
80
+ * // All AccessClient instances share the same initialization
81
+ * const client1 = new AccessClient(config1);
82
+ * const client2 = new AccessClient(config2);
83
+ *
84
+ * // Operations automatically wait for initialization
85
+ * const encrypted = await client1.encrypt(data, condition);
86
+ * ```
87
+ */
88
+ static initialize(): Promise<void>;
89
+ /**
90
+ * Create a new AccessClient instance
91
+ *
92
+ * @param {AccessClientConfig} config - Configuration for the AccessClient
93
+ * @throws {Error} If configuration is invalid
94
+ */
95
+ constructor(config: AccessClientConfig);
96
+ /**
97
+ * Fully validate the configuration including network provider checks
98
+ *
99
+ * This method performs comprehensive validation including:
100
+ * - Domain and ritual ID validation
101
+ * - Provider/signer configuration validation
102
+ * - Network compatibility check (calls provider to verify chain ID matches domain)
103
+ *
104
+ * @returns {Promise<ValidationResult>} Promise resolving to validation result with isValid boolean and errors array
105
+ * @throws {Error} If configuration validation fails
106
+ *
107
+ * @example
108
+ * ```typescript
109
+ * try {
110
+ * await accessClient.validateConfig();
111
+ * console.log('Configuration is valid.');
112
+ * } catch (error) {
113
+ * console.error('Configuration validation failed:', error.message);
114
+ * }
115
+ * ```
116
+ */
117
+ validateConfig(): Promise<void>;
118
+ /**
119
+ * Encrypt data with the given access condition.
120
+ *
121
+ * Use this overload when your application uses ethers.js.
122
+ *
123
+ * @export
124
+ * @param {string | Uint8Array} data - String or Uint8Array to encrypt
125
+ * @param {Condition} accessCondition - Access condition (single or composite) that must be satisfied at decryption time.
126
+ * @param {ethers.Signer} authSigner - Signer used to identify encryptor and verify authorization.
127
+ *
128
+ * @returns {Promise<ThresholdMessageKit>} Encrypted message kit representing the ciphertext and associated metadata.
129
+ *
130
+ * @throws {Error} If the ritual cannot be retrieved or encryption fails.
131
+ *
132
+ * @example
133
+ * ```typescript
134
+ * const messageKit = await accessClient.encrypt('Hello, secret!', condition, authSigner);
135
+ * ```
136
+ */
137
+ encrypt(data: string | Uint8Array, accessCondition: Condition, authSigner: ethers.Signer): Promise<ThresholdMessageKit>;
138
+ /**
139
+ * Encrypt data with the given access condition.
140
+ *
141
+ * Use this overload when your application uses viem.
142
+ *
143
+ * @export
144
+ * @param {string | Uint8Array} data - String or Uint8Array to encrypt
145
+ * @param {Condition} accessCondition - Access condition (single or composite) that must be satisfied at decryption time.
146
+ * @param {SignerAccount} authAccount - Viem account used to identify encryptor and verify authorization.
147
+ *
148
+ * @returns {Promise<ThresholdMessageKit>} Encrypted message kit representing the ciphertext and associated metadata.
149
+ *
150
+ * @throws {Error} If the ritual cannot be retrieved or encryption fails.
151
+ * @example
152
+ * ```typescript
153
+ * const messageKit = await accessClient.encrypt('Hello, secret!', condition, authAccount);
154
+ * ```
155
+ */
156
+ encrypt(data: string | Uint8Array, accessCondition: Condition, authAccount: SignerAccount): Promise<ThresholdMessageKit>;
157
+ /**
158
+ * Encrypt data with a provided DKG public key under a specified condition
159
+ *
160
+ * This method can be used offline since it doesn't require network access to fetch
161
+ * the DKG public key (unlike the `encrypt` method which fetches it from the ritual).
162
+ *
163
+ * Use this overload when your application uses ethers.js.
164
+ *
165
+ * @export
166
+ * @param {string | Uint8Array} data - String or Uint8Array to encrypt
167
+ * @param {Condition} condition - Access condition (single or composite) that must be satisfied at decryption time.
168
+ * @param {DkgPublicKey} dkgPublicKey - The public key of an active DKG Ritual to be used for encryption
169
+ * @param {ethers.Signer} authSigner - ethers.Signer used to identify encryptor and verify authorization.
170
+ *
171
+ * @returns {Promise<ThresholdMessageKit>} Encrypted message kit representing the ciphertext and associated metadata.
172
+ *
173
+ * @throws {Error} If encryption fails
174
+ *
175
+ * @example
176
+ * ```typescript
177
+ * // Get DKG public key from ritual or cache
178
+ * const dkgPublicKey = await getDkgPublicKey(domain, ritualId);
179
+ *
180
+ * // Encrypt offline using the public key
181
+ * const messageKit = await accessClient.encryptWithPublicKey('Hello, secret!', condition, dkgPublicKey, authSigner);
182
+ * ```
183
+ */
184
+ encryptWithPublicKey(data: Uint8Array | string, condition: Condition, dkgPublicKey: DkgPublicKey, authSigner: ethers.Signer): Promise<ThresholdMessageKit>;
185
+ /**
186
+ * Encrypt data with a provided DKG public key under a specified condition
187
+ *
188
+ * This method can be used offline since it doesn't require network access to fetch
189
+ * the DKG public key (unlike the `encrypt` method which fetches it from the ritual).
190
+ *
191
+ * Use this overload when your application uses viem.
192
+ *
193
+ * @export
194
+ * @param {string | Uint8Array} data - String or Uint8Array to encrypt
195
+ * @param {Condition} condition - Access condition (single or composite) that must be satisfied at decryption time.
196
+ * @param {DkgPublicKey} dkgPublicKey - The public key of an active DKG Ritual to be used for encryption
197
+ * @param {SignerAccount} authAccount - Viem signer account used to identify encryptor and verify authorization.
198
+ *
199
+ * @returns {Promise<ThresholdMessageKit>} Encrypted message kit representing the ciphertext and associated metadata.
200
+ *
201
+ * @throws {Error} If encryption fails
202
+ *
203
+ * @example
204
+ * ```typescript
205
+ * // Get DKG public key from ritual or cache
206
+ * const dkgPublicKey = await getDkgPublicKey(domain, ritualId);
207
+ *
208
+ * // Encrypt offline using the public key
209
+ * const messageKit = await accessClient.encryptWithPublicKey('Hello, secret!', condition, dkgPublicKey, authAccount);
210
+ * ```
211
+ */
212
+ encryptWithPublicKey(data: Uint8Array | string, condition: Condition, dkgPublicKey: DkgPublicKey, authAccount: SignerAccount): Promise<ThresholdMessageKit>;
213
+ /**
214
+ * Decrypt data using TACo
215
+ *
216
+ * @param {ThresholdMessageKit | Uint8Array} encryptedData - Either a ThresholdMessageKit or encrypted bytes (Uint8Array)
217
+ * @param {ConditionContext} [conditionContext] - Optional condition context for time-based conditions
218
+ * @returns {Promise<Uint8Array>} Decrypted data
219
+ * @throws {Error} If decryption fails
220
+ *
221
+ * @example
222
+ * ```typescript
223
+ * // With messageKit
224
+ * const decrypted = await accessClient.decrypt(messageKit, conditionContext);
225
+ *
226
+ * // With encrypted bytes
227
+ * const decrypted = await accessClient.decrypt(encryptedBytes, conditionContext);
228
+ * ```
229
+ */
230
+ decrypt(encryptedData: ThresholdMessageKit | Uint8Array, conditionContext?: ConditionContext): Promise<Uint8Array>;
231
+ /**
232
+ * Get current client configuration
233
+ *
234
+ * @returns {Readonly<AccessClientConfig>} Client configuration
235
+ */
236
+ getConfig(): Readonly<AccessClientConfig>;
237
+ }
@@ -0,0 +1,192 @@
1
+ import { initialize, ThresholdMessageKit, } from '@nucypher/nucypher-core';
2
+ import { decrypt, encrypt, encryptWithPublicKey } from '../taco.js';
3
+ import { AccessConfigValidator } from './config-validator.js';
4
+ /**
5
+ * AccessClient provides an object-oriented interface for TACo cryptographic operations
6
+ *
7
+ * This class encapsulates TACo access-control configuration and provides simplified methods
8
+ * for encryption and decryption operations. It handles configuration validation,
9
+ * automatic WASM initialization, and provides enhanced error messages.
10
+ *
11
+ * @example Using with viem:
12
+ * ```typescript
13
+ * import { AccessClient, DOMAIN_NAMES } from '@nucypher/taco';
14
+ * import { createPublicClient, http } from 'viem';
15
+ * import { polygonAmoy } from 'viem/chains';
16
+ * import { privateKeyToAccount } from 'viem/accounts';
17
+ *
18
+ * // Create viem client and account
19
+ * const viemClient = createPublicClient({
20
+ * chain: polygonAmoy,
21
+ * transport: http()
22
+ * });
23
+ * const viemAccount = privateKeyToAccount('0x...');
24
+ *
25
+ * // Create AccessClient - WASM initializes automatically
26
+ * const accessClient = new AccessClient({
27
+ * domain: DOMAIN_NAMES.TESTNET, // 'tapir'
28
+ * ritualId: 6,
29
+ * viemClient
30
+ * });
31
+ *
32
+ * // Pass signer to encrypt operation
33
+ * const messageKit = await accessClient.encrypt('Hello, secret!', condition, viemAccount);
34
+ * // Decrypt doesn't require signer
35
+ * const decrypted = await accessClient.decrypt(messageKit, conditionContext);
36
+ * ```
37
+ *
38
+ * @example Using with ethers.js:
39
+ * ```typescript
40
+ * import { AccessClient, DOMAIN_NAMES } from '@nucypher/taco';
41
+ * import { ethers } from 'ethers';
42
+ *
43
+ * // Create ethers provider and signer
44
+ * const ethersProvider = new ethers.providers.JsonRpcProvider('https://rpc-amoy.polygon.technology');
45
+ * const ethersSigner = new ethers.Wallet('0x...', ethersProvider);
46
+ *
47
+ * // Create AccessClient - WASM initializes automatically
48
+ * const accessClient = new AccessClient({
49
+ * domain: DOMAIN_NAMES.TESTNET,
50
+ * ritualId: 6,
51
+ * ethersProvider
52
+ * });
53
+ *
54
+ * // Pass signer to encrypt operation
55
+ * const messageKit = await accessClient.encrypt('Hello, secret!', condition, ethersSigner);
56
+ * // Decrypt doesn't require signer
57
+ * const decrypted = await accessClient.decrypt(messageKit, conditionContext);
58
+ * ```
59
+ */
60
+ export class AccessClient {
61
+ config;
62
+ static initializationPromise;
63
+ /**
64
+ * Initialize TACo WASM globally (singleton pattern)
65
+ *
66
+ * This method ensures TACo WASM is initialized exactly once across all AccessClient instances.
67
+ * Initialization happens automatically when creating clients or calling operations, but you can
68
+ * call this explicitly for performance optimization or error handling.
69
+ *
70
+ * @returns {Promise<void>} Promise that resolves when TACo WASM is initialized
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * // Optional: Pre-initialize for better performance
75
+ * await AccessClient.initialize();
76
+ *
77
+ * // All AccessClient instances share the same initialization
78
+ * const client1 = new AccessClient(config1);
79
+ * const client2 = new AccessClient(config2);
80
+ *
81
+ * // Operations automatically wait for initialization
82
+ * const encrypted = await client1.encrypt(data, condition);
83
+ * ```
84
+ */
85
+ static async initialize() {
86
+ if (!AccessClient.initializationPromise) {
87
+ AccessClient.initializationPromise = (async () => {
88
+ try {
89
+ await initialize();
90
+ }
91
+ catch (error) {
92
+ console.error(`TACo initialization failed: ${error}`);
93
+ throw error; // Re-throw to maintain error propagation
94
+ }
95
+ })();
96
+ }
97
+ return AccessClient.initializationPromise;
98
+ }
99
+ /**
100
+ * Create a new AccessClient instance
101
+ *
102
+ * @param {AccessClientConfig} config - Configuration for the AccessClient
103
+ * @throws {Error} If configuration is invalid
104
+ */
105
+ constructor(config) {
106
+ // Validate configuration using AccessConfig
107
+ const result = AccessConfigValidator.validateFast(config);
108
+ if (!result.isValid) {
109
+ throw new Error(`Invalid configuration: ${result.errors.join(', ')}`);
110
+ }
111
+ this.config = config;
112
+ AccessClient.initialize();
113
+ }
114
+ /**
115
+ * Fully validate the configuration including network provider checks
116
+ *
117
+ * This method performs comprehensive validation including:
118
+ * - Domain and ritual ID validation
119
+ * - Provider/signer configuration validation
120
+ * - Network compatibility check (calls provider to verify chain ID matches domain)
121
+ *
122
+ * @returns {Promise<ValidationResult>} Promise resolving to validation result with isValid boolean and errors array
123
+ * @throws {Error} If configuration validation fails
124
+ *
125
+ * @example
126
+ * ```typescript
127
+ * try {
128
+ * await accessClient.validateConfig();
129
+ * console.log('Configuration is valid.');
130
+ * } catch (error) {
131
+ * console.error('Configuration validation failed:', error.message);
132
+ * }
133
+ * ```
134
+ */
135
+ async validateConfig() {
136
+ const validationResult = await AccessConfigValidator.validate(this.config);
137
+ if (!validationResult.isValid) {
138
+ throw new Error(`Invalid configuration: ${validationResult.errors.join(', ')}`);
139
+ }
140
+ }
141
+ async encrypt(data, accessCondition, signerLike) {
142
+ await AccessClient.initialize();
143
+ const messageKit = await encrypt(this.config.ethersProvider ||
144
+ this.config.viemClient, this.config.domain, data, accessCondition, this.config.ritualId,
145
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
146
+ signerLike);
147
+ return messageKit;
148
+ }
149
+ async encryptWithPublicKey(data, accessCondition, dkgPublicKey, signerLike) {
150
+ await AccessClient.initialize();
151
+ const messageKit = await encryptWithPublicKey(data, accessCondition, dkgPublicKey,
152
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
153
+ signerLike);
154
+ return messageKit;
155
+ }
156
+ /**
157
+ * Decrypt data using TACo
158
+ *
159
+ * @param {ThresholdMessageKit | Uint8Array} encryptedData - Either a ThresholdMessageKit or encrypted bytes (Uint8Array)
160
+ * @param {ConditionContext} [conditionContext] - Optional condition context for time-based conditions
161
+ * @returns {Promise<Uint8Array>} Decrypted data
162
+ * @throws {Error} If decryption fails
163
+ *
164
+ * @example
165
+ * ```typescript
166
+ * // With messageKit
167
+ * const decrypted = await accessClient.decrypt(messageKit, conditionContext);
168
+ *
169
+ * // With encrypted bytes
170
+ * const decrypted = await accessClient.decrypt(encryptedBytes, conditionContext);
171
+ * ```
172
+ */
173
+ async decrypt(encryptedData, conditionContext) {
174
+ await AccessClient.initialize();
175
+ // Handle both messageKit and encrypted bytes
176
+ const messageKit = encryptedData instanceof ThresholdMessageKit
177
+ ? encryptedData
178
+ : ThresholdMessageKit.fromBytes(encryptedData);
179
+ const decrypted = await decrypt(this.config.ethersProvider ||
180
+ this.config.viemClient, this.config.domain, messageKit, conditionContext, this.config.porterUris);
181
+ return decrypted;
182
+ }
183
+ /**
184
+ * Get current client configuration
185
+ *
186
+ * @returns {Readonly<AccessClientConfig>} Client configuration
187
+ */
188
+ getConfig() {
189
+ return Object.freeze({ ...this.config });
190
+ }
191
+ }
192
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/access-client/client.ts"],"names":[],"mappings":"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"}