@nucypher/taco 0.1.0-rc.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 (137) hide show
  1. package/LICENSE +675 -0
  2. package/README.md +3 -0
  3. package/dist/cjs/conditions/base/contract.d.ts +428 -0
  4. package/dist/cjs/conditions/base/contract.js +76 -0
  5. package/dist/cjs/conditions/base/contract.js.map +1 -0
  6. package/dist/cjs/conditions/base/index.d.ts +21 -0
  7. package/dist/cjs/conditions/base/index.js +42 -0
  8. package/dist/cjs/conditions/base/index.js.map +1 -0
  9. package/dist/cjs/conditions/base/rpc.d.ts +42 -0
  10. package/dist/cjs/conditions/base/rpc.js +23 -0
  11. package/dist/cjs/conditions/base/rpc.js.map +1 -0
  12. package/dist/cjs/conditions/base/shared.d.ts +16 -0
  13. package/dist/cjs/conditions/base/shared.js +17 -0
  14. package/dist/cjs/conditions/base/shared.js.map +1 -0
  15. package/dist/cjs/conditions/base/time.d.ts +40 -0
  16. package/dist/cjs/conditions/base/time.js +16 -0
  17. package/dist/cjs/conditions/base/time.js.map +1 -0
  18. package/dist/cjs/conditions/compound-condition.d.ts +4 -0
  19. package/dist/cjs/conditions/compound-condition.js +23 -0
  20. package/dist/cjs/conditions/compound-condition.js.map +1 -0
  21. package/dist/cjs/conditions/condition-expr.d.ts +23 -0
  22. package/dist/cjs/conditions/condition-expr.js +62 -0
  23. package/dist/cjs/conditions/condition-expr.js.map +1 -0
  24. package/dist/cjs/conditions/condition.d.ts +17 -0
  25. package/dist/cjs/conditions/condition.js +61 -0
  26. package/dist/cjs/conditions/condition.js.map +1 -0
  27. package/dist/cjs/conditions/const.d.ts +4 -0
  28. package/dist/cjs/conditions/const.js +13 -0
  29. package/dist/cjs/conditions/const.js.map +1 -0
  30. package/dist/cjs/conditions/context/context.d.ts +24 -0
  31. package/dist/cjs/conditions/context/context.js +113 -0
  32. package/dist/cjs/conditions/context/context.js.map +1 -0
  33. package/dist/cjs/conditions/context/index.d.ts +1 -0
  34. package/dist/cjs/conditions/context/index.js +6 -0
  35. package/dist/cjs/conditions/context/index.js.map +1 -0
  36. package/dist/cjs/conditions/context/providers.d.ts +16 -0
  37. package/dist/cjs/conditions/context/providers.js +109 -0
  38. package/dist/cjs/conditions/context/providers.js.map +1 -0
  39. package/dist/cjs/conditions/index.d.ts +9 -0
  40. package/dist/cjs/conditions/index.js +44 -0
  41. package/dist/cjs/conditions/index.js.map +1 -0
  42. package/dist/cjs/conditions/predefined/erc721.d.ts +10 -0
  43. package/dist/cjs/conditions/predefined/erc721.js +39 -0
  44. package/dist/cjs/conditions/predefined/erc721.js.map +1 -0
  45. package/dist/cjs/conditions/predefined/index.d.ts +1 -0
  46. package/dist/cjs/conditions/predefined/index.js +7 -0
  47. package/dist/cjs/conditions/predefined/index.js.map +1 -0
  48. package/dist/cjs/conditions/zod.d.ts +3 -0
  49. package/dist/cjs/conditions/zod.js +19 -0
  50. package/dist/cjs/conditions/zod.js.map +1 -0
  51. package/dist/cjs/dkg.d.ts +27 -0
  52. package/dist/cjs/dkg.js +85 -0
  53. package/dist/cjs/dkg.js.map +1 -0
  54. package/dist/cjs/index.d.ts +4 -0
  55. package/dist/cjs/index.js +39 -0
  56. package/dist/cjs/index.js.map +1 -0
  57. package/dist/cjs/porter.d.ts +4 -0
  58. package/dist/cjs/porter.js +22 -0
  59. package/dist/cjs/porter.js.map +1 -0
  60. package/dist/cjs/taco.d.ts +7 -0
  61. package/dist/cjs/taco.js +47 -0
  62. package/dist/cjs/taco.js.map +1 -0
  63. package/dist/cjs/tdec.d.ts +5 -0
  64. package/dist/cjs/tdec.js +61 -0
  65. package/dist/cjs/tdec.js.map +1 -0
  66. package/dist/cjs/web3.d.ts +33 -0
  67. package/dist/cjs/web3.js +3 -0
  68. package/dist/cjs/web3.js.map +1 -0
  69. package/dist/es/conditions/base/contract.d.ts +428 -0
  70. package/dist/es/conditions/base/contract.js +73 -0
  71. package/dist/es/conditions/base/contract.js.map +1 -0
  72. package/dist/es/conditions/base/index.d.ts +21 -0
  73. package/dist/es/conditions/base/index.js +31 -0
  74. package/dist/es/conditions/base/index.js.map +1 -0
  75. package/dist/es/conditions/base/rpc.d.ts +42 -0
  76. package/dist/es/conditions/base/rpc.js +17 -0
  77. package/dist/es/conditions/base/rpc.js.map +1 -0
  78. package/dist/es/conditions/base/shared.d.ts +16 -0
  79. package/dist/es/conditions/base/shared.js +14 -0
  80. package/dist/es/conditions/base/shared.js.map +1 -0
  81. package/dist/es/conditions/base/time.d.ts +40 -0
  82. package/dist/es/conditions/base/time.js +13 -0
  83. package/dist/es/conditions/base/time.js.map +1 -0
  84. package/dist/es/conditions/compound-condition.d.ts +4 -0
  85. package/dist/es/conditions/compound-condition.js +20 -0
  86. package/dist/es/conditions/compound-condition.js.map +1 -0
  87. package/dist/es/conditions/condition-expr.d.ts +23 -0
  88. package/dist/es/conditions/condition-expr.js +58 -0
  89. package/dist/es/conditions/condition-expr.js.map +1 -0
  90. package/dist/es/conditions/condition.d.ts +17 -0
  91. package/dist/es/conditions/condition.js +57 -0
  92. package/dist/es/conditions/condition.js.map +1 -0
  93. package/dist/es/conditions/const.d.ts +4 -0
  94. package/dist/es/conditions/const.js +10 -0
  95. package/dist/es/conditions/const.js.map +1 -0
  96. package/dist/es/conditions/context/context.d.ts +24 -0
  97. package/dist/es/conditions/context/context.js +109 -0
  98. package/dist/es/conditions/context/context.js.map +1 -0
  99. package/dist/es/conditions/context/index.d.ts +1 -0
  100. package/dist/es/conditions/context/index.js +2 -0
  101. package/dist/es/conditions/context/index.js.map +1 -0
  102. package/dist/es/conditions/context/providers.d.ts +16 -0
  103. package/dist/es/conditions/context/providers.js +105 -0
  104. package/dist/es/conditions/context/providers.js.map +1 -0
  105. package/dist/es/conditions/index.d.ts +9 -0
  106. package/dist/es/conditions/index.js +10 -0
  107. package/dist/es/conditions/index.js.map +1 -0
  108. package/dist/es/conditions/predefined/erc721.d.ts +10 -0
  109. package/dist/es/conditions/predefined/erc721.js +34 -0
  110. package/dist/es/conditions/predefined/erc721.js.map +1 -0
  111. package/dist/es/conditions/predefined/index.d.ts +1 -0
  112. package/dist/es/conditions/predefined/index.js +2 -0
  113. package/dist/es/conditions/predefined/index.js.map +1 -0
  114. package/dist/es/conditions/zod.d.ts +3 -0
  115. package/dist/es/conditions/zod.js +17 -0
  116. package/dist/es/conditions/zod.js.map +1 -0
  117. package/dist/es/dkg.d.ts +27 -0
  118. package/dist/es/dkg.js +80 -0
  119. package/dist/es/dkg.js.map +1 -0
  120. package/dist/es/index.d.ts +4 -0
  121. package/dist/es/index.js +5 -0
  122. package/dist/es/index.js.map +1 -0
  123. package/dist/es/porter.d.ts +4 -0
  124. package/dist/es/porter.js +14 -0
  125. package/dist/es/porter.js.map +1 -0
  126. package/dist/es/taco.d.ts +7 -0
  127. package/dist/es/taco.js +40 -0
  128. package/dist/es/taco.js.map +1 -0
  129. package/dist/es/tdec.d.ts +5 -0
  130. package/dist/es/tdec.js +56 -0
  131. package/dist/es/tdec.js.map +1 -0
  132. package/dist/es/web3.d.ts +33 -0
  133. package/dist/es/web3.js +2 -0
  134. package/dist/es/web3.js.map +1 -0
  135. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  136. package/dist/tsconfig.es.tsbuildinfo +1 -0
  137. package/package.json +58 -0
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.predefined = exports.base = exports.ConditionContext = exports.ConditionExpression = exports.Condition = exports.CompoundConditionType = void 0;
30
+ const base = __importStar(require("./base"));
31
+ exports.base = base;
32
+ const predefined = __importStar(require("./predefined"));
33
+ exports.predefined = predefined;
34
+ __exportStar(require("./base"), exports);
35
+ __exportStar(require("./predefined"), exports);
36
+ var compound_condition_1 = require("./compound-condition");
37
+ Object.defineProperty(exports, "CompoundConditionType", { enumerable: true, get: function () { return compound_condition_1.CompoundConditionType; } });
38
+ var condition_1 = require("./condition");
39
+ Object.defineProperty(exports, "Condition", { enumerable: true, get: function () { return condition_1.Condition; } });
40
+ var condition_expr_1 = require("./condition-expr");
41
+ Object.defineProperty(exports, "ConditionExpression", { enumerable: true, get: function () { return condition_expr_1.ConditionExpression; } });
42
+ var context_1 = require("./context");
43
+ Object.defineProperty(exports, "ConditionContext", { enumerable: true, get: function () { return context_1.ConditionContext; } });
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/conditions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAatB,oBAAI;AAZb,yDAA2C;AAY5B,gCAAU;AAVzB,yCAAuB;AACvB,+CAA6B;AAE7B,2DAG8B;AAD5B,2HAAA,qBAAqB,OAAA;AAEvB,yCAAwD;AAA/C,sGAAA,SAAS,OAAA;AAClB,mDAAgF;AAAvE,qHAAA,mBAAmB,OAAA;AAC5B,qCAAiE;AAAxD,2GAAA,gBAAgB,OAAA"}
@@ -0,0 +1,10 @@
1
+ import { ContractCondition, ContractConditionProps } from '../base';
2
+ type ERC721OwnershipFields = 'contractAddress' | 'chain' | 'parameters';
3
+ export declare class ERC721Ownership extends ContractCondition {
4
+ constructor(value: Pick<ContractConditionProps, ERC721OwnershipFields>);
5
+ }
6
+ type ERC721BalanceFields = 'contractAddress' | 'chain';
7
+ export declare class ERC721Balance extends ContractCondition {
8
+ constructor(value: Pick<ContractConditionProps, ERC721BalanceFields>);
9
+ }
10
+ export {};
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ERC721Balance = exports.ERC721Ownership = void 0;
4
+ const base_1 = require("../base");
5
+ const const_1 = require("../const");
6
+ const ERC721OwnershipDefaults = {
7
+ conditionType: base_1.ContractConditionType,
8
+ method: 'ownerOf',
9
+ standardContractType: 'ERC721',
10
+ returnValueTest: {
11
+ index: 0,
12
+ comparator: '==',
13
+ value: const_1.USER_ADDRESS_PARAM,
14
+ },
15
+ };
16
+ class ERC721Ownership extends base_1.ContractCondition {
17
+ constructor(value) {
18
+ super({ ...ERC721OwnershipDefaults, ...value });
19
+ }
20
+ }
21
+ exports.ERC721Ownership = ERC721Ownership;
22
+ const ERC721BalanceDefaults = {
23
+ conditionType: base_1.ContractConditionType,
24
+ method: 'balanceOf',
25
+ parameters: [const_1.USER_ADDRESS_PARAM],
26
+ standardContractType: 'ERC721',
27
+ returnValueTest: {
28
+ index: 0,
29
+ comparator: '>',
30
+ value: '0',
31
+ },
32
+ };
33
+ class ERC721Balance extends base_1.ContractCondition {
34
+ constructor(value) {
35
+ super({ ...ERC721BalanceDefaults, ...value });
36
+ }
37
+ }
38
+ exports.ERC721Balance = ERC721Balance;
39
+ //# sourceMappingURL=erc721.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc721.js","sourceRoot":"","sources":["../../../../src/conditions/predefined/erc721.ts"],"names":[],"mappings":";;;AAAA,kCAIiB;AACjB,oCAA8C;AAM9C,MAAM,uBAAuB,GAGzB;IACF,aAAa,EAAE,4BAAqB;IACpC,MAAM,EAAE,SAAS;IACjB,oBAAoB,EAAE,QAAQ;IAC9B,eAAe,EAAE;QACf,KAAK,EAAE,CAAC;QACR,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,0BAAkB;KAC1B;CACF,CAAC;AAEF,MAAa,eAAgB,SAAQ,wBAAiB;IACpD,YAAY,KAA0D;QACpE,KAAK,CAAC,EAAE,GAAG,uBAAuB,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAClD,CAAC;CACF;AAJD,0CAIC;AAID,MAAM,qBAAqB,GACzB;IACE,aAAa,EAAE,4BAAqB;IACpC,MAAM,EAAE,WAAW;IACnB,UAAU,EAAE,CAAC,0BAAkB,CAAC;IAChC,oBAAoB,EAAE,QAAQ;IAC9B,eAAe,EAAE;QACf,KAAK,EAAE,CAAC;QACR,UAAU,EAAE,GAAG;QACf,KAAK,EAAE,GAAG;KACX;CACF,CAAC;AAEJ,MAAa,aAAc,SAAQ,wBAAiB;IAClD,YAAY,KAAwD;QAClE,KAAK,CAAC,EAAE,GAAG,qBAAqB,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;CACF;AAJD,sCAIC"}
@@ -0,0 +1 @@
1
+ export { ERC721Balance, ERC721Ownership } from './erc721';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ERC721Ownership = exports.ERC721Balance = void 0;
4
+ var erc721_1 = require("./erc721");
5
+ Object.defineProperty(exports, "ERC721Balance", { enumerable: true, get: function () { return erc721_1.ERC721Balance; } });
6
+ Object.defineProperty(exports, "ERC721Ownership", { enumerable: true, get: function () { return erc721_1.ERC721Ownership; } });
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/conditions/predefined/index.ts"],"names":[],"mappings":";;;AAAA,mCAA0D;AAAjD,uGAAA,aAAa,OAAA;AAAE,yGAAA,eAAe,OAAA"}
@@ -0,0 +1,3 @@
1
+ import { Primitive, z } from 'zod';
2
+ declare function createUnionSchema<T extends readonly Primitive[]>(values: T): z.ZodNever | z.ZodLiteral<Primitive> | z.ZodUnion<[z.ZodLiteral<Primitive>, z.ZodLiteral<Primitive>, ...z.ZodLiteral<Primitive>[]]>;
3
+ export default createUnionSchema;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const zod_1 = require("zod");
4
+ // Source: https://github.com/colinhacks/zod/issues/831#issuecomment-1063481764
5
+ const createUnion = (values) => {
6
+ const zodLiterals = values.map((value) => zod_1.z.literal(value));
7
+ return zod_1.z.union(zodLiterals);
8
+ };
9
+ function createUnionSchema(values) {
10
+ if (values.length === 0) {
11
+ return zod_1.z.never();
12
+ }
13
+ if (values.length === 1) {
14
+ return zod_1.z.literal(values[0]);
15
+ }
16
+ return createUnion(values);
17
+ }
18
+ exports.default = createUnionSchema;
19
+ //# sourceMappingURL=zod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod.js","sourceRoot":"","sources":["../../../src/conditions/zod.ts"],"names":[],"mappings":";;AAAA,6BAA+C;AAE/C,+EAA+E;AAC/E,MAAM,WAAW,GAAG,CAGlB,MAAS,EACT,EAAE;IACF,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAIzD,CAAC;IACF,OAAO,OAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,SAAS,iBAAiB,CAAiC,MAAS;IAClE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,OAAC,CAAC,KAAK,EAAE,CAAC;KAClB;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,OAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7B;IAED,OAAO,WAAW,CAChB,MAAqE,CACtE,CAAC;AACJ,CAAC;AAED,kBAAe,iBAAiB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { DkgPublicKey } from '@nucypher/nucypher-core';
2
+ import { ChecksumAddress, DkgRitualState } from '@nucypher/shared';
3
+ import { BigNumberish, ethers } from 'ethers';
4
+ export interface DkgRitualJSON {
5
+ id: number;
6
+ dkgPublicKey: Uint8Array;
7
+ sharesNum: number;
8
+ threshold: number;
9
+ state: DkgRitualState;
10
+ }
11
+ export declare class DkgRitual {
12
+ readonly id: number;
13
+ readonly dkgPublicKey: DkgPublicKey;
14
+ readonly sharesNum: number;
15
+ readonly threshold: number;
16
+ readonly state: DkgRitualState;
17
+ constructor(id: number, dkgPublicKey: DkgPublicKey, sharesNum: number, threshold: number, state: DkgRitualState);
18
+ toObj(): DkgRitualJSON;
19
+ static fromObj({ id, dkgPublicKey, sharesNum, threshold, state, }: DkgRitualJSON): DkgRitual;
20
+ equals(other: DkgRitual): boolean;
21
+ }
22
+ export declare class DkgClient {
23
+ static initializeRitual(provider: ethers.providers.Provider, signer: ethers.Signer, ursulas: ChecksumAddress[], authority: string, duration: BigNumberish, accessController: string, waitUntilEnd?: boolean): Promise<number | undefined>;
24
+ private static waitUntilRitualEnd;
25
+ static getRitual(provider: ethers.providers.Provider, ritualId: number): Promise<DkgRitual>;
26
+ static getFinalizedRitual(provider: ethers.providers.Provider, ritualId: number): Promise<DkgRitual>;
27
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DkgClient = exports.DkgRitual = void 0;
4
+ const nucypher_core_1 = require("@nucypher/nucypher-core");
5
+ const shared_1 = require("@nucypher/shared");
6
+ class DkgRitual {
7
+ id;
8
+ dkgPublicKey;
9
+ sharesNum;
10
+ threshold;
11
+ state;
12
+ constructor(id, dkgPublicKey, sharesNum, threshold, state) {
13
+ this.id = id;
14
+ this.dkgPublicKey = dkgPublicKey;
15
+ this.sharesNum = sharesNum;
16
+ this.threshold = threshold;
17
+ this.state = state;
18
+ }
19
+ toObj() {
20
+ return {
21
+ id: this.id,
22
+ dkgPublicKey: this.dkgPublicKey.toBytes(),
23
+ sharesNum: this.sharesNum,
24
+ threshold: this.threshold,
25
+ state: this.state,
26
+ };
27
+ }
28
+ static fromObj({ id, dkgPublicKey, sharesNum, threshold, state, }) {
29
+ return new DkgRitual(id, nucypher_core_1.DkgPublicKey.fromBytes(dkgPublicKey), sharesNum, threshold, state);
30
+ }
31
+ equals(other) {
32
+ return [
33
+ this.id === other.id,
34
+ this.dkgPublicKey.equals(other.dkgPublicKey),
35
+ this.sharesNum === other.sharesNum,
36
+ this.threshold === other.threshold,
37
+ this.state === other.state,
38
+ ].every(Boolean);
39
+ }
40
+ }
41
+ exports.DkgRitual = DkgRitual;
42
+ class DkgClient {
43
+ static async initializeRitual(provider, signer, ursulas, authority, duration, accessController, waitUntilEnd = false) {
44
+ const ritualId = await shared_1.DkgCoordinatorAgent.initializeRitual(provider, signer, ursulas.sort(), authority, duration, accessController);
45
+ if (waitUntilEnd) {
46
+ const isSuccessful = await DkgClient.waitUntilRitualEnd(provider, ritualId);
47
+ if (!isSuccessful) {
48
+ const ritualState = await shared_1.DkgCoordinatorAgent.getRitualState(provider, ritualId);
49
+ throw new Error(`Ritual initialization failed. Ritual id ${ritualId} is in state ${ritualState}`);
50
+ }
51
+ }
52
+ return ritualId;
53
+ }
54
+ static waitUntilRitualEnd = async (provider, ritualId) => {
55
+ return new Promise((resolve, reject) => {
56
+ const callback = (successful) => {
57
+ if (successful) {
58
+ resolve(true);
59
+ }
60
+ else {
61
+ reject();
62
+ }
63
+ };
64
+ shared_1.DkgCoordinatorAgent.onRitualEndEvent(provider, ritualId, callback);
65
+ });
66
+ };
67
+ static async getRitual(provider, ritualId) {
68
+ const ritualState = await shared_1.DkgCoordinatorAgent.getRitualState(provider, ritualId);
69
+ const ritual = await shared_1.DkgCoordinatorAgent.getRitual(provider, ritualId);
70
+ const dkgPkBytes = new Uint8Array([
71
+ ...(0, shared_1.fromHexString)(ritual.publicKey.word0),
72
+ ...(0, shared_1.fromHexString)(ritual.publicKey.word1),
73
+ ]);
74
+ return new DkgRitual(ritualId, nucypher_core_1.DkgPublicKey.fromBytes(dkgPkBytes), ritual.dkgSize, ritual.threshold, ritualState);
75
+ }
76
+ static async getFinalizedRitual(provider, ritualId) {
77
+ const ritual = await DkgClient.getRitual(provider, ritualId);
78
+ if (ritual.state !== shared_1.DkgRitualState.FINALIZED) {
79
+ throw new Error(`Ritual ${ritualId} is not finalized. State: ${ritual.state}`);
80
+ }
81
+ return ritual;
82
+ }
83
+ }
84
+ exports.DkgClient = DkgClient;
85
+ //# sourceMappingURL=dkg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dkg.js","sourceRoot":"","sources":["../../src/dkg.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { DkgPublicKey, ThresholdMessageKit } from '@nucypher/nucypher-core';
2
+ export { fromBytes, getPorterUri, initialize, toBytes } from '@nucypher/shared';
3
+ export * as conditions from './conditions';
4
+ export { decrypt, encrypt } from './taco';
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.encrypt = exports.decrypt = exports.conditions = exports.toBytes = exports.initialize = exports.getPorterUri = exports.fromBytes = exports.ThresholdMessageKit = exports.DkgPublicKey = void 0;
27
+ var nucypher_core_1 = require("@nucypher/nucypher-core");
28
+ Object.defineProperty(exports, "DkgPublicKey", { enumerable: true, get: function () { return nucypher_core_1.DkgPublicKey; } });
29
+ Object.defineProperty(exports, "ThresholdMessageKit", { enumerable: true, get: function () { return nucypher_core_1.ThresholdMessageKit; } });
30
+ var shared_1 = require("@nucypher/shared");
31
+ Object.defineProperty(exports, "fromBytes", { enumerable: true, get: function () { return shared_1.fromBytes; } });
32
+ Object.defineProperty(exports, "getPorterUri", { enumerable: true, get: function () { return shared_1.getPorterUri; } });
33
+ Object.defineProperty(exports, "initialize", { enumerable: true, get: function () { return shared_1.initialize; } });
34
+ Object.defineProperty(exports, "toBytes", { enumerable: true, get: function () { return shared_1.toBytes; } });
35
+ exports.conditions = __importStar(require("./conditions"));
36
+ var taco_1 = require("./taco");
37
+ Object.defineProperty(exports, "decrypt", { enumerable: true, get: function () { return taco_1.decrypt; } });
38
+ Object.defineProperty(exports, "encrypt", { enumerable: true, get: function () { return taco_1.encrypt; } });
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAA4E;AAAnE,6GAAA,YAAY,OAAA;AAAE,oHAAA,mBAAmB,OAAA;AAE1C,2CAAgF;AAAvE,mGAAA,SAAS,OAAA;AAAE,sGAAA,YAAY,OAAA;AAAE,oGAAA,UAAU,OAAA;AAAE,iGAAA,OAAO,OAAA;AAErD,2DAA2C;AAE3C,+BAA0C;AAAjC,+FAAA,OAAO,OAAA;AAAE,+FAAA,OAAO,OAAA"}
@@ -0,0 +1,4 @@
1
+ type TacoDomain = 'lynx' | 'tapir';
2
+ export declare const TACO_DOMAIN: Record<string, TacoDomain>;
3
+ export declare const getPorterUri: (domain: TacoDomain) => string;
4
+ export { fromBytes, initialize, toBytes, toHexString } from '@nucypher/shared';
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toHexString = exports.toBytes = exports.initialize = exports.fromBytes = exports.getPorterUri = exports.TACO_DOMAIN = void 0;
4
+ const shared_1 = require("@nucypher/shared");
5
+ exports.TACO_DOMAIN = {
6
+ DEV: 'lynx',
7
+ TESTNET: 'tapir',
8
+ };
9
+ const getPorterUri = (domain) => {
10
+ const tacoDomainKeys = Object.keys(exports.TACO_DOMAIN);
11
+ if (!tacoDomainKeys.includes(domain)) {
12
+ throw new Error(`${domain} is not a valid TACo domain.`);
13
+ }
14
+ return (0, shared_1.getPorterUri)(domain);
15
+ };
16
+ exports.getPorterUri = getPorterUri;
17
+ var shared_2 = require("@nucypher/shared");
18
+ Object.defineProperty(exports, "fromBytes", { enumerable: true, get: function () { return shared_2.fromBytes; } });
19
+ Object.defineProperty(exports, "initialize", { enumerable: true, get: function () { return shared_2.initialize; } });
20
+ Object.defineProperty(exports, "toBytes", { enumerable: true, get: function () { return shared_2.toBytes; } });
21
+ Object.defineProperty(exports, "toHexString", { enumerable: true, get: function () { return shared_2.toHexString; } });
22
+ //# sourceMappingURL=porter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"porter.js","sourceRoot":"","sources":["../../src/porter.ts"],"names":[],"mappings":";;;AAAA,6CAAkE;AAIrD,QAAA,WAAW,GAA+B;IACrD,GAAG,EAAE,MAAM;IACX,OAAO,EAAE,OAAO;CACjB,CAAC;AAEK,MAAM,YAAY,GAAG,CAAC,MAAkB,EAAU,EAAE;IACzD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAW,CAAC,CAAC;IAChD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QACpC,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,8BAA8B,CAAC,CAAC;KAC1D;IACD,OAAO,IAAA,qBAAc,EAAC,MAAM,CAAC,CAAC;AAChC,CAAC,CAAC;AANW,QAAA,YAAY,gBAMvB;AAEF,2CAA+E;AAAtE,mGAAA,SAAS,OAAA;AAAE,oGAAA,UAAU,OAAA;AAAE,iGAAA,OAAO,OAAA;AAAE,qGAAA,WAAW,OAAA"}
@@ -0,0 +1,7 @@
1
+ import { DkgPublicKey, ThresholdMessageKit } from '@nucypher/nucypher-core';
2
+ import { ethers } from 'ethers';
3
+ import { Condition } from './conditions';
4
+ export declare const encrypt: (provider: ethers.providers.Provider, message: Uint8Array | string, condition: Condition, ritualId: number, authSigner: ethers.Signer) => Promise<ThresholdMessageKit>;
5
+ export declare const encryptWithPublicKey: (message: Uint8Array | string, condition: Condition, dkgPublicKey: DkgPublicKey, authSigner: ethers.Signer) => Promise<ThresholdMessageKit>;
6
+ export declare const decrypt: (provider: ethers.providers.Provider, messageKit: ThresholdMessageKit, signer?: ethers.Signer, porterUri?: string) => Promise<Uint8Array>;
7
+ export declare const isAuthorized: (provider: ethers.providers.Provider, messageKit: ThresholdMessageKit, ritualId: number) => Promise<boolean>;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAuthorized = exports.decrypt = exports.encryptWithPublicKey = exports.encrypt = void 0;
4
+ const nucypher_core_1 = require("@nucypher/nucypher-core");
5
+ const shared_1 = require("@nucypher/shared");
6
+ const utils_1 = require("ethers/lib/utils");
7
+ const conditions_1 = require("./conditions");
8
+ const dkg_1 = require("./dkg");
9
+ const tdec_1 = require("./tdec");
10
+ const encrypt = async (provider, message, condition, ritualId, authSigner) => {
11
+ // TODO(#264): Enable ritual initialization
12
+ // if (ritualId === undefined) {
13
+ // ritualId = await DkgClient.initializeRitual(
14
+ // provider,
15
+ // this.cohort.ursulaAddresses,
16
+ // true
17
+ // );
18
+ // }
19
+ // if (ritualId === undefined) {
20
+ // // Given that we just initialized the ritual, this should never happen
21
+ // throw new Error('Ritual ID is undefined');
22
+ // }
23
+ const dkgRitual = await dkg_1.DkgClient.getFinalizedRitual(provider, ritualId);
24
+ return await (0, exports.encryptWithPublicKey)(message, condition, dkgRitual.dkgPublicKey, authSigner);
25
+ };
26
+ exports.encrypt = encrypt;
27
+ const encryptWithPublicKey = async (message, condition, dkgPublicKey, authSigner) => {
28
+ if (typeof message === 'string') {
29
+ message = (0, shared_1.toBytes)(message);
30
+ }
31
+ const conditionExpr = new conditions_1.ConditionExpression(condition);
32
+ const [ciphertext, authenticatedData] = (0, nucypher_core_1.encryptForDkg)(message, dkgPublicKey, conditionExpr.toWASMConditions());
33
+ const headerHash = (0, utils_1.keccak256)(ciphertext.header.toBytes());
34
+ const authorization = await authSigner.signMessage((0, shared_1.fromHexString)(headerHash));
35
+ const acp = new nucypher_core_1.AccessControlPolicy(authenticatedData, (0, shared_1.fromHexString)(authorization));
36
+ return new nucypher_core_1.ThresholdMessageKit(ciphertext, acp);
37
+ };
38
+ exports.encryptWithPublicKey = encryptWithPublicKey;
39
+ const decrypt = async (provider, messageKit, signer, porterUri = (0, shared_1.getPorterUri)('tapir')) => {
40
+ const ritualId = await shared_1.DkgCoordinatorAgent.getRitualIdFromPublicKey(provider, messageKit.acp.publicKey);
41
+ const ritual = await dkg_1.DkgClient.getFinalizedRitual(provider, ritualId);
42
+ return (0, tdec_1.retrieveAndDecrypt)(provider, porterUri, messageKit, ritualId, ritual.threshold, signer);
43
+ };
44
+ exports.decrypt = decrypt;
45
+ const isAuthorized = async (provider, messageKit, ritualId) => shared_1.DkgCoordinatorAgent.isEncryptionAuthorized(provider, ritualId, messageKit);
46
+ exports.isAuthorized = isAuthorized;
47
+ //# sourceMappingURL=taco.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taco.js","sourceRoot":"","sources":["../../src/taco.ts"],"names":[],"mappings":";;;AAAA,2DAKiC;AACjC,6CAK0B;AAE1B,4CAA6C;AAE7C,6CAA8D;AAC9D,+BAAkC;AAClC,iCAA4C;AAErC,MAAM,OAAO,GAAG,KAAK,EAC1B,QAAmC,EACnC,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,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEzE,OAAO,MAAM,IAAA,4BAAoB,EAC/B,OAAO,EACP,SAAS,EACT,SAAS,CAAC,YAAY,EACtB,UAAU,CACX,CAAC;AACJ,CAAC,CAAC;AA3BW,QAAA,OAAO,WA2BlB;AAEK,MAAM,oBAAoB,GAAG,KAAK,EACvC,OAA4B,EAC5B,SAAoB,EACpB,YAA0B,EAC1B,UAAyB,EACK,EAAE;IAChC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,OAAO,GAAG,IAAA,gBAAO,EAAC,OAAO,CAAC,CAAC;KAC5B;IAED,MAAM,aAAa,GAAG,IAAI,gCAAmB,CAAC,SAAS,CAAC,CAAC;IAEzD,MAAM,CAAC,UAAU,EAAE,iBAAiB,CAAC,GAAG,IAAA,6BAAa,EACnD,OAAO,EACP,YAAY,EACZ,aAAa,CAAC,gBAAgB,EAAE,CACjC,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;AAEK,MAAM,OAAO,GAAG,KAAK,EAC1B,QAAmC,EACnC,UAA+B,EAC/B,MAAsB,EACtB,SAAS,GAAG,IAAA,qBAAY,EAAC,OAAO,CAAC,EACZ,EAAE;IACvB,MAAM,QAAQ,GAAG,MAAM,4BAAmB,CAAC,wBAAwB,CACjE,QAAQ,EACR,UAAU,CAAC,GAAG,CAAC,SAAS,CACzB,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,eAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtE,OAAO,IAAA,yBAAkB,EACvB,QAAQ,EACR,SAAS,EACT,UAAU,EACV,QAAQ,EACR,MAAM,CAAC,SAAS,EAChB,MAAM,CACP,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,OAAO,WAmBlB;AAEK,MAAM,YAAY,GAAG,KAAK,EAC/B,QAAmC,EACnC,UAA+B,EAC/B,QAAgB,EAChB,EAAE,CAAC,4BAAmB,CAAC,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAJnE,QAAA,YAAY,gBAIuD"}
@@ -0,0 +1,5 @@
1
+ import { DkgPublicKey, ThresholdMessageKit } from '@nucypher/nucypher-core';
2
+ import { ethers } from 'ethers';
3
+ import { ConditionExpression } from './conditions';
4
+ export declare const encryptMessage: (plaintext: Uint8Array | string, encryptingKey: DkgPublicKey, conditions: ConditionExpression, authSigner: ethers.Signer) => Promise<ThresholdMessageKit>;
5
+ export declare const retrieveAndDecrypt: (provider: ethers.providers.Provider, porterUri: string, thresholdMessageKit: ThresholdMessageKit, ritualId: number, threshold: number, signer?: ethers.Signer) => Promise<Uint8Array>;
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.retrieveAndDecrypt = exports.encryptMessage = void 0;
4
+ const nucypher_core_1 = require("@nucypher/nucypher-core");
5
+ const shared_1 = require("@nucypher/shared");
6
+ const utils_1 = require("ethers/lib/utils");
7
+ const conditions_1 = require("./conditions");
8
+ const encryptMessage = async (plaintext, encryptingKey, conditions, authSigner) => {
9
+ const [ciphertext, authenticatedData] = (0, nucypher_core_1.encryptForDkg)(plaintext instanceof Uint8Array ? plaintext : (0, shared_1.toBytes)(plaintext), encryptingKey, conditions.toWASMConditions());
10
+ const headerHash = (0, utils_1.keccak256)(ciphertext.header.toBytes());
11
+ const authorization = await authSigner.signMessage((0, utils_1.arrayify)(headerHash));
12
+ const acp = new nucypher_core_1.AccessControlPolicy(authenticatedData, (0, shared_1.toBytes)(authorization));
13
+ return new nucypher_core_1.ThresholdMessageKit(ciphertext, acp);
14
+ };
15
+ exports.encryptMessage = encryptMessage;
16
+ // Retrieve and decrypt ciphertext using provider and condition expression
17
+ const retrieveAndDecrypt = async (provider, porterUri, thresholdMessageKit, ritualId, threshold, signer) => {
18
+ const decryptionShares = await retrieve(provider, porterUri, thresholdMessageKit, ritualId, threshold, signer);
19
+ const sharedSecret = (0, nucypher_core_1.combineDecryptionSharesSimple)(decryptionShares);
20
+ return thresholdMessageKit.decryptWithSharedSecret(sharedSecret);
21
+ };
22
+ exports.retrieveAndDecrypt = retrieveAndDecrypt;
23
+ // Retrieve decryption shares
24
+ const retrieve = async (provider, porterUri, thresholdMessageKit, ritualId, threshold, signer) => {
25
+ const dkgParticipants = await shared_1.DkgCoordinatorAgent.getParticipants(provider, ritualId);
26
+ const wasmContext = await conditions_1.ConditionContext.fromConditions(provider, thresholdMessageKit.acp.conditions, signer).toWASMContext();
27
+ const { sharedSecrets, encryptedRequests } = await makeDecryptionRequests(ritualId, wasmContext, dkgParticipants, thresholdMessageKit);
28
+ const porter = new shared_1.PorterClient(porterUri);
29
+ const { encryptedResponses, errors } = await porter.cbdDecrypt(encryptedRequests, threshold);
30
+ if (Object.keys(encryptedResponses).length < threshold) {
31
+ throw new Error(`Threshold of responses not met; CBD decryption failed with errors: ${JSON.stringify(errors)}`);
32
+ }
33
+ return makeDecryptionShares(encryptedResponses, sharedSecrets, ritualId);
34
+ };
35
+ const makeDecryptionShares = (encryptedResponses, sessionSharedSecret, expectedRitualId) => {
36
+ const decryptedResponses = Object.entries(encryptedResponses).map(([ursula, response]) => response.decrypt(sessionSharedSecret[ursula]));
37
+ const ritualIds = decryptedResponses.map(({ ritualId }) => ritualId);
38
+ if (ritualIds.some((ritualId) => ritualId !== expectedRitualId)) {
39
+ throw new Error(`Ritual id mismatch. Expected ${expectedRitualId}, got ${ritualIds}`);
40
+ }
41
+ return decryptedResponses.map(({ decryptionShare }) => nucypher_core_1.DecryptionShareSimple.fromBytes(decryptionShare));
42
+ };
43
+ const makeDecryptionRequests = async (ritualId, wasmContext, dkgParticipants, thresholdMessageKit) => {
44
+ const decryptionRequest = new nucypher_core_1.ThresholdDecryptionRequest(ritualId, nucypher_core_1.FerveoVariant.simple, thresholdMessageKit.ciphertextHeader, thresholdMessageKit.acp, wasmContext);
45
+ const ephemeralSessionKey = makeSessionKey();
46
+ // Compute shared secrets for each participant
47
+ const sharedSecrets = Object.fromEntries(dkgParticipants.map(({ provider, decryptionRequestStaticKey }) => {
48
+ const sharedSecret = ephemeralSessionKey.deriveSharedSecret(decryptionRequestStaticKey);
49
+ return [provider, sharedSecret];
50
+ }));
51
+ // Create encrypted requests for each participant
52
+ const encryptedRequests = Object.fromEntries(Object.entries(sharedSecrets).map(([provider, sessionSharedSecret]) => {
53
+ const encryptedRequest = decryptionRequest.encrypt(sessionSharedSecret, ephemeralSessionKey.publicKey());
54
+ return [provider, encryptedRequest];
55
+ }));
56
+ return { sharedSecrets, encryptedRequests };
57
+ };
58
+ // Moving to a separate function to make it easier to mock
59
+ // TODO: Reconsider this
60
+ const makeSessionKey = () => nucypher_core_1.SessionStaticSecret.random();
61
+ //# sourceMappingURL=tdec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tdec.js","sourceRoot":"","sources":["../../src/tdec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export interface Eip712TypedData {
2
+ types: {
3
+ Wallet: {
4
+ name: string;
5
+ type: string;
6
+ }[];
7
+ };
8
+ domain: {
9
+ salt: string;
10
+ chainId: number;
11
+ name: string;
12
+ version: string;
13
+ };
14
+ message: {
15
+ blockHash: string;
16
+ address: string;
17
+ blockNumber: number;
18
+ signatureText: string;
19
+ };
20
+ }
21
+ export interface FormattedTypedData extends Eip712TypedData {
22
+ primaryType: 'Wallet';
23
+ types: {
24
+ EIP712Domain: {
25
+ name: string;
26
+ type: string;
27
+ }[];
28
+ Wallet: {
29
+ name: string;
30
+ type: string;
31
+ }[];
32
+ };
33
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=web3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web3.js","sourceRoot":"","sources":["../../src/web3.ts"],"names":[],"mappings":""}