@nucypher/taco 0.1.0-rc.6 → 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 (108) hide show
  1. package/README.md +63 -1
  2. package/dist/cjs/conditions/base/contract.d.ts +17 -12
  3. package/dist/cjs/conditions/base/contract.js +17 -3
  4. package/dist/cjs/conditions/base/contract.js.map +1 -1
  5. package/dist/cjs/conditions/base/index.d.ts +3 -21
  6. package/dist/cjs/conditions/base/index.js +27 -37
  7. package/dist/cjs/conditions/base/index.js.map +1 -1
  8. package/dist/cjs/conditions/base/rpc.d.ts +16 -11
  9. package/dist/cjs/conditions/base/rpc.js +16 -6
  10. package/dist/cjs/conditions/base/rpc.js.map +1 -1
  11. package/dist/cjs/conditions/base/time.d.ts +10 -5
  12. package/dist/cjs/conditions/base/time.js +11 -1
  13. package/dist/cjs/conditions/base/time.js.map +1 -1
  14. package/dist/cjs/conditions/compound-condition.d.ts +10 -0
  15. package/dist/cjs/conditions/compound-condition.js +52 -5
  16. package/dist/cjs/conditions/compound-condition.js.map +1 -1
  17. package/dist/cjs/conditions/condition-expr.js +2 -2
  18. package/dist/cjs/conditions/condition-expr.js.map +1 -1
  19. package/dist/cjs/conditions/condition-factory.d.ts +4 -0
  20. package/dist/cjs/conditions/condition-factory.js +26 -0
  21. package/dist/cjs/conditions/condition-factory.js.map +1 -0
  22. package/dist/cjs/conditions/condition.d.ts +0 -1
  23. package/dist/cjs/conditions/condition.js +0 -22
  24. package/dist/cjs/conditions/condition.js.map +1 -1
  25. package/dist/cjs/conditions/const.d.ts +3 -0
  26. package/dist/cjs/conditions/const.js +6 -2
  27. package/dist/cjs/conditions/const.js.map +1 -1
  28. package/dist/cjs/conditions/context/context.d.ts +0 -2
  29. package/dist/cjs/conditions/context/context.js +7 -10
  30. package/dist/cjs/conditions/context/context.js.map +1 -1
  31. package/dist/cjs/conditions/index.d.ts +5 -6
  32. package/dist/cjs/conditions/index.js +7 -14
  33. package/dist/cjs/conditions/index.js.map +1 -1
  34. package/dist/cjs/conditions/predefined/erc721.d.ts +2 -2
  35. package/dist/cjs/conditions/predefined/erc721.js +5 -11
  36. package/dist/cjs/conditions/predefined/erc721.js.map +1 -1
  37. package/dist/cjs/conditions/predefined/index.d.ts +1 -1
  38. package/dist/cjs/conditions/predefined/index.js +25 -4
  39. package/dist/cjs/conditions/predefined/index.js.map +1 -1
  40. package/dist/cjs/conditions/{base/shared.d.ts → shared.d.ts} +7 -3
  41. package/dist/cjs/conditions/shared.js +31 -0
  42. package/dist/cjs/conditions/shared.js.map +1 -0
  43. package/dist/cjs/dkg.d.ts +1 -1
  44. package/dist/cjs/dkg.js +6 -4
  45. package/dist/cjs/dkg.js.map +1 -1
  46. package/dist/cjs/taco.d.ts +70 -1
  47. package/dist/cjs/taco.js +72 -4
  48. package/dist/cjs/taco.js.map +1 -1
  49. package/dist/cjs/tdec.d.ts +2 -1
  50. package/dist/cjs/tdec.js +6 -4
  51. package/dist/cjs/tdec.js.map +1 -1
  52. package/dist/es/conditions/base/contract.d.ts +17 -12
  53. package/dist/es/conditions/base/contract.js +15 -2
  54. package/dist/es/conditions/base/contract.js.map +1 -1
  55. package/dist/es/conditions/base/index.d.ts +3 -21
  56. package/dist/es/conditions/base/index.js +3 -28
  57. package/dist/es/conditions/base/index.js.map +1 -1
  58. package/dist/es/conditions/base/rpc.d.ts +16 -11
  59. package/dist/es/conditions/base/rpc.js +14 -5
  60. package/dist/es/conditions/base/rpc.js.map +1 -1
  61. package/dist/es/conditions/base/time.d.ts +10 -5
  62. package/dist/es/conditions/base/time.js +9 -0
  63. package/dist/es/conditions/base/time.js.map +1 -1
  64. package/dist/es/conditions/compound-condition.d.ts +10 -0
  65. package/dist/es/conditions/compound-condition.js +50 -4
  66. package/dist/es/conditions/compound-condition.js.map +1 -1
  67. package/dist/es/conditions/condition-expr.js +2 -2
  68. package/dist/es/conditions/condition-expr.js.map +1 -1
  69. package/dist/es/conditions/condition-factory.d.ts +4 -0
  70. package/dist/es/conditions/condition-factory.js +22 -0
  71. package/dist/es/conditions/condition-factory.js.map +1 -0
  72. package/dist/es/conditions/condition.d.ts +0 -1
  73. package/dist/es/conditions/condition.js +0 -22
  74. package/dist/es/conditions/condition.js.map +1 -1
  75. package/dist/es/conditions/const.d.ts +3 -0
  76. package/dist/es/conditions/const.js +5 -1
  77. package/dist/es/conditions/const.js.map +1 -1
  78. package/dist/es/conditions/context/context.d.ts +0 -2
  79. package/dist/es/conditions/context/context.js +3 -6
  80. package/dist/es/conditions/context/context.js.map +1 -1
  81. package/dist/es/conditions/index.d.ts +5 -6
  82. package/dist/es/conditions/index.js +5 -6
  83. package/dist/es/conditions/index.js.map +1 -1
  84. package/dist/es/conditions/predefined/erc721.d.ts +2 -2
  85. package/dist/es/conditions/predefined/erc721.js +1 -7
  86. package/dist/es/conditions/predefined/erc721.js.map +1 -1
  87. package/dist/es/conditions/predefined/index.d.ts +1 -1
  88. package/dist/es/conditions/predefined/index.js +1 -1
  89. package/dist/es/conditions/predefined/index.js.map +1 -1
  90. package/dist/es/conditions/{base/shared.d.ts → shared.d.ts} +7 -3
  91. package/dist/es/conditions/shared.js +28 -0
  92. package/dist/es/conditions/shared.js.map +1 -0
  93. package/dist/es/dkg.d.ts +1 -1
  94. package/dist/es/dkg.js +6 -4
  95. package/dist/es/dkg.js.map +1 -1
  96. package/dist/es/taco.d.ts +70 -1
  97. package/dist/es/taco.js +71 -3
  98. package/dist/es/taco.js.map +1 -1
  99. package/dist/es/tdec.d.ts +2 -1
  100. package/dist/es/tdec.js +5 -3
  101. package/dist/es/tdec.js.map +1 -1
  102. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  103. package/dist/tsconfig.es.tsbuildinfo +1 -1
  104. package/package.json +8 -7
  105. package/dist/cjs/conditions/base/shared.js +0 -17
  106. package/dist/cjs/conditions/base/shared.js.map +0 -1
  107. package/dist/es/conditions/base/shared.js +0 -14
  108. package/dist/es/conditions/base/shared.js.map +0 -1
package/README.md CHANGED
@@ -1,3 +1,65 @@
1
1
  # `@nucypher/taco`
2
2
 
3
- ## [`nucypher/nucypher-ts`](../../README.md)
3
+ ### [`nucypher/taco-web`](../../README.md)
4
+
5
+ ## Usage
6
+
7
+ First, install the package:
8
+
9
+ ```bash
10
+ $ yarn add @nucypher/taco ethers@5.7.2
11
+ ```
12
+
13
+ ### Encrypt your data
14
+
15
+ ```typescript
16
+ import { conditions, domains, encrypt, initialize } from '@nucypher/taco';
17
+ import { ethers } from 'ethers';
18
+
19
+ // We have to initialize the TACo library first
20
+ await initialize();
21
+
22
+ const web3Provider = new ethers.providers.Web3Provider(window.ethereum);
23
+
24
+ const ownsNFT = new conditions.predefined.ERC721Ownership({
25
+ contractAddress: '0x1e988ba4692e52Bc50b375bcC8585b95c48AaD77',
26
+ parameters: [3591],
27
+ chain: 5,
28
+ });
29
+
30
+ const message = 'my secret message';
31
+
32
+ const messageKit = await encrypt(
33
+ web3Provider,
34
+ domains.TESTNET,
35
+ message,
36
+ ownsNFT,
37
+ ritualId,
38
+ web3Provider.getSigner(),
39
+ );
40
+ ```
41
+
42
+ ### Decrypt your data
43
+
44
+ ```typescript
45
+ import { decrypt, domains, getPorterUri, initialize } from '@nucypher/taco';
46
+ import { ethers } from 'ethers';
47
+
48
+ // We have to initialize the TACo library first
49
+ await initialize();
50
+
51
+ const web3Provider = new ethers.providers.Web3Provider(window.ethereum);
52
+
53
+ const decryptedMessage = await decrypt(
54
+ web3Provider,
55
+ domains.TESTNET,
56
+ messageKit,
57
+ getPorterUri(domains.TESTNET),
58
+ web3Provider.getSigner(),
59
+ );
60
+ ```
61
+
62
+ ## Learn more
63
+
64
+ Please find developer documentation for
65
+ TACo [here](https://docs.threshold.network/app-development/threshold-access-control-tac).
@@ -1,4 +1,6 @@
1
1
  import { z } from 'zod';
2
+ import { Condition } from '../condition';
3
+ import { OmitConditionType } from '../shared';
2
4
  declare const functionAbiSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
3
5
  name: z.ZodString;
4
6
  type: z.ZodLiteral<"function">;
@@ -145,15 +147,15 @@ export declare const contractConditionSchema: z.ZodEffects<z.ZodObject<{
145
147
  returnValueTest: z.ZodObject<{
146
148
  index: z.ZodOptional<z.ZodNumber>;
147
149
  comparator: z.ZodEnum<["==", ">", "<", ">=", "<=", "!="]>;
148
- value: z.ZodUnknown;
150
+ value: z.ZodType<any, z.ZodTypeDef, any>;
149
151
  }, "strip", z.ZodTypeAny, {
150
152
  comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
151
153
  index?: number | undefined;
152
- value?: unknown;
154
+ value?: any;
153
155
  }, {
154
156
  comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
155
157
  index?: number | undefined;
156
- value?: unknown;
158
+ value?: any;
157
159
  }>;
158
160
  conditionType: z.ZodDefault<z.ZodLiteral<"contract">>;
159
161
  contractAddress: z.ZodString;
@@ -298,15 +300,15 @@ export declare const contractConditionSchema: z.ZodEffects<z.ZodObject<{
298
300
  }[]];
299
301
  stateMutability: "view" | "pure";
300
302
  }>>;
301
- parameters: z.ZodArray<z.ZodUnknown, "many">;
303
+ parameters: z.ZodArray<z.ZodType<any, z.ZodTypeDef, any>, "many">;
302
304
  }, "strip", z.ZodTypeAny, {
303
305
  conditionType: "contract";
304
306
  method: string;
305
- parameters: unknown[];
307
+ parameters: any[];
306
308
  returnValueTest: {
307
309
  comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
308
310
  index?: number | undefined;
309
- value?: unknown;
311
+ value?: any;
310
312
  };
311
313
  contractAddress: string;
312
314
  chain?: z.Primitive;
@@ -332,11 +334,11 @@ export declare const contractConditionSchema: z.ZodEffects<z.ZodObject<{
332
334
  } | undefined;
333
335
  }, {
334
336
  method: string;
335
- parameters: unknown[];
337
+ parameters: any[];
336
338
  returnValueTest: {
337
339
  comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
338
340
  index?: number | undefined;
339
- value?: unknown;
341
+ value?: any;
340
342
  };
341
343
  contractAddress: string;
342
344
  chain?: z.Primitive;
@@ -364,11 +366,11 @@ export declare const contractConditionSchema: z.ZodEffects<z.ZodObject<{
364
366
  }>, {
365
367
  conditionType: "contract";
366
368
  method: string;
367
- parameters: unknown[];
369
+ parameters: any[];
368
370
  returnValueTest: {
369
371
  comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
370
372
  index?: number | undefined;
371
- value?: unknown;
373
+ value?: any;
372
374
  };
373
375
  contractAddress: string;
374
376
  chain?: z.Primitive;
@@ -394,11 +396,11 @@ export declare const contractConditionSchema: z.ZodEffects<z.ZodObject<{
394
396
  } | undefined;
395
397
  }, {
396
398
  method: string;
397
- parameters: unknown[];
399
+ parameters: any[];
398
400
  returnValueTest: {
399
401
  comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
400
402
  index?: number | undefined;
401
- value?: unknown;
403
+ value?: any;
402
404
  };
403
405
  contractAddress: string;
404
406
  chain?: z.Primitive;
@@ -425,4 +427,7 @@ export declare const contractConditionSchema: z.ZodEffects<z.ZodObject<{
425
427
  } | undefined;
426
428
  }>;
427
429
  export type ContractConditionProps = z.infer<typeof contractConditionSchema>;
430
+ export declare class ContractCondition extends Condition {
431
+ constructor(value: OmitConditionType<ContractConditionProps>);
432
+ }
428
433
  export {};
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.contractConditionSchema = exports.ContractConditionType = void 0;
3
+ exports.ContractCondition = exports.contractConditionSchema = exports.ContractConditionType = void 0;
4
4
  const ethers_1 = require("ethers");
5
5
  const zod_1 = require("zod");
6
+ const condition_1 = require("../condition");
6
7
  const const_1 = require("../const");
8
+ const shared_1 = require("../shared");
7
9
  const rpc_1 = require("./rpc");
8
10
  // TODO: Consider replacing with `z.unknown`:
9
11
  // Since Solidity types are tied to Solidity version, we may not be able to accurately represent them in Zod.
@@ -46,6 +48,7 @@ const functionAbiSchema = zod_1.z
46
48
  return functionsInAbi.length === 1;
47
49
  }, {
48
50
  message: '"functionAbi" must contain a single function definition',
51
+ path: ['functionAbi'],
49
52
  })
50
53
  .refine((functionAbi) => {
51
54
  const asInterface = new ethers_1.ethers.utils.Interface(JSON.stringify([functionAbi]));
@@ -53,6 +56,7 @@ const functionAbiSchema = zod_1.z
53
56
  return functionAbi.inputs.length === nrOfInputs;
54
57
  }, {
55
58
  message: '"parameters" must have the same length as "functionAbi.inputs"',
59
+ path: ['parameters'],
56
60
  });
57
61
  exports.ContractConditionType = 'contract';
58
62
  exports.contractConditionSchema = rpc_1.rpcConditionSchema
@@ -60,11 +64,11 @@ exports.contractConditionSchema = rpc_1.rpcConditionSchema
60
64
  conditionType: zod_1.z
61
65
  .literal(exports.ContractConditionType)
62
66
  .default(exports.ContractConditionType),
63
- contractAddress: zod_1.z.string().regex(const_1.ETH_ADDRESS_REGEXP),
67
+ contractAddress: zod_1.z.string().regex(const_1.ETH_ADDRESS_REGEXP).length(42),
64
68
  standardContractType: zod_1.z.enum(['ERC20', 'ERC721']).optional(),
65
69
  method: zod_1.z.string(),
66
70
  functionAbi: functionAbiSchema.optional(),
67
- parameters: zod_1.z.array(zod_1.z.unknown()),
71
+ parameters: zod_1.z.array(shared_1.paramOrContextParamSchema),
68
72
  })
69
73
  // Adding this custom logic causes the return type to be ZodEffects instead of ZodObject
70
74
  // https://github.com/colinhacks/zod/issues/2474
@@ -72,5 +76,15 @@ exports.contractConditionSchema = rpc_1.rpcConditionSchema
72
76
  // A check to see if either 'standardContractType' or 'functionAbi' is set
73
77
  (data) => Boolean(data.standardContractType) !== Boolean(data.functionAbi), {
74
78
  message: "At most one of the fields 'standardContractType' and 'functionAbi' must be defined",
79
+ path: ['standardContractType'],
75
80
  });
81
+ class ContractCondition extends condition_1.Condition {
82
+ constructor(value) {
83
+ super(exports.contractConditionSchema, {
84
+ conditionType: exports.ContractConditionType,
85
+ ...value,
86
+ });
87
+ }
88
+ }
89
+ exports.ContractCondition = ContractCondition;
76
90
  //# sourceMappingURL=contract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../../src/conditions/base/contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../../src/conditions/base/contract.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,3 @@
1
- import { CompoundConditionProps } from '../compound-condition';
2
- import { Condition } from '../condition';
3
- import { ContractConditionProps } from './contract';
4
- import { RpcConditionProps } from './rpc';
5
- import { TimeConditionProps } from './time';
6
- export declare class CompoundCondition extends Condition {
7
- constructor(value: CompoundConditionProps);
8
- }
9
- export declare class ContractCondition extends Condition {
10
- constructor(value: ContractConditionProps);
11
- }
12
- export declare class RpcCondition extends Condition {
13
- constructor(value: RpcConditionProps);
14
- }
15
- export declare class TimeCondition extends Condition {
16
- constructor(value: TimeConditionProps);
17
- }
18
- export { ContractConditionType, FunctionAbiProps, type ContractConditionProps, } from './contract';
19
- export { RpcConditionType, type RpcConditionProps } from './rpc';
20
- export { ReturnValueTestProps } from './shared';
21
- export { TimeConditionMethod, TimeConditionType, type TimeConditionProps, } from './time';
1
+ export * as contract from './contract';
2
+ export * as rpc from './rpc';
3
+ export * as time from './time';
@@ -1,42 +1,32 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TimeConditionType = exports.TimeConditionMethod = exports.RpcConditionType = exports.ContractConditionType = exports.TimeCondition = exports.RpcCondition = exports.ContractCondition = exports.CompoundCondition = void 0;
4
- const compound_condition_1 = require("../compound-condition");
5
- const condition_1 = require("../condition");
6
- const contract_1 = require("./contract");
7
- const rpc_1 = require("./rpc");
8
- const time_1 = require("./time");
9
2
  // Exporting classes here instead of their respective schema files to
10
3
  // avoid circular dependency on Condition class.
11
- class CompoundCondition extends condition_1.Condition {
12
- constructor(value) {
13
- super(compound_condition_1.compoundConditionSchema, value);
14
- }
15
- }
16
- exports.CompoundCondition = CompoundCondition;
17
- class ContractCondition extends condition_1.Condition {
18
- constructor(value) {
19
- super(contract_1.contractConditionSchema, value);
20
- }
21
- }
22
- exports.ContractCondition = ContractCondition;
23
- class RpcCondition extends condition_1.Condition {
24
- constructor(value) {
25
- super(rpc_1.rpcConditionSchema, value);
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
26
9
  }
27
- }
28
- exports.RpcCondition = RpcCondition;
29
- class TimeCondition extends condition_1.Condition {
30
- constructor(value) {
31
- super(time_1.timeConditionSchema, value);
32
- }
33
- }
34
- exports.TimeCondition = TimeCondition;
35
- var contract_2 = require("./contract");
36
- Object.defineProperty(exports, "ContractConditionType", { enumerable: true, get: function () { return contract_2.ContractConditionType; } });
37
- var rpc_2 = require("./rpc");
38
- Object.defineProperty(exports, "RpcConditionType", { enumerable: true, get: function () { return rpc_2.RpcConditionType; } });
39
- var time_2 = require("./time");
40
- Object.defineProperty(exports, "TimeConditionMethod", { enumerable: true, get: function () { return time_2.TimeConditionMethod; } });
41
- Object.defineProperty(exports, "TimeConditionType", { enumerable: true, get: function () { return time_2.TimeConditionType; } });
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
17
+ }) : function(o, v) {
18
+ o["default"] = v;
19
+ });
20
+ var __importStar = (this && this.__importStar) || function (mod) {
21
+ if (mod && mod.__esModule) return mod;
22
+ var result = {};
23
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
24
+ __setModuleDefault(result, mod);
25
+ return result;
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.time = exports.rpc = exports.contract = void 0;
29
+ exports.contract = __importStar(require("./contract"));
30
+ exports.rpc = __importStar(require("./rpc"));
31
+ exports.time = __importStar(require("./time"));
42
32
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/conditions/base/index.ts"],"names":[],"mappings":";;;AAAA,8DAG+B;AAC/B,4CAAyC;AAEzC,yCAA6E;AAC7E,+BAA8D;AAC9D,iCAAiE;AAEjE,qEAAqE;AACrE,gDAAgD;AAEhD,MAAa,iBAAkB,SAAQ,qBAAS;IAC9C,YAAY,KAA6B;QACvC,KAAK,CAAC,4CAAuB,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;CACF;AAJD,8CAIC;AAED,MAAa,iBAAkB,SAAQ,qBAAS;IAC9C,YAAY,KAA6B;QACvC,KAAK,CAAC,kCAAuB,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;CACF;AAJD,8CAIC;AAED,MAAa,YAAa,SAAQ,qBAAS;IACzC,YAAY,KAAwB;QAClC,KAAK,CAAC,wBAAkB,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;CACF;AAJD,oCAIC;AAED,MAAa,aAAc,SAAQ,qBAAS;IAC1C,YAAY,KAAyB;QACnC,KAAK,CAAC,0BAAmB,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;CACF;AAJD,sCAIC;AAED,uCAIoB;AAHlB,iHAAA,qBAAqB,OAAA;AAIvB,6BAAiE;AAAxD,uGAAA,gBAAgB,OAAA;AAEzB,+BAIgB;AAHd,2GAAA,mBAAmB,OAAA;AACnB,yGAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/conditions/base/index.ts"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,gDAAgD;;;;;;;;;;;;;;;;;;;;;;;;;;AAEhD,uDAAuC;AACvC,6CAA6B;AAC7B,+CAA+B"}
@@ -1,42 +1,47 @@
1
1
  import { z } from 'zod';
2
+ import { Condition } from '../condition';
3
+ import { OmitConditionType } from '../shared';
2
4
  export declare const RpcConditionType = "rpc";
3
5
  export declare const rpcConditionSchema: z.ZodObject<{
4
6
  conditionType: z.ZodDefault<z.ZodLiteral<"rpc">>;
5
7
  chain: z.ZodNever | z.ZodLiteral<z.Primitive> | z.ZodUnion<[z.ZodLiteral<z.Primitive>, z.ZodLiteral<z.Primitive>, ...z.ZodLiteral<z.Primitive>[]]>;
6
- method: z.ZodEnum<["eth_getBalance", "balanceOf"]>;
7
- parameters: z.ZodUnion<[z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodLiteral<":userAddress">]>, "many">, z.ZodTuple<[z.ZodUnion<[z.ZodString, z.ZodLiteral<":userAddress">]>, z.ZodUnion<[z.ZodString, z.ZodNumber]>], null>]>;
8
+ method: z.ZodEnum<["eth_getBalance"]>;
9
+ parameters: z.ZodUnion<[z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodLiteral<":userAddress">]>, "atleastone">, z.ZodTuple<[z.ZodUnion<[z.ZodString, z.ZodLiteral<":userAddress">]>, z.ZodType<any, z.ZodTypeDef, any>], null>]>;
8
10
  returnValueTest: z.ZodObject<{
9
11
  index: z.ZodOptional<z.ZodNumber>;
10
12
  comparator: z.ZodEnum<["==", ">", "<", ">=", "<=", "!="]>;
11
- value: z.ZodUnknown;
13
+ value: z.ZodType<any, z.ZodTypeDef, any>;
12
14
  }, "strip", z.ZodTypeAny, {
13
15
  comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
14
16
  index?: number | undefined;
15
- value?: unknown;
17
+ value?: any;
16
18
  }, {
17
19
  comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
18
20
  index?: number | undefined;
19
- value?: unknown;
21
+ value?: any;
20
22
  }>;
21
23
  }, "strip", z.ZodTypeAny, {
22
24
  conditionType: "rpc";
23
- method: "eth_getBalance" | "balanceOf";
24
- parameters: (string[] | [string, string | number]) & (string[] | [string, string | number] | undefined);
25
+ method: "eth_getBalance";
26
+ parameters: ([string, ...string[]] | [string, any]) & ([string, ...string[]] | [string, any] | undefined);
25
27
  returnValueTest: {
26
28
  comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
27
29
  index?: number | undefined;
28
- value?: unknown;
30
+ value?: any;
29
31
  };
30
32
  chain?: z.Primitive;
31
33
  }, {
32
- method: "eth_getBalance" | "balanceOf";
33
- parameters: (string[] | [string, string | number]) & (string[] | [string, string | number] | undefined);
34
+ method: "eth_getBalance";
35
+ parameters: ([string, ...string[]] | [string, any]) & ([string, ...string[]] | [string, any] | undefined);
34
36
  returnValueTest: {
35
37
  comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
36
38
  index?: number | undefined;
37
- value?: unknown;
39
+ value?: any;
38
40
  };
39
41
  conditionType?: "rpc" | undefined;
40
42
  chain?: z.Primitive;
41
43
  }>;
42
44
  export type RpcConditionProps = z.infer<typeof rpcConditionSchema>;
45
+ export declare class RpcCondition extends Condition {
46
+ constructor(value: OmitConditionType<RpcConditionProps>);
47
+ }
@@ -3,21 +3,31 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.rpcConditionSchema = exports.RpcConditionType = void 0;
6
+ exports.RpcCondition = exports.rpcConditionSchema = exports.RpcConditionType = void 0;
7
7
  const zod_1 = require("zod");
8
+ const condition_1 = require("../condition");
8
9
  const const_1 = require("../const");
10
+ const shared_1 = require("../shared");
9
11
  const zod_2 = __importDefault(require("../zod"));
10
- const shared_1 = require("./shared");
11
12
  exports.RpcConditionType = 'rpc';
12
13
  exports.rpcConditionSchema = zod_1.z.object({
13
14
  conditionType: zod_1.z.literal(exports.RpcConditionType).default(exports.RpcConditionType),
14
15
  chain: (0, zod_2.default)(const_1.SUPPORTED_CHAIN_IDS),
15
- method: zod_1.z.enum(['eth_getBalance', 'balanceOf']),
16
+ method: zod_1.z.enum(['eth_getBalance']),
16
17
  parameters: zod_1.z.union([
17
- zod_1.z.array(shared_1.EthAddressOrUserAddressSchema).length(1),
18
+ zod_1.z.array(shared_1.EthAddressOrUserAddressSchema).nonempty(),
18
19
  // Using tuple here because ordering matters
19
- zod_1.z.tuple([shared_1.EthAddressOrUserAddressSchema, zod_1.z.union([zod_1.z.string(), zod_1.z.number()])]),
20
+ zod_1.z.tuple([shared_1.EthAddressOrUserAddressSchema, shared_1.paramOrContextParamSchema]),
20
21
  ]),
21
- returnValueTest: shared_1.returnValueTestSchema,
22
+ returnValueTest: shared_1.returnValueTestSchema, // Update to allow multiple return values after expanding supported methods
22
23
  });
24
+ class RpcCondition extends condition_1.Condition {
25
+ constructor(value) {
26
+ super(exports.rpcConditionSchema, {
27
+ conditionType: exports.RpcConditionType,
28
+ ...value,
29
+ });
30
+ }
31
+ }
32
+ exports.RpcCondition = RpcCondition;
23
33
  //# sourceMappingURL=rpc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../../../src/conditions/base/rpc.ts"],"names":[],"mappings":";;;;;;AAAA,6BAAwB;AAExB,oCAA+C;AAC/C,iDAAuC;AAEvC,qCAAgF;AAEnE,QAAA,gBAAgB,GAAG,KAAK,CAAC;AAEzB,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,aAAa,EAAE,OAAC,CAAC,OAAO,CAAC,wBAAgB,CAAC,CAAC,OAAO,CAAC,wBAAgB,CAAC;IACpE,KAAK,EAAE,IAAA,aAAiB,EAAC,2BAAmB,CAAC;IAC7C,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAC/C,UAAU,EAAE,OAAC,CAAC,KAAK,CAAC;QAClB,OAAC,CAAC,KAAK,CAAC,sCAA6B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAChD,4CAA4C;QAC5C,OAAC,CAAC,KAAK,CAAC,CAAC,sCAA6B,EAAE,OAAC,CAAC,KAAK,CAAC,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;KAC5E,CAAC;IACF,eAAe,EAAE,8BAAqB;CACvC,CAAC,CAAC"}
1
+ {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../../../src/conditions/base/rpc.ts"],"names":[],"mappings":";;;;;;AAAA,6BAAwB;AAExB,4CAAyC;AACzC,oCAA+C;AAC/C,sCAKmB;AACnB,iDAAuC;AAE1B,QAAA,gBAAgB,GAAG,KAAK,CAAC;AAEzB,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,aAAa,EAAE,OAAC,CAAC,OAAO,CAAC,wBAAgB,CAAC,CAAC,OAAO,CAAC,wBAAgB,CAAC;IACpE,KAAK,EAAE,IAAA,aAAiB,EAAC,2BAAmB,CAAC;IAC7C,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAClC,UAAU,EAAE,OAAC,CAAC,KAAK,CAAC;QAClB,OAAC,CAAC,KAAK,CAAC,sCAA6B,CAAC,CAAC,QAAQ,EAAE;QACjD,4CAA4C;QAC5C,OAAC,CAAC,KAAK,CAAC,CAAC,sCAA6B,EAAE,kCAAyB,CAAC,CAAC;KACpE,CAAC;IACF,eAAe,EAAE,8BAAqB,EAAE,2EAA2E;CACpH,CAAC,CAAC;AAIH,MAAa,YAAa,SAAQ,qBAAS;IACzC,YAAY,KAA2C;QACrD,KAAK,CAAC,0BAAkB,EAAE;YACxB,aAAa,EAAE,wBAAgB;YAC/B,GAAG,KAAK;SACT,CAAC,CAAC;IACL,CAAC;CACF;AAPD,oCAOC"}
@@ -1,4 +1,6 @@
1
1
  import { z } from 'zod';
2
+ import { Condition } from '../condition';
3
+ import { OmitConditionType } from '../shared';
2
4
  export declare const TimeConditionType = "time";
3
5
  export declare const TimeConditionMethod = "blocktime";
4
6
  export declare const timeConditionSchema: z.ZodObject<{
@@ -8,15 +10,15 @@ export declare const timeConditionSchema: z.ZodObject<{
8
10
  returnValueTest: z.ZodObject<{
9
11
  index: z.ZodOptional<z.ZodNumber>;
10
12
  comparator: z.ZodEnum<["==", ">", "<", ">=", "<=", "!="]>;
11
- value: z.ZodUnknown;
13
+ value: z.ZodType<any, z.ZodTypeDef, any>;
12
14
  }, "strip", z.ZodTypeAny, {
13
15
  comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
14
16
  index?: number | undefined;
15
- value?: unknown;
17
+ value?: any;
16
18
  }, {
17
19
  comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
18
20
  index?: number | undefined;
19
- value?: unknown;
21
+ value?: any;
20
22
  }>;
21
23
  }, "strip", z.ZodTypeAny, {
22
24
  conditionType: "time";
@@ -24,17 +26,20 @@ export declare const timeConditionSchema: z.ZodObject<{
24
26
  returnValueTest: {
25
27
  comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
26
28
  index?: number | undefined;
27
- value?: unknown;
29
+ value?: any;
28
30
  };
29
31
  chain?: z.Primitive;
30
32
  }, {
31
33
  returnValueTest: {
32
34
  comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
33
35
  index?: number | undefined;
34
- value?: unknown;
36
+ value?: any;
35
37
  };
36
38
  conditionType?: "time" | undefined;
37
39
  method?: "blocktime" | undefined;
38
40
  chain?: z.Primitive;
39
41
  }>;
40
42
  export type TimeConditionProps = z.infer<typeof timeConditionSchema>;
43
+ export declare class TimeCondition extends Condition {
44
+ constructor(value: OmitConditionType<TimeConditionProps>);
45
+ }
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.timeConditionSchema = exports.TimeConditionMethod = exports.TimeConditionType = void 0;
3
+ exports.TimeCondition = exports.timeConditionSchema = exports.TimeConditionMethod = exports.TimeConditionType = void 0;
4
4
  const zod_1 = require("zod");
5
+ const condition_1 = require("../condition");
5
6
  const rpc_1 = require("./rpc");
6
7
  // TimeCondition is an RpcCondition with the method set to 'blocktime' and no parameters
7
8
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -13,4 +14,13 @@ exports.timeConditionSchema = zod_1.z.object({
13
14
  conditionType: zod_1.z.literal(exports.TimeConditionType).default(exports.TimeConditionType),
14
15
  method: zod_1.z.literal(exports.TimeConditionMethod).default(exports.TimeConditionMethod),
15
16
  });
17
+ class TimeCondition extends condition_1.Condition {
18
+ constructor(value) {
19
+ super(exports.timeConditionSchema, {
20
+ conditionType: exports.TimeConditionType,
21
+ ...value,
22
+ });
23
+ }
24
+ }
25
+ exports.TimeCondition = TimeCondition;
16
26
  //# sourceMappingURL=time.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"time.js","sourceRoot":"","sources":["../../../../src/conditions/base/time.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,+BAA2C;AAE3C,wFAAwF;AACxF,6DAA6D;AAC7D,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,GAAG,wBAAkB,CAAC,KAAK,CAAC;AAEpD,QAAA,iBAAiB,GAAG,MAAM,CAAC;AAC3B,QAAA,mBAAmB,GAAG,WAAW,CAAC;AAElC,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,GAAG,SAAS;IACZ,aAAa,EAAE,OAAC,CAAC,OAAO,CAAC,yBAAiB,CAAC,CAAC,OAAO,CAAC,yBAAiB,CAAC;IACtE,MAAM,EAAE,OAAC,CAAC,OAAO,CAAC,2BAAmB,CAAC,CAAC,OAAO,CAAC,2BAAmB,CAAC;CACpE,CAAC,CAAC"}
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../../../../src/conditions/base/time.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,4CAAyC;AAGzC,+BAA2C;AAE3C,wFAAwF;AACxF,6DAA6D;AAC7D,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,GAAG,wBAAkB,CAAC,KAAK,CAAC;AAEpD,QAAA,iBAAiB,GAAG,MAAM,CAAC;AAC3B,QAAA,mBAAmB,GAAG,WAAW,CAAC;AAElC,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,GAAG,SAAS;IACZ,aAAa,EAAE,OAAC,CAAC,OAAO,CAAC,yBAAiB,CAAC,CAAC,OAAO,CAAC,yBAAiB,CAAC;IACtE,MAAM,EAAE,OAAC,CAAC,OAAO,CAAC,2BAAmB,CAAC,CAAC,OAAO,CAAC,2BAAmB,CAAC;CACpE,CAAC,CAAC;AAIH,MAAa,aAAc,SAAQ,qBAAS;IAC1C,YAAY,KAA4C;QACtD,KAAK,CAAC,2BAAmB,EAAE;YACzB,aAAa,EAAE,yBAAiB;YAChC,GAAG,KAAK;SACT,CAAC,CAAC;IACL,CAAC;CACF;AAPD,sCAOC"}
@@ -1,4 +1,14 @@
1
1
  import { z } from 'zod';
2
+ import { Condition, ConditionProps } from './condition';
3
+ import { OmitConditionType } from './shared';
2
4
  export declare const CompoundConditionType = "compound";
3
5
  export declare const compoundConditionSchema: z.ZodSchema;
4
6
  export type CompoundConditionProps = z.infer<typeof compoundConditionSchema>;
7
+ export type ConditionOrProps = Condition | ConditionProps;
8
+ export declare class CompoundCondition extends Condition {
9
+ constructor(value: OmitConditionType<CompoundConditionProps>);
10
+ private static withOperator;
11
+ static or(conditions: ConditionOrProps[]): CompoundCondition;
12
+ static and(conditions: ConditionOrProps[]): CompoundCondition;
13
+ static not(condition: ConditionOrProps): CompoundCondition;
14
+ }
@@ -1,16 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.compoundConditionSchema = exports.CompoundConditionType = void 0;
3
+ exports.CompoundCondition = exports.compoundConditionSchema = exports.CompoundConditionType = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const contract_1 = require("./base/contract");
6
6
  const rpc_1 = require("./base/rpc");
7
7
  const time_1 = require("./base/time");
8
+ const condition_1 = require("./condition");
8
9
  exports.CompoundConditionType = 'compound';
9
- exports.compoundConditionSchema = zod_1.z.object({
10
+ exports.compoundConditionSchema = zod_1.z
11
+ .object({
10
12
  conditionType: zod_1.z
11
13
  .literal(exports.CompoundConditionType)
12
14
  .default(exports.CompoundConditionType),
13
- operator: zod_1.z.enum(['and', 'or']),
15
+ operator: zod_1.z.enum(['and', 'or', 'not']),
14
16
  operands: zod_1.z
15
17
  .array(zod_1.z.lazy(() => zod_1.z.union([
16
18
  rpc_1.rpcConditionSchema,
@@ -18,6 +20,51 @@ exports.compoundConditionSchema = zod_1.z.object({
18
20
  contract_1.contractConditionSchema,
19
21
  exports.compoundConditionSchema,
20
22
  ])))
21
- .min(2),
22
- });
23
+ .min(1),
24
+ })
25
+ .refine((condition) => {
26
+ // 'and' and 'or' operators must have at least 2 operands
27
+ if (['and', 'or'].includes(condition.operator)) {
28
+ return condition.operands.length >= 2;
29
+ }
30
+ // 'not' operator must have exactly 1 operand
31
+ if (condition.operator === 'not') {
32
+ return condition.operands.length === 1;
33
+ }
34
+ // We test positive cases exhaustively, so we return false here:
35
+ return false;
36
+ }, ({ operands, operator }) => ({
37
+ message: `Invalid number of operands ${operands.length} for operator "${operator}"`,
38
+ path: ['operands'],
39
+ }));
40
+ class CompoundCondition extends condition_1.Condition {
41
+ constructor(value) {
42
+ super(exports.compoundConditionSchema, {
43
+ conditionType: exports.CompoundConditionType,
44
+ ...value,
45
+ });
46
+ }
47
+ static withOperator(operands, operator) {
48
+ const asObjects = operands.map((operand) => {
49
+ if (operand instanceof condition_1.Condition) {
50
+ return operand.toObj();
51
+ }
52
+ return operand;
53
+ });
54
+ return new CompoundCondition({
55
+ operator,
56
+ operands: asObjects,
57
+ });
58
+ }
59
+ static or(conditions) {
60
+ return CompoundCondition.withOperator(conditions, 'or');
61
+ }
62
+ static and(conditions) {
63
+ return CompoundCondition.withOperator(conditions, 'and');
64
+ }
65
+ static not(condition) {
66
+ return CompoundCondition.withOperator([condition], 'not');
67
+ }
68
+ }
69
+ exports.CompoundCondition = CompoundCondition;
23
70
  //# sourceMappingURL=compound-condition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compound-condition.js","sourceRoot":"","sources":["../../../src/conditions/compound-condition.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,8CAA0D;AAC1D,oCAAgD;AAChD,sCAAkD;AAErC,QAAA,qBAAqB,GAAG,UAAU,CAAC;AAEnC,QAAA,uBAAuB,GAAgB,OAAC,CAAC,MAAM,CAAC;IAC3D,aAAa,EAAE,OAAC;SACb,OAAO,CAAC,6BAAqB,CAAC;SAC9B,OAAO,CAAC,6BAAqB,CAAC;IACjC,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/B,QAAQ,EAAE,OAAC;SACR,KAAK,CACJ,OAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CACV,OAAC,CAAC,KAAK,CAAC;QACN,wBAAkB;QAClB,0BAAmB;QACnB,kCAAuB;QACvB,+BAAuB;KACxB,CAAC,CACH,CACF;SACA,GAAG,CAAC,CAAC,CAAC;CACV,CAAC,CAAC"}
1
+ {"version":3,"file":"compound-condition.js","sourceRoot":"","sources":["../../../src/conditions/compound-condition.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,8CAA0D;AAC1D,oCAAgD;AAChD,sCAAkD;AAClD,2CAAwD;AAG3C,QAAA,qBAAqB,GAAG,UAAU,CAAC;AAEnC,QAAA,uBAAuB,GAAgB,OAAC;KAClD,MAAM,CAAC;IACN,aAAa,EAAE,OAAC;SACb,OAAO,CAAC,6BAAqB,CAAC;SAC9B,OAAO,CAAC,6BAAqB,CAAC;IACjC,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACtC,QAAQ,EAAE,OAAC;SACR,KAAK,CACJ,OAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CACV,OAAC,CAAC,KAAK,CAAC;QACN,wBAAkB;QAClB,0BAAmB;QACnB,kCAAuB;QACvB,+BAAuB;KACxB,CAAC,CACH,CACF;SACA,GAAG,CAAC,CAAC,CAAC;CACV,CAAC;KACD,MAAM,CACL,CAAC,SAAS,EAAE,EAAE;IACZ,yDAAyD;IACzD,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;QAC9C,OAAO,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;KACvC;IAED,6CAA6C;IAC7C,IAAI,SAAS,CAAC,QAAQ,KAAK,KAAK,EAAE;QAChC,OAAO,SAAS,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;KACxC;IAED,gEAAgE;IAChE,OAAO,KAAK,CAAC;AACf,CAAC,EACD,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3B,OAAO,EAAE,8BAA8B,QAAQ,CAAC,MAAM,kBAAkB,QAAQ,GAAG;IACnF,IAAI,EAAE,CAAC,UAAU,CAAC;CACnB,CAAC,CACH,CAAC;AAMJ,MAAa,iBAAkB,SAAQ,qBAAS;IAC9C,YAAY,KAAgD;QAC1D,KAAK,CAAC,+BAAuB,EAAE;YAC7B,aAAa,EAAE,6BAAqB;YACpC,GAAG,KAAK;SACT,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,YAAY,CACzB,QAA4B,EAC5B,QAA8B;QAE9B,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACzC,IAAI,OAAO,YAAY,qBAAS,EAAE;gBAChC,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;aACxB;YACD,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,iBAAiB,CAAC;YAC3B,QAAQ;YACR,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,UAA8B;QAC7C,OAAO,iBAAiB,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IAEM,MAAM,CAAC,GAAG,CAAC,UAA8B;QAC9C,OAAO,iBAAiB,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAEM,MAAM,CAAC,GAAG,CAAC,SAA2B;QAC3C,OAAO,iBAAiB,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;CACF;AAnCD,8CAmCC"}
@@ -4,7 +4,7 @@ exports.ConditionExpression = void 0;
4
4
  const nucypher_core_1 = require("@nucypher/nucypher-core");
5
5
  const shared_1 = require("@nucypher/shared");
6
6
  const semver_1 = require("semver");
7
- const condition_1 = require("./condition");
7
+ const condition_factory_1 = require("./condition-factory");
8
8
  const context_1 = require("./context");
9
9
  const ERR_VERSION = (provided, current) => `Version provided, ${provided}, is incompatible with current version, ${current}`;
10
10
  const ERR_CONDITION = (condition) => `Invalid condition: unrecognized condition data ${JSON.stringify(condition)}`;
@@ -32,7 +32,7 @@ class ConditionExpression {
32
32
  if (!obj.condition) {
33
33
  throw new Error(ERR_CONDITION(obj.condition));
34
34
  }
35
- const condition = condition_1.Condition.fromObj(obj.condition);
35
+ const condition = condition_factory_1.ConditionFactory.conditionFromProps(obj.condition);
36
36
  return new ConditionExpression(condition, obj.version);
37
37
  }
38
38
  toJson() {