@nucypher/shared 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.
- package/LICENSE +675 -0
- package/README.md +3 -0
- package/dist/cjs/contracts/agents/coordinator.d.ts +43 -0
- package/dist/cjs/contracts/agents/coordinator.js +82 -0
- package/dist/cjs/contracts/agents/coordinator.js.map +1 -0
- package/dist/cjs/contracts/agents/global-allow-list.d.ts +8 -0
- package/dist/cjs/contracts/agents/global-allow-list.js +25 -0
- package/dist/cjs/contracts/agents/global-allow-list.js.map +1 -0
- package/dist/cjs/contracts/agents/index.d.ts +2 -0
- package/dist/cjs/contracts/agents/index.js +19 -0
- package/dist/cjs/contracts/agents/index.js.map +1 -0
- package/dist/cjs/contracts/agents/subscription-manager.d.ts +9 -0
- package/dist/cjs/contracts/agents/subscription-manager.js +35 -0
- package/dist/cjs/contracts/agents/subscription-manager.js.map +1 -0
- package/dist/cjs/contracts/ethers-typechain/Coordinator.d.ts +955 -0
- package/dist/cjs/contracts/ethers-typechain/Coordinator.js +3 -0
- package/dist/cjs/contracts/ethers-typechain/Coordinator.js.map +1 -0
- package/dist/cjs/contracts/ethers-typechain/GlobalAllowList.d.ts +423 -0
- package/dist/cjs/contracts/ethers-typechain/GlobalAllowList.js +3 -0
- package/dist/cjs/contracts/ethers-typechain/GlobalAllowList.js.map +1 -0
- package/dist/cjs/contracts/ethers-typechain/SubscriptionManager.d.ts +325 -0
- package/dist/cjs/contracts/ethers-typechain/SubscriptionManager.js +3 -0
- package/dist/cjs/contracts/ethers-typechain/SubscriptionManager.js.map +1 -0
- package/dist/cjs/contracts/ethers-typechain/common.d.ts +21 -0
- package/dist/cjs/contracts/ethers-typechain/common.js +3 -0
- package/dist/cjs/contracts/ethers-typechain/common.js.map +1 -0
- package/dist/cjs/contracts/ethers-typechain/factories/Coordinator__factory.d.ts +1104 -0
- package/dist/cjs/contracts/ethers-typechain/factories/Coordinator__factory.js +1441 -0
- package/dist/cjs/contracts/ethers-typechain/factories/Coordinator__factory.js.map +1 -0
- package/dist/cjs/contracts/ethers-typechain/factories/GlobalAllowList__factory.d.ts +412 -0
- package/dist/cjs/contracts/ethers-typechain/factories/GlobalAllowList__factory.js +540 -0
- package/dist/cjs/contracts/ethers-typechain/factories/GlobalAllowList__factory.js.map +1 -0
- package/dist/cjs/contracts/ethers-typechain/factories/SubscriptionManager__factory.d.ts +390 -0
- package/dist/cjs/contracts/ethers-typechain/factories/SubscriptionManager__factory.js +520 -0
- package/dist/cjs/contracts/ethers-typechain/factories/SubscriptionManager__factory.js.map +1 -0
- package/dist/cjs/contracts/ethers-typechain/factories/index.d.ts +2 -0
- package/dist/cjs/contracts/ethers-typechain/factories/index.js +11 -0
- package/dist/cjs/contracts/ethers-typechain/factories/index.js.map +1 -0
- package/dist/cjs/contracts/ethers-typechain/index.d.ts +5 -0
- package/dist/cjs/contracts/ethers-typechain/index.js +32 -0
- package/dist/cjs/contracts/ethers-typechain/index.js.map +1 -0
- package/dist/cjs/contracts/index.d.ts +3 -0
- package/dist/cjs/contracts/index.js +20 -0
- package/dist/cjs/contracts/index.js.map +1 -0
- package/dist/cjs/contracts/registry.d.ts +8 -0
- package/dist/cjs/contracts/registry.js +42 -0
- package/dist/cjs/contracts/registry.js.map +1 -0
- package/dist/cjs/index.d.ts +6 -0
- package/dist/cjs/index.js +35 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/porter.d.ts +36 -0
- package/dist/cjs/porter.js +86 -0
- package/dist/cjs/porter.js.map +1 -0
- package/dist/cjs/types.d.ts +3 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils.d.ts +15 -0
- package/dist/cjs/utils.js +71 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/cjs/web3.d.ts +7 -0
- package/dist/cjs/web3.js +20 -0
- package/dist/cjs/web3.js.map +1 -0
- package/dist/es/contracts/agents/coordinator.d.ts +43 -0
- package/dist/es/contracts/agents/coordinator.js +78 -0
- package/dist/es/contracts/agents/coordinator.js.map +1 -0
- package/dist/es/contracts/agents/global-allow-list.d.ts +8 -0
- package/dist/es/contracts/agents/global-allow-list.js +21 -0
- package/dist/es/contracts/agents/global-allow-list.js.map +1 -0
- package/dist/es/contracts/agents/index.d.ts +2 -0
- package/dist/es/contracts/agents/index.js +3 -0
- package/dist/es/contracts/agents/index.js.map +1 -0
- package/dist/es/contracts/agents/subscription-manager.d.ts +9 -0
- package/dist/es/contracts/agents/subscription-manager.js +31 -0
- package/dist/es/contracts/agents/subscription-manager.js.map +1 -0
- package/dist/es/contracts/ethers-typechain/Coordinator.d.ts +955 -0
- package/dist/es/contracts/ethers-typechain/Coordinator.js +2 -0
- package/dist/es/contracts/ethers-typechain/Coordinator.js.map +1 -0
- package/dist/es/contracts/ethers-typechain/GlobalAllowList.d.ts +423 -0
- package/dist/es/contracts/ethers-typechain/GlobalAllowList.js +2 -0
- package/dist/es/contracts/ethers-typechain/GlobalAllowList.js.map +1 -0
- package/dist/es/contracts/ethers-typechain/SubscriptionManager.d.ts +325 -0
- package/dist/es/contracts/ethers-typechain/SubscriptionManager.js +2 -0
- package/dist/es/contracts/ethers-typechain/SubscriptionManager.js.map +1 -0
- package/dist/es/contracts/ethers-typechain/common.d.ts +21 -0
- package/dist/es/contracts/ethers-typechain/common.js +2 -0
- package/dist/es/contracts/ethers-typechain/common.js.map +1 -0
- package/dist/es/contracts/ethers-typechain/factories/Coordinator__factory.d.ts +1104 -0
- package/dist/es/contracts/ethers-typechain/factories/Coordinator__factory.js +1437 -0
- package/dist/es/contracts/ethers-typechain/factories/Coordinator__factory.js.map +1 -0
- package/dist/es/contracts/ethers-typechain/factories/GlobalAllowList__factory.d.ts +412 -0
- package/dist/es/contracts/ethers-typechain/factories/GlobalAllowList__factory.js +536 -0
- package/dist/es/contracts/ethers-typechain/factories/GlobalAllowList__factory.js.map +1 -0
- package/dist/es/contracts/ethers-typechain/factories/SubscriptionManager__factory.d.ts +390 -0
- package/dist/es/contracts/ethers-typechain/factories/SubscriptionManager__factory.js +516 -0
- package/dist/es/contracts/ethers-typechain/factories/SubscriptionManager__factory.js.map +1 -0
- package/dist/es/contracts/ethers-typechain/factories/index.d.ts +2 -0
- package/dist/es/contracts/ethers-typechain/factories/index.js +6 -0
- package/dist/es/contracts/ethers-typechain/factories/index.js.map +1 -0
- package/dist/es/contracts/ethers-typechain/index.d.ts +5 -0
- package/dist/es/contracts/ethers-typechain/index.js +4 -0
- package/dist/es/contracts/ethers-typechain/index.js.map +1 -0
- package/dist/es/contracts/index.d.ts +3 -0
- package/dist/es/contracts/index.js +4 -0
- package/dist/es/contracts/index.js.map +1 -0
- package/dist/es/contracts/registry.d.ts +8 -0
- package/dist/es/contracts/registry.js +38 -0
- package/dist/es/contracts/registry.js.map +1 -0
- package/dist/es/index.d.ts +6 -0
- package/dist/es/index.js +8 -0
- package/dist/es/index.js.map +1 -0
- package/dist/es/porter.d.ts +36 -0
- package/dist/es/porter.js +78 -0
- package/dist/es/porter.js.map +1 -0
- package/dist/es/types.d.ts +3 -0
- package/dist/es/types.js +2 -0
- package/dist/es/types.js.map +1 -0
- package/dist/es/utils.d.ts +15 -0
- package/dist/es/utils.js +52 -0
- package/dist/es/utils.js.map +1 -0
- package/dist/es/web3.d.ts +7 -0
- package/dist/es/web3.js +16 -0
- package/dist/es/web3.js.map +1 -0
- package/dist/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.es.tsbuildinfo +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_WAIT_N_CONFIRMATIONS = exports.getContract = void 0;
|
|
4
|
+
const web3_1 = require("../web3");
|
|
5
|
+
const POLYGON = {
|
|
6
|
+
SUBSCRIPTION_MANAGER: '0xB0194073421192F6Cf38d72c791Be8729721A0b3',
|
|
7
|
+
COORDINATOR: undefined,
|
|
8
|
+
};
|
|
9
|
+
const MUMBAI = {
|
|
10
|
+
SUBSCRIPTION_MANAGER: '0xb9015d7b35ce7c81dde38ef7136baa3b1044f313',
|
|
11
|
+
COORDINATOR: '0x8E49989F9D3aD89c8ab0de21FbA2E00C67ca872F',
|
|
12
|
+
};
|
|
13
|
+
const GOERLI = {
|
|
14
|
+
SUBSCRIPTION_MANAGER: undefined,
|
|
15
|
+
COORDINATOR: '0x2cf19429168a0943992D8e7dE534E9b802C687B6',
|
|
16
|
+
};
|
|
17
|
+
const MAINNET = {
|
|
18
|
+
SUBSCRIPTION_MANAGER: undefined,
|
|
19
|
+
COORDINATOR: undefined,
|
|
20
|
+
};
|
|
21
|
+
const CONTRACTS = {
|
|
22
|
+
[web3_1.ChainId.POLYGON]: POLYGON,
|
|
23
|
+
[web3_1.ChainId.MUMBAI]: MUMBAI,
|
|
24
|
+
[web3_1.ChainId.GOERLI]: GOERLI,
|
|
25
|
+
[web3_1.ChainId.MAINNET]: MAINNET,
|
|
26
|
+
};
|
|
27
|
+
const getContract = (chainId, contract) => {
|
|
28
|
+
if (!Object.values(web3_1.ChainId).includes(chainId)) {
|
|
29
|
+
throw new Error(`No contracts found for chainId: ${chainId}`);
|
|
30
|
+
}
|
|
31
|
+
if (!Object.keys(CONTRACTS[chainId]).includes(contract)) {
|
|
32
|
+
throw new Error(`No contract found for name: ${contract}`);
|
|
33
|
+
}
|
|
34
|
+
const address = CONTRACTS[chainId][contract];
|
|
35
|
+
if (!address) {
|
|
36
|
+
throw new Error(`No address found for contract: ${contract}`);
|
|
37
|
+
}
|
|
38
|
+
return address;
|
|
39
|
+
};
|
|
40
|
+
exports.getContract = getContract;
|
|
41
|
+
exports.DEFAULT_WAIT_N_CONFIRMATIONS = 1;
|
|
42
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/contracts/registry.ts"],"names":[],"mappings":";;;AACA,kCAAkC;AAOlC,MAAM,OAAO,GAAc;IACzB,oBAAoB,EAAE,4CAA4C;IAClE,WAAW,EAAE,SAAS;CACvB,CAAC;AAEF,MAAM,MAAM,GAAc;IACxB,oBAAoB,EAAE,4CAA4C;IAClE,WAAW,EAAE,4CAA4C;CAC1D,CAAC;AAEF,MAAM,MAAM,GAAc;IACxB,oBAAoB,EAAE,SAAS;IAC/B,WAAW,EAAE,4CAA4C;CAC1D,CAAC;AAEF,MAAM,OAAO,GAAc;IACzB,oBAAoB,EAAE,SAAS;IAC/B,WAAW,EAAE,SAAS;CACvB,CAAC;AAEF,MAAM,SAAS,GAA6C;IAC1D,CAAC,cAAO,CAAC,OAAO,CAAC,EAAE,OAAO;IAC1B,CAAC,cAAO,CAAC,MAAM,CAAC,EAAE,MAAM;IACxB,CAAC,cAAO,CAAC,MAAM,CAAC,EAAE,MAAM;IACxB,CAAC,cAAO,CAAC,OAAO,CAAC,EAAE,OAAO;CAC3B,CAAC;AAEK,MAAM,WAAW,GAAG,CACzB,OAAe,EACf,QAAyB,EACR,EAAE;IACnB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;QAC7C,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC;KAC/D;IACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAClE,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;KAC5D;IACD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAkB,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxD,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,EAAE,CAAC,CAAC;KAC/D;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAfW,QAAA,WAAW,eAetB;AAEW,QAAA,4BAA4B,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './contracts';
|
|
2
|
+
export * from './porter';
|
|
3
|
+
export * from './types';
|
|
4
|
+
export * from './utils';
|
|
5
|
+
export * from './web3';
|
|
6
|
+
export { Ciphertext, EncryptedTreasureMap, HRAC, MessageKit, PublicKey, SecretKey, Signer, TreasureMap, VerifiedKeyFrag, initialize, } from '@nucypher/nucypher-core';
|
|
@@ -0,0 +1,35 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.initialize = exports.VerifiedKeyFrag = exports.TreasureMap = exports.Signer = exports.SecretKey = exports.PublicKey = exports.MessageKit = exports.HRAC = exports.EncryptedTreasureMap = exports.Ciphertext = void 0;
|
|
18
|
+
__exportStar(require("./contracts"), exports);
|
|
19
|
+
__exportStar(require("./porter"), exports);
|
|
20
|
+
__exportStar(require("./types"), exports);
|
|
21
|
+
__exportStar(require("./utils"), exports);
|
|
22
|
+
__exportStar(require("./web3"), exports);
|
|
23
|
+
// Re-exports
|
|
24
|
+
var nucypher_core_1 = require("@nucypher/nucypher-core");
|
|
25
|
+
Object.defineProperty(exports, "Ciphertext", { enumerable: true, get: function () { return nucypher_core_1.Ciphertext; } });
|
|
26
|
+
Object.defineProperty(exports, "EncryptedTreasureMap", { enumerable: true, get: function () { return nucypher_core_1.EncryptedTreasureMap; } });
|
|
27
|
+
Object.defineProperty(exports, "HRAC", { enumerable: true, get: function () { return nucypher_core_1.HRAC; } });
|
|
28
|
+
Object.defineProperty(exports, "MessageKit", { enumerable: true, get: function () { return nucypher_core_1.MessageKit; } });
|
|
29
|
+
Object.defineProperty(exports, "PublicKey", { enumerable: true, get: function () { return nucypher_core_1.PublicKey; } });
|
|
30
|
+
Object.defineProperty(exports, "SecretKey", { enumerable: true, get: function () { return nucypher_core_1.SecretKey; } });
|
|
31
|
+
Object.defineProperty(exports, "Signer", { enumerable: true, get: function () { return nucypher_core_1.Signer; } });
|
|
32
|
+
Object.defineProperty(exports, "TreasureMap", { enumerable: true, get: function () { return nucypher_core_1.TreasureMap; } });
|
|
33
|
+
Object.defineProperty(exports, "VerifiedKeyFrag", { enumerable: true, get: function () { return nucypher_core_1.VerifiedKeyFrag; } });
|
|
34
|
+
Object.defineProperty(exports, "initialize", { enumerable: true, get: function () { return nucypher_core_1.initialize; } });
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB;AACxB,0CAAwB;AACxB,yCAAuB;AAEvB,aAAa;AACb,yDAWiC;AAV/B,2GAAA,UAAU,OAAA;AACV,qHAAA,oBAAoB,OAAA;AACpB,qGAAA,IAAI,OAAA;AACJ,2GAAA,UAAU,OAAA;AACV,0GAAA,SAAS,OAAA;AACT,0GAAA,SAAS,OAAA;AACT,uGAAA,MAAM,OAAA;AACN,4GAAA,WAAW,OAAA;AACX,gHAAA,eAAe,OAAA;AACf,2GAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { CapsuleFrag, EncryptedThresholdDecryptionRequest, EncryptedThresholdDecryptionResponse, PublicKey, RetrievalKit, TreasureMap } from '@nucypher/nucypher-core';
|
|
2
|
+
import { ChecksumAddress, HexEncodedBytes } from './types';
|
|
3
|
+
type Network = 'mainnet' | 'tapir' | 'oryx' | 'lynx';
|
|
4
|
+
export declare const getPorterUri: (network: Network) => string;
|
|
5
|
+
export type Ursula = {
|
|
6
|
+
readonly checksumAddress: ChecksumAddress;
|
|
7
|
+
readonly uri: string;
|
|
8
|
+
readonly encryptingKey: PublicKey;
|
|
9
|
+
};
|
|
10
|
+
type UrsulaResponse = {
|
|
11
|
+
readonly checksum_address: ChecksumAddress;
|
|
12
|
+
readonly uri: string;
|
|
13
|
+
readonly encrypting_key: HexEncodedBytes;
|
|
14
|
+
};
|
|
15
|
+
export type GetUrsulasResult = {
|
|
16
|
+
readonly result: {
|
|
17
|
+
readonly ursulas: readonly UrsulaResponse[];
|
|
18
|
+
};
|
|
19
|
+
readonly version: string;
|
|
20
|
+
};
|
|
21
|
+
export type RetrieveCFragsResult = {
|
|
22
|
+
readonly cFrags: Record<ChecksumAddress, CapsuleFrag>;
|
|
23
|
+
readonly errors: Record<ChecksumAddress, string>;
|
|
24
|
+
};
|
|
25
|
+
export type CbdDecryptResult = {
|
|
26
|
+
encryptedResponses: Record<string, EncryptedThresholdDecryptionResponse>;
|
|
27
|
+
errors: Record<string, string>;
|
|
28
|
+
};
|
|
29
|
+
export declare class PorterClient {
|
|
30
|
+
readonly porterUrl: URL;
|
|
31
|
+
constructor(porterUri: string);
|
|
32
|
+
getUrsulas(quantity: number, excludeUrsulas?: readonly ChecksumAddress[], includeUrsulas?: readonly ChecksumAddress[]): Promise<readonly Ursula[]>;
|
|
33
|
+
retrieveCFrags(treasureMap: TreasureMap, retrievalKits: readonly RetrievalKit[], aliceVerifyingKey: PublicKey, bobEncryptingKey: PublicKey, bobVerifyingKey: PublicKey, conditionContextJSON?: string | undefined): Promise<readonly RetrieveCFragsResult[]>;
|
|
34
|
+
cbdDecrypt(encryptedRequests: Record<string, EncryptedThresholdDecryptionRequest>, threshold: number): Promise<CbdDecryptResult>;
|
|
35
|
+
}
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.PorterClient = exports.getPorterUri = void 0;
|
|
7
|
+
const nucypher_core_1 = require("@nucypher/nucypher-core");
|
|
8
|
+
const axios_1 = __importDefault(require("axios"));
|
|
9
|
+
const qs_1 = __importDefault(require("qs"));
|
|
10
|
+
const utils_1 = require("./utils");
|
|
11
|
+
const PORTER_URIS = {
|
|
12
|
+
mainnet: 'https://porter.nucypher.community',
|
|
13
|
+
tapir: 'https://porter-tapir.nucypher.community',
|
|
14
|
+
oryx: 'https://porter-oryx.nucypher.community',
|
|
15
|
+
lynx: 'https://porter-lynx.nucypher.community',
|
|
16
|
+
};
|
|
17
|
+
const getPorterUri = (network) => {
|
|
18
|
+
const uri = PORTER_URIS[network];
|
|
19
|
+
if (!uri) {
|
|
20
|
+
throw new Error(`No default Porter URI found for network: ${network}`);
|
|
21
|
+
}
|
|
22
|
+
return PORTER_URIS[network];
|
|
23
|
+
};
|
|
24
|
+
exports.getPorterUri = getPorterUri;
|
|
25
|
+
class PorterClient {
|
|
26
|
+
porterUrl;
|
|
27
|
+
constructor(porterUri) {
|
|
28
|
+
this.porterUrl = new URL(porterUri);
|
|
29
|
+
}
|
|
30
|
+
async getUrsulas(quantity, excludeUrsulas = [], includeUrsulas = []) {
|
|
31
|
+
const params = {
|
|
32
|
+
quantity,
|
|
33
|
+
exclude_ursulas: excludeUrsulas,
|
|
34
|
+
include_ursulas: includeUrsulas,
|
|
35
|
+
};
|
|
36
|
+
const resp = await axios_1.default.get(new URL('/get_ursulas', this.porterUrl).toString(), {
|
|
37
|
+
params,
|
|
38
|
+
paramsSerializer: (params) => {
|
|
39
|
+
return qs_1.default.stringify(params, { arrayFormat: 'comma' });
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
return resp.data.result.ursulas.map((u) => ({
|
|
43
|
+
checksumAddress: u.checksum_address,
|
|
44
|
+
uri: u.uri,
|
|
45
|
+
encryptingKey: nucypher_core_1.PublicKey.fromCompressedBytes((0, utils_1.fromHexString)(u.encrypting_key)),
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
async retrieveCFrags(treasureMap, retrievalKits, aliceVerifyingKey, bobEncryptingKey, bobVerifyingKey, conditionContextJSON = undefined) {
|
|
49
|
+
const data = {
|
|
50
|
+
treasure_map: (0, utils_1.toBase64)(treasureMap.toBytes()),
|
|
51
|
+
retrieval_kits: retrievalKits.map((rk) => (0, utils_1.toBase64)(rk.toBytes())),
|
|
52
|
+
alice_verifying_key: (0, utils_1.toHexString)(aliceVerifyingKey.toCompressedBytes()),
|
|
53
|
+
bob_encrypting_key: (0, utils_1.toHexString)(bobEncryptingKey.toCompressedBytes()),
|
|
54
|
+
bob_verifying_key: (0, utils_1.toHexString)(bobVerifyingKey.toCompressedBytes()),
|
|
55
|
+
context: conditionContextJSON,
|
|
56
|
+
};
|
|
57
|
+
const resp = await axios_1.default.post(new URL('/retrieve_cfrags', this.porterUrl).toString(), data);
|
|
58
|
+
return resp.data.result.retrieval_results.map(({ cfrags, errors }) => {
|
|
59
|
+
const parsed = Object.keys(cfrags).map((address) => [
|
|
60
|
+
address,
|
|
61
|
+
nucypher_core_1.CapsuleFrag.fromBytes((0, utils_1.fromBase64)(cfrags[address])),
|
|
62
|
+
]);
|
|
63
|
+
const cFrags = Object.fromEntries(parsed);
|
|
64
|
+
return { cFrags, errors };
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
async cbdDecrypt(encryptedRequests, threshold) {
|
|
68
|
+
const data = {
|
|
69
|
+
encrypted_decryption_requests: Object.fromEntries(Object.entries(encryptedRequests).map(([ursula, encryptedRequest]) => [
|
|
70
|
+
ursula,
|
|
71
|
+
(0, utils_1.toBase64)(encryptedRequest.toBytes()),
|
|
72
|
+
])),
|
|
73
|
+
threshold,
|
|
74
|
+
};
|
|
75
|
+
const resp = await axios_1.default.post(new URL('/cbd_decrypt', this.porterUrl).toString(), data);
|
|
76
|
+
const { encrypted_decryption_responses, errors } = resp.data.result.decryption_results;
|
|
77
|
+
const decryptionResponses = Object.entries(encrypted_decryption_responses).map(([address, encryptedResponseBase64]) => {
|
|
78
|
+
const encryptedResponse = nucypher_core_1.EncryptedThresholdDecryptionResponse.fromBytes((0, utils_1.fromBase64)(encryptedResponseBase64));
|
|
79
|
+
return [address, encryptedResponse];
|
|
80
|
+
});
|
|
81
|
+
const encryptedResponses = Object.fromEntries(decryptionResponses);
|
|
82
|
+
return { encryptedResponses, errors };
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.PorterClient = PorterClient;
|
|
86
|
+
//# sourceMappingURL=porter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"porter.js","sourceRoot":"","sources":["../../src/porter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const toBytes: (str: string) => Uint8Array;
|
|
2
|
+
export declare const fromBytes: (bytes: Uint8Array) => string;
|
|
3
|
+
export declare const fromHexString: (hexString: string) => Uint8Array;
|
|
4
|
+
export declare const toHexString: (bytes: Uint8Array) => string;
|
|
5
|
+
export declare const toBase64: (bytes: Uint8Array) => string;
|
|
6
|
+
export declare const fromBase64: (str: string) => Uint8Array;
|
|
7
|
+
export declare const base64ToU8Receiver: (_key: string, value: unknown) => unknown;
|
|
8
|
+
export declare const toJSON: (obj: unknown) => string;
|
|
9
|
+
export declare const fromJSON: (json: string) => any;
|
|
10
|
+
export declare const zip: <T, Z>(a: readonly T[], b: readonly Z[]) => readonly (readonly [a: T, b: Z])[];
|
|
11
|
+
export declare const toEpoch: (date: Date) => number;
|
|
12
|
+
export declare const objectEquals: (a: unknown, b: unknown, strict?: boolean) => boolean;
|
|
13
|
+
export declare const omit: (obj: Record<string, unknown>, keys: string[]) => {
|
|
14
|
+
[x: string]: unknown;
|
|
15
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.omit = exports.objectEquals = exports.toEpoch = exports.zip = exports.fromJSON = exports.toJSON = exports.base64ToU8Receiver = exports.fromBase64 = exports.toBase64 = exports.toHexString = exports.fromHexString = exports.fromBytes = exports.toBytes = void 0;
|
|
7
|
+
const deep_equal_1 = __importDefault(require("deep-equal"));
|
|
8
|
+
// TODO: Replace byte and hex manipulation with ethers.js
|
|
9
|
+
const toBytes = (str) => new TextEncoder().encode(str);
|
|
10
|
+
exports.toBytes = toBytes;
|
|
11
|
+
const fromBytes = (bytes) => new TextDecoder().decode(bytes);
|
|
12
|
+
exports.fromBytes = fromBytes;
|
|
13
|
+
const fromHexString = (hexString) => {
|
|
14
|
+
if (hexString.startsWith('0x')) {
|
|
15
|
+
hexString = hexString.slice(2);
|
|
16
|
+
}
|
|
17
|
+
const matches = hexString.match(/.{1,2}/g) ?? [];
|
|
18
|
+
return new Uint8Array(matches.map((byte) => parseInt(byte, 16)));
|
|
19
|
+
};
|
|
20
|
+
exports.fromHexString = fromHexString;
|
|
21
|
+
const toHexString = (bytes) => bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');
|
|
22
|
+
exports.toHexString = toHexString;
|
|
23
|
+
const toBase64 = (bytes) => btoa(String.fromCharCode(...bytes));
|
|
24
|
+
exports.toBase64 = toBase64;
|
|
25
|
+
const fromBase64 = (str) => Uint8Array.from(atob(str), (c) => c.charCodeAt(0));
|
|
26
|
+
exports.fromBase64 = fromBase64;
|
|
27
|
+
const base64ToU8Receiver = (_key, value) => {
|
|
28
|
+
if (typeof value === 'string' && value.startsWith('base64:')) {
|
|
29
|
+
return (0, exports.fromBase64)(value.split('base64:')[1]);
|
|
30
|
+
}
|
|
31
|
+
return value;
|
|
32
|
+
};
|
|
33
|
+
exports.base64ToU8Receiver = base64ToU8Receiver;
|
|
34
|
+
const sortedReplacer = (_key, value) => {
|
|
35
|
+
if (value instanceof Object && !(value instanceof Array)) {
|
|
36
|
+
return Object.keys(value)
|
|
37
|
+
.sort()
|
|
38
|
+
.reduce((sorted, key) => {
|
|
39
|
+
sorted[key] = value[key];
|
|
40
|
+
return sorted;
|
|
41
|
+
}, {});
|
|
42
|
+
}
|
|
43
|
+
return value;
|
|
44
|
+
};
|
|
45
|
+
const u8ToBase64Replacer = (_key, value) => {
|
|
46
|
+
if (value instanceof Uint8Array) {
|
|
47
|
+
return `base64:${(0, exports.toBase64)(value)}`;
|
|
48
|
+
}
|
|
49
|
+
return value;
|
|
50
|
+
};
|
|
51
|
+
const sortedSerializingReplacer = (_key, value) => {
|
|
52
|
+
const serializedValue = u8ToBase64Replacer(_key, value);
|
|
53
|
+
return sortedReplacer(_key, serializedValue);
|
|
54
|
+
};
|
|
55
|
+
const toJSON = (obj) => JSON.stringify(obj, sortedSerializingReplacer);
|
|
56
|
+
exports.toJSON = toJSON;
|
|
57
|
+
const fromJSON = (json) => JSON.parse(json, exports.base64ToU8Receiver);
|
|
58
|
+
exports.fromJSON = fromJSON;
|
|
59
|
+
const zip = (a, b) => a.map((k, i) => [k, b[i]]);
|
|
60
|
+
exports.zip = zip;
|
|
61
|
+
const toEpoch = (date) => (date.getTime() / 1000) | 0;
|
|
62
|
+
exports.toEpoch = toEpoch;
|
|
63
|
+
const objectEquals = (a, b, strict = true) => (0, deep_equal_1.default)(a, b, { strict });
|
|
64
|
+
exports.objectEquals = objectEquals;
|
|
65
|
+
const omit = (obj, keys) => {
|
|
66
|
+
const copy = { ...obj };
|
|
67
|
+
keys.forEach((key) => delete copy[key]);
|
|
68
|
+
return copy;
|
|
69
|
+
};
|
|
70
|
+
exports.omit = omit;
|
|
71
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/web3.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toCanonicalAddress = exports.ChainId = void 0;
|
|
4
|
+
const utils_1 = require("./utils");
|
|
5
|
+
var ChainId;
|
|
6
|
+
(function (ChainId) {
|
|
7
|
+
ChainId[ChainId["POLYGON"] = 137] = "POLYGON";
|
|
8
|
+
ChainId[ChainId["MUMBAI"] = 80001] = "MUMBAI";
|
|
9
|
+
ChainId[ChainId["GOERLI"] = 5] = "GOERLI";
|
|
10
|
+
ChainId[ChainId["MAINNET"] = 1] = "MAINNET";
|
|
11
|
+
})(ChainId || (exports.ChainId = ChainId = {}));
|
|
12
|
+
const toCanonicalAddress = (address) => {
|
|
13
|
+
const ethAddressStringPrefix = '0x';
|
|
14
|
+
const nonPrefixed = address.startsWith(ethAddressStringPrefix)
|
|
15
|
+
? address.substring(ethAddressStringPrefix.length)
|
|
16
|
+
: address;
|
|
17
|
+
return (0, utils_1.fromHexString)(nonPrefixed);
|
|
18
|
+
};
|
|
19
|
+
exports.toCanonicalAddress = toCanonicalAddress;
|
|
20
|
+
//# sourceMappingURL=web3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web3.js","sourceRoot":"","sources":["../../src/web3.ts"],"names":[],"mappings":";;;AAAA,mCAAwC;AAExC,IAAY,OAKX;AALD,WAAY,OAAO;IACjB,6CAAa,CAAA;IACb,6CAAc,CAAA;IACd,yCAAU,CAAA;IACV,2CAAW,CAAA;AACb,CAAC,EALW,OAAO,uBAAP,OAAO,QAKlB;AAEM,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAAc,EAAE;IAChE,MAAM,sBAAsB,GAAG,IAAI,CAAC;IACpC,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC;QAC5D,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,sBAAsB,CAAC,MAAM,CAAC;QAClD,CAAC,CAAC,OAAO,CAAC;IACZ,OAAO,IAAA,qBAAa,EAAC,WAAW,CAAC,CAAC;AACpC,CAAC,CAAC;AANW,QAAA,kBAAkB,sBAM7B"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { DkgPublicKey, SessionStaticKey, ThresholdMessageKit } from '@nucypher/nucypher-core';
|
|
2
|
+
import { BigNumberish, ethers } from 'ethers';
|
|
3
|
+
import { ChecksumAddress } from '../../types';
|
|
4
|
+
import { BLS12381 } from '../ethers-typechain/Coordinator';
|
|
5
|
+
export interface CoordinatorRitual {
|
|
6
|
+
initiator: string;
|
|
7
|
+
initTimestamp: number;
|
|
8
|
+
endTimestamp: number;
|
|
9
|
+
totalTranscripts: number;
|
|
10
|
+
totalAggregations: number;
|
|
11
|
+
authority: string;
|
|
12
|
+
dkgSize: number;
|
|
13
|
+
threshold: number;
|
|
14
|
+
aggregationMismatch: boolean;
|
|
15
|
+
accessController: string;
|
|
16
|
+
publicKey: BLS12381.G1PointStructOutput;
|
|
17
|
+
aggregatedTranscript: string;
|
|
18
|
+
}
|
|
19
|
+
export type DkgParticipant = {
|
|
20
|
+
provider: string;
|
|
21
|
+
aggregated: boolean;
|
|
22
|
+
decryptionRequestStaticKey: SessionStaticKey;
|
|
23
|
+
};
|
|
24
|
+
export declare enum DkgRitualState {
|
|
25
|
+
NON_INITIATED = 0,
|
|
26
|
+
AWAITING_TRANSCRIPTS = 1,
|
|
27
|
+
AWAITING_AGGREGATIONS = 2,
|
|
28
|
+
TIMEOUT = 3,
|
|
29
|
+
INVALID = 4,
|
|
30
|
+
FINALIZED = 5
|
|
31
|
+
}
|
|
32
|
+
export declare class DkgCoordinatorAgent {
|
|
33
|
+
static getParticipants(provider: ethers.providers.Provider, ritualId: number): Promise<DkgParticipant[]>;
|
|
34
|
+
static initializeRitual(provider: ethers.providers.Provider, signer: ethers.Signer, providers: ChecksumAddress[], authority: string, duration: BigNumberish, accessController: string): Promise<number>;
|
|
35
|
+
static getRitual(provider: ethers.providers.Provider, ritualId: number): Promise<CoordinatorRitual>;
|
|
36
|
+
static getRitualState(provider: ethers.providers.Provider, ritualId: number): Promise<DkgRitualState>;
|
|
37
|
+
static onRitualEndEvent(provider: ethers.providers.Provider, ritualId: number, callback: (successful: boolean) => void): Promise<void>;
|
|
38
|
+
static getRitualIdFromPublicKey(provider: ethers.providers.Provider, dkgPublicKey: DkgPublicKey): Promise<number>;
|
|
39
|
+
static isEncryptionAuthorized(provider: ethers.providers.Provider, ritualId: number, thresholdMessageKit: ThresholdMessageKit): Promise<boolean>;
|
|
40
|
+
private static connectReadOnly;
|
|
41
|
+
private static connectReadWrite;
|
|
42
|
+
private static connect;
|
|
43
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { SessionStaticKey, } from '@nucypher/nucypher-core';
|
|
2
|
+
import { fromHexString } from '../../utils';
|
|
3
|
+
import { Coordinator__factory } from '../ethers-typechain';
|
|
4
|
+
import { DEFAULT_WAIT_N_CONFIRMATIONS, getContract } from '../registry';
|
|
5
|
+
export var DkgRitualState;
|
|
6
|
+
(function (DkgRitualState) {
|
|
7
|
+
DkgRitualState[DkgRitualState["NON_INITIATED"] = 0] = "NON_INITIATED";
|
|
8
|
+
DkgRitualState[DkgRitualState["AWAITING_TRANSCRIPTS"] = 1] = "AWAITING_TRANSCRIPTS";
|
|
9
|
+
DkgRitualState[DkgRitualState["AWAITING_AGGREGATIONS"] = 2] = "AWAITING_AGGREGATIONS";
|
|
10
|
+
DkgRitualState[DkgRitualState["TIMEOUT"] = 3] = "TIMEOUT";
|
|
11
|
+
DkgRitualState[DkgRitualState["INVALID"] = 4] = "INVALID";
|
|
12
|
+
DkgRitualState[DkgRitualState["FINALIZED"] = 5] = "FINALIZED";
|
|
13
|
+
})(DkgRitualState || (DkgRitualState = {}));
|
|
14
|
+
export class DkgCoordinatorAgent {
|
|
15
|
+
static async getParticipants(provider, ritualId) {
|
|
16
|
+
const coordinator = await this.connectReadOnly(provider);
|
|
17
|
+
const participants = await coordinator.getParticipants(ritualId);
|
|
18
|
+
return participants.map((participant) => {
|
|
19
|
+
return {
|
|
20
|
+
provider: participant.provider,
|
|
21
|
+
aggregated: participant.aggregated,
|
|
22
|
+
decryptionRequestStaticKey: SessionStaticKey.fromBytes(fromHexString(participant.decryptionRequestStaticKey)),
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
static async initializeRitual(provider, signer, providers, authority, duration, accessController) {
|
|
27
|
+
const coordinator = await this.connectReadWrite(provider, signer);
|
|
28
|
+
const tx = await coordinator.initiateRitual(providers, authority, duration, accessController);
|
|
29
|
+
const txReceipt = await tx.wait(DEFAULT_WAIT_N_CONFIRMATIONS);
|
|
30
|
+
const [ritualStartEvent] = txReceipt.events ?? [];
|
|
31
|
+
if (!ritualStartEvent) {
|
|
32
|
+
throw new Error('Ritual start event not found');
|
|
33
|
+
}
|
|
34
|
+
return ritualStartEvent.args?.ritualId;
|
|
35
|
+
}
|
|
36
|
+
static async getRitual(provider, ritualId) {
|
|
37
|
+
const coordinator = await this.connectReadOnly(provider);
|
|
38
|
+
return coordinator.rituals(ritualId);
|
|
39
|
+
}
|
|
40
|
+
static async getRitualState(provider, ritualId) {
|
|
41
|
+
const coordinator = await this.connectReadOnly(provider);
|
|
42
|
+
return await coordinator.getRitualState(ritualId);
|
|
43
|
+
}
|
|
44
|
+
static async onRitualEndEvent(provider, ritualId, callback) {
|
|
45
|
+
const coordinator = await this.connectReadOnly(provider);
|
|
46
|
+
// We leave `initiator` undefined because we don't care who the initiator is
|
|
47
|
+
// We leave `successful` undefined because we don't care if the ritual was successful
|
|
48
|
+
const eventFilter = coordinator.filters.EndRitual(ritualId, undefined);
|
|
49
|
+
coordinator.once(eventFilter, (_ritualId, successful) => {
|
|
50
|
+
callback(successful);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
static async getRitualIdFromPublicKey(provider, dkgPublicKey) {
|
|
54
|
+
const coordinator = await this.connectReadOnly(provider);
|
|
55
|
+
const dkgPublicKeyBytes = dkgPublicKey.toBytes();
|
|
56
|
+
const pointStruct = {
|
|
57
|
+
word0: dkgPublicKeyBytes.slice(0, 32),
|
|
58
|
+
word1: dkgPublicKeyBytes.slice(32, 48),
|
|
59
|
+
};
|
|
60
|
+
return await coordinator.getRitualIdFromPublicKey(pointStruct);
|
|
61
|
+
}
|
|
62
|
+
static async isEncryptionAuthorized(provider, ritualId, thresholdMessageKit) {
|
|
63
|
+
const coordinator = await this.connectReadOnly(provider);
|
|
64
|
+
return await coordinator.isEncryptionAuthorized(ritualId, thresholdMessageKit.acp.authorization, thresholdMessageKit.ciphertextHeader.toBytes());
|
|
65
|
+
}
|
|
66
|
+
static async connectReadOnly(provider) {
|
|
67
|
+
return await this.connect(provider);
|
|
68
|
+
}
|
|
69
|
+
static async connectReadWrite(provider, signer) {
|
|
70
|
+
return await this.connect(provider, signer);
|
|
71
|
+
}
|
|
72
|
+
static async connect(provider, signer) {
|
|
73
|
+
const network = await provider.getNetwork();
|
|
74
|
+
const contractAddress = getContract(network.chainId, 'COORDINATOR');
|
|
75
|
+
return Coordinator__factory.connect(contractAddress, signer ?? provider);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=coordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../../../src/contracts/agents/coordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ethers } from 'ethers';
|
|
2
|
+
import { ChecksumAddress } from '../../types';
|
|
3
|
+
export declare class GlobalAllowListAgent {
|
|
4
|
+
static registerEncrypters(provider: ethers.providers.Provider, signer: ethers.Signer, ritualId: number, encrypters: ChecksumAddress[]): Promise<void>;
|
|
5
|
+
private static connectReadOnly;
|
|
6
|
+
private static connectReadWrite;
|
|
7
|
+
private static connect;
|
|
8
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { GlobalAllowList__factory } from '../ethers-typechain';
|
|
2
|
+
import { DEFAULT_WAIT_N_CONFIRMATIONS, getContract } from '../registry';
|
|
3
|
+
export class GlobalAllowListAgent {
|
|
4
|
+
static async registerEncrypters(provider, signer, ritualId, encrypters) {
|
|
5
|
+
const globalAllowList = await this.connectReadWrite(provider, signer);
|
|
6
|
+
const tx = await globalAllowList.authorize(ritualId, encrypters);
|
|
7
|
+
await tx.wait(DEFAULT_WAIT_N_CONFIRMATIONS);
|
|
8
|
+
}
|
|
9
|
+
static async connectReadOnly(provider) {
|
|
10
|
+
return await this.connect(provider);
|
|
11
|
+
}
|
|
12
|
+
static async connectReadWrite(provider, signer) {
|
|
13
|
+
return await this.connect(provider, signer);
|
|
14
|
+
}
|
|
15
|
+
static async connect(provider, signer) {
|
|
16
|
+
const network = await provider.getNetwork();
|
|
17
|
+
const contractAddress = getContract(network.chainId, 'GLOBAL_ALLOW_LIST');
|
|
18
|
+
return GlobalAllowList__factory.connect(contractAddress, signer ?? provider);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=global-allow-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-allow-list.js","sourceRoot":"","sources":["../../../../src/contracts/agents/global-allow-list.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,4BAA4B,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAExE,MAAM,OAAO,oBAAoB;IACxB,MAAM,CAAC,KAAK,CAAC,kBAAkB,CACpC,QAAmC,EACnC,MAAqB,EACrB,QAAgB,EAChB,UAA6B;QAE7B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACtE,MAAM,EAAE,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACjE,MAAM,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC9C,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,QAAmC;QACtE,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CACnC,QAAmC,EACnC,MAAqB;QAErB,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,OAAO,CAC1B,QAAmC,EACnC,MAAsB;QAEtB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5C,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAC1E,OAAO,wBAAwB,CAAC,OAAO,CACrC,eAAe,EACf,MAAM,IAAI,QAAQ,CACnB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/contracts/agents/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BigNumber, ContractTransaction, ethers } from 'ethers';
|
|
2
|
+
import { ChecksumAddress } from '../../types';
|
|
3
|
+
export declare class PreSubscriptionManagerAgent {
|
|
4
|
+
static createPolicy(provider: ethers.providers.Provider, signer: ethers.Signer, valueInWei: BigNumber, policyId: Uint8Array, size: number, startTimestamp: number, endTimestamp: number, ownerAddress: ChecksumAddress): Promise<ContractTransaction>;
|
|
5
|
+
static getPolicyCost(provider: ethers.providers.Provider, size: number, startTimestamp: number, endTimestamp: number): Promise<BigNumber>;
|
|
6
|
+
private static connectReadOnly;
|
|
7
|
+
private static connectReadWrite;
|
|
8
|
+
private static connect;
|
|
9
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { utils as ethersUtils, } from 'ethers';
|
|
2
|
+
import { SubscriptionManager__factory, } from '../ethers-typechain';
|
|
3
|
+
import { DEFAULT_WAIT_N_CONFIRMATIONS, getContract } from '../registry';
|
|
4
|
+
export class PreSubscriptionManagerAgent {
|
|
5
|
+
static async createPolicy(provider, signer, valueInWei, policyId, size, startTimestamp, endTimestamp, ownerAddress) {
|
|
6
|
+
const subscriptionManager = await this.connectReadWrite(provider, signer);
|
|
7
|
+
const overrides = {
|
|
8
|
+
value: valueInWei.toString(),
|
|
9
|
+
};
|
|
10
|
+
const estimatedGas = await subscriptionManager.estimateGas.createPolicy(ethersUtils.hexlify(policyId), ownerAddress, size, startTimestamp, endTimestamp, overrides);
|
|
11
|
+
const tx = await subscriptionManager.createPolicy(ethersUtils.hexlify(policyId), ownerAddress, size, startTimestamp, endTimestamp, { ...overrides, gasLimit: estimatedGas });
|
|
12
|
+
await tx.wait(DEFAULT_WAIT_N_CONFIRMATIONS);
|
|
13
|
+
return tx;
|
|
14
|
+
}
|
|
15
|
+
static async getPolicyCost(provider, size, startTimestamp, endTimestamp) {
|
|
16
|
+
const subscriptionManager = await this.connectReadOnly(provider);
|
|
17
|
+
return await subscriptionManager.getPolicyCost(size, startTimestamp, endTimestamp);
|
|
18
|
+
}
|
|
19
|
+
static async connectReadOnly(provider) {
|
|
20
|
+
return await this.connect(provider);
|
|
21
|
+
}
|
|
22
|
+
static async connectReadWrite(provider, signer) {
|
|
23
|
+
return await this.connect(provider, signer);
|
|
24
|
+
}
|
|
25
|
+
static async connect(provider, signer) {
|
|
26
|
+
const network = await provider.getNetwork();
|
|
27
|
+
const contractAddress = getContract(network.chainId, 'SUBSCRIPTION_MANAGER');
|
|
28
|
+
return SubscriptionManager__factory.connect(contractAddress, signer ?? provider);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=subscription-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription-manager.js","sourceRoot":"","sources":["../../../../src/contracts/agents/subscription-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,IAAI,WAAW,GACrB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAEL,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,4BAA4B,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAExE,MAAM,OAAO,2BAA2B;IAC/B,MAAM,CAAC,KAAK,CAAC,YAAY,CAC9B,QAAmC,EACnC,MAAqB,EACrB,UAAqB,EACrB,QAAoB,EACpB,IAAY,EACZ,cAAsB,EACtB,YAAoB,EACpB,YAA6B;QAE7B,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1E,MAAM,SAAS,GAAG;YAChB,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE;SAC7B,CAAC;QACF,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,YAAY,CACrE,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,EAC7B,YAAY,EACZ,IAAI,EACJ,cAAc,EACd,YAAY,EACZ,SAAS,CACV,CAAC;QACF,MAAM,EAAE,GAAG,MAAM,mBAAmB,CAAC,YAAY,CAC/C,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,EAC7B,YAAY,EACZ,IAAI,EACJ,cAAc,EACd,YAAY,EACZ,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,CACzC,CAAC;QACF,MAAM,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC5C,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,aAAa,CAC/B,QAAmC,EACnC,IAAY,EACZ,cAAsB,EACtB,YAAoB;QAEpB,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACjE,OAAO,MAAM,mBAAmB,CAAC,aAAa,CAC5C,IAAI,EACJ,cAAc,EACd,YAAY,CACb,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,QAAmC;QACtE,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CACnC,QAAmC,EACnC,MAAqB;QAErB,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,OAAO,CAC1B,QAAmC,EACnC,MAAsB;QAEtB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5C,MAAM,eAAe,GAAG,WAAW,CACjC,OAAO,CAAC,OAAO,EACf,sBAAsB,CACvB,CAAC;QACF,OAAO,4BAA4B,CAAC,OAAO,CACzC,eAAe,EACf,MAAM,IAAI,QAAQ,CACnB,CAAC;IACJ,CAAC;CACF"}
|