@human-protocol/sdk 1.1.5 → 1.1.6

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 (48) hide show
  1. package/README.md +80 -1
  2. package/dist/constants.d.ts +6 -0
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +24 -5
  5. package/dist/encryption.d.ts +84 -0
  6. package/dist/encryption.d.ts.map +1 -0
  7. package/dist/encryption.js +202 -0
  8. package/dist/error.d.ts +2 -2
  9. package/dist/error.d.ts.map +1 -1
  10. package/dist/error.js +3 -3
  11. package/dist/escrow.d.ts +32 -15
  12. package/dist/escrow.d.ts.map +1 -1
  13. package/dist/escrow.js +74 -37
  14. package/dist/index.d.ts +6 -6
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +10 -14
  17. package/dist/interfaces.d.ts +10 -12
  18. package/dist/interfaces.d.ts.map +1 -1
  19. package/dist/kvstore.d.ts +19 -8
  20. package/dist/kvstore.d.ts.map +1 -1
  21. package/dist/kvstore.js +38 -9
  22. package/dist/queries.d.ts +3 -2
  23. package/dist/queries.d.ts.map +1 -1
  24. package/dist/queries.js +4 -7
  25. package/dist/staking.d.ts +16 -7
  26. package/dist/staking.d.ts.map +1 -1
  27. package/dist/staking.js +40 -12
  28. package/dist/storage.d.ts +2 -1
  29. package/dist/storage.d.ts.map +1 -1
  30. package/dist/storage.js +9 -3
  31. package/dist/types.d.ts +8 -0
  32. package/dist/types.d.ts.map +1 -1
  33. package/package.json +2 -1
  34. package/src/constants.ts +24 -5
  35. package/src/encryption.ts +223 -0
  36. package/src/error.ts +2 -4
  37. package/src/escrow.ts +112 -70
  38. package/src/index.ts +6 -12
  39. package/src/interfaces.ts +10 -13
  40. package/src/kvstore.ts +51 -14
  41. package/src/queries.ts +15 -7
  42. package/src/staking.ts +60 -24
  43. package/src/storage.ts +14 -3
  44. package/src/types.ts +8 -0
  45. package/dist/init.d.ts +0 -13
  46. package/dist/init.d.ts.map +0 -1
  47. package/dist/init.js +0 -35
  48. package/src/init.ts +0 -45
package/src/staking.ts CHANGED
@@ -1,18 +1,20 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  import { Provider } from '@ethersproject/abstract-provider';
3
+ import { Network } from '@ethersproject/networks';
3
4
  import {
4
- Staking__factory,
5
- HMToken__factory,
6
- HMToken,
7
- Staking,
8
- RewardPool__factory,
9
- RewardPool,
10
5
  EscrowFactory,
11
6
  EscrowFactory__factory,
7
+ HMToken,
8
+ HMToken__factory,
9
+ RewardPool,
10
+ RewardPool__factory,
11
+ Staking,
12
+ Staking__factory,
12
13
  } from '@human-protocol/core/typechain-types';
13
- import { BigNumber, ethers, Signer } from 'ethers';
14
- import { NetworkData } from './types';
15
- import { IAllocation, IClientParams, IReward, IStaker } from './interfaces';
14
+ import { BigNumber, Signer, ethers } from 'ethers';
15
+ import { NETWORKS } from './constants';
16
+ import { requiresSigner } from './decorators';
17
+ import { ChainId } from './enums';
16
18
  import {
17
19
  ErrorEscrowAddressIsNotProvidedByFactory,
18
20
  ErrorInvalidEscrowAddressProvided,
@@ -20,13 +22,16 @@ import {
20
22
  ErrorInvalidStakerAddressProvided,
21
23
  ErrorInvalidStakingValueSign,
22
24
  ErrorInvalidStakingValueType,
25
+ ErrorProviderDoesNotExist,
23
26
  ErrorStakingGetStakers,
27
+ ErrorUnsupportedChainID,
24
28
  } from './error';
25
- import { gqlFetch, throwError } from './utils';
29
+ import { IAllocation, IReward, IStaker } from './interfaces';
26
30
  import { RAW_REWARDS_QUERY } from './queries';
27
- import { requiresSigner } from './decorators';
31
+ import { NetworkData } from './types';
32
+ import { gqlFetch, throwError } from './utils';
28
33
 
29
- export default class StakingClient {
34
+ export class StakingClient {
30
35
  public signerOrProvider: Signer | Provider;
31
36
  public network: NetworkData;
32
37
  public tokenContract: HMToken;
@@ -34,28 +39,59 @@ export default class StakingClient {
34
39
  public escrowFactoryContract: EscrowFactory;
35
40
 
36
41
  /**
37
- * **Staking constructor**
42
+ * **StakingClient constructor**
38
43
  *
39
- * @param {IClientParams} clientParams - Init client parameters
44
+ * @param {Signer | Provider} signerOrProvider - The Signer or Provider object to interact with the Ethereum network
45
+ * @param {NetworkData} network - The network information required to connect to the Staking contract
40
46
  */
41
- constructor(readonly clientParams: IClientParams) {
42
- this.signerOrProvider = clientParams.signerOrProvider;
43
- this.network = clientParams.network;
44
-
47
+ constructor(signerOrProvider: Signer | Provider, network: NetworkData) {
45
48
  this.stakingContract = Staking__factory.connect(
46
- this.network.stakingAddress,
47
- this.signerOrProvider
49
+ network.stakingAddress,
50
+ signerOrProvider
48
51
  );
49
52
 
50
53
  this.escrowFactoryContract = EscrowFactory__factory.connect(
51
- this.network.factoryAddress,
52
- this.signerOrProvider
54
+ network.factoryAddress,
55
+ signerOrProvider
53
56
  );
54
57
 
55
58
  this.tokenContract = HMToken__factory.connect(
56
- this.network.hmtAddress,
57
- this.signerOrProvider
59
+ network.hmtAddress,
60
+ signerOrProvider
58
61
  );
62
+
63
+ this.signerOrProvider = signerOrProvider;
64
+ this.network = network;
65
+ }
66
+
67
+ /**
68
+ * Creates an instance of StakingClient from a Signer or Provider.
69
+ *
70
+ * @param {Signer | Provider} signerOrProvider - The Signer or Provider object to interact with the Ethereum network
71
+ * @returns {Promise<StakingClient>} - An instance of StakingClient
72
+ * @throws {ErrorProviderDoesNotExist} - Thrown if the provider does not exist for the provided Signer
73
+ * @throws {ErrorUnsupportedChainID} - Thrown if the network's chainId is not supported
74
+ */
75
+ public static async build(signerOrProvider: Signer | Provider) {
76
+ let network: Network;
77
+ if (Signer.isSigner(signerOrProvider)) {
78
+ if (!signerOrProvider.provider) {
79
+ throw ErrorProviderDoesNotExist;
80
+ }
81
+
82
+ network = await signerOrProvider.provider.getNetwork();
83
+ } else {
84
+ network = await signerOrProvider.getNetwork();
85
+ }
86
+
87
+ const chainId: ChainId = network.chainId;
88
+ const networkData = NETWORKS[chainId];
89
+
90
+ if (!networkData) {
91
+ throw ErrorUnsupportedChainID;
92
+ }
93
+
94
+ return new StakingClient(signerOrProvider, networkData);
59
95
  }
60
96
 
61
97
  /**
package/src/storage.ts CHANGED
@@ -13,8 +13,9 @@ import { UploadFile, StorageCredentials, StorageParams } from './types';
13
13
  import { isValidUrl } from './utils';
14
14
  import { HttpStatus } from './constants';
15
15
 
16
- export default class StorageClient {
16
+ export class StorageClient {
17
17
  private client: Minio.Client;
18
+ private clientParams: StorageParams;
18
19
 
19
20
  /**
20
21
  * **Storage client constructor**
@@ -24,6 +25,8 @@ export default class StorageClient {
24
25
  */
25
26
  constructor(credentials: StorageCredentials, params: StorageParams) {
26
27
  try {
28
+ this.clientParams = params;
29
+
27
30
  this.client = new Minio.Client({
28
31
  ...params,
29
32
  accessKey: credentials.accessKey,
@@ -109,14 +112,22 @@ export default class StorageClient {
109
112
  const content = JSON.stringify(file);
110
113
 
111
114
  const hash = crypto.createHash('sha1').update(content).digest('hex');
112
- const key = hash;
115
+ const key = `s3${hash}.json`;
113
116
 
114
117
  try {
115
118
  await this.client.putObject(bucket, key, content, {
116
119
  'Content-Type': 'application/json',
117
120
  });
118
121
 
119
- return { key, hash };
122
+ return {
123
+ key,
124
+ url: `${this.clientParams.useSSL ? 'https' : 'http'}://${
125
+ this.clientParams.endPoint
126
+ }${
127
+ this.clientParams.port ? `:${this.clientParams.port}` : ''
128
+ }/${bucket}/${key}`,
129
+ hash,
130
+ };
120
131
  } catch (e) {
121
132
  throw ErrorStorageFileNotUploaded;
122
133
  }
package/src/types.ts CHANGED
@@ -73,6 +73,10 @@ export type UploadFile = {
73
73
  * Uploaded object key
74
74
  */
75
75
  key: string;
76
+ /**
77
+ * Uploaded object URL
78
+ */
79
+ url: string;
76
80
  /**
77
81
  * Hash of uploaded object key
78
82
  */
@@ -107,6 +111,10 @@ export type NetworkData = {
107
111
  * Staking contract address
108
112
  */
109
113
  stakingAddress: string;
114
+ /**
115
+ * RewardPool contract address
116
+ */
117
+ rewardPoolAddress: string;
110
118
  /**
111
119
  * KVStore contract address
112
120
  */
package/dist/init.d.ts DELETED
@@ -1,13 +0,0 @@
1
- import { Provider } from '@ethersproject/abstract-provider';
2
- import { Signer } from 'ethers';
3
- import { IClientParams } from './interfaces';
4
- export default class InitClient {
5
- /**
6
- * **Get init client parameters**
7
- *
8
- * @param {Signer | Provider} providerOrSigner - Ethereum signer or provider
9
- * @returns {Promise<IClientParams>} - Init client parameters
10
- */
11
- static getParams(signerOrProvider: Signer | Provider): Promise<IClientParams>;
12
- }
13
- //# sourceMappingURL=init.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAO7C,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B;;;;;OAKG;WACU,SAAS,CACpB,gBAAgB,EAAE,MAAM,GAAG,QAAQ,GAClC,OAAO,CAAC,aAAa,CAAC;CAwB1B"}
package/dist/init.js DELETED
@@ -1,35 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const ethers_1 = require("ethers");
4
- const constants_1 = require("./constants");
5
- const error_1 = require("./error");
6
- class InitClient {
7
- /**
8
- * **Get init client parameters**
9
- *
10
- * @param {Signer | Provider} providerOrSigner - Ethereum signer or provider
11
- * @returns {Promise<IClientParams>} - Init client parameters
12
- */
13
- static async getParams(signerOrProvider) {
14
- let network;
15
- if (signerOrProvider instanceof ethers_1.Signer) {
16
- if (!signerOrProvider.provider) {
17
- throw error_1.ErrorInitProviderDoesNotExist;
18
- }
19
- network = await signerOrProvider.provider.getNetwork();
20
- }
21
- else {
22
- network = await signerOrProvider.getNetwork();
23
- }
24
- const chainId = network.chainId;
25
- const networkData = constants_1.NETWORKS[chainId];
26
- if (!networkData) {
27
- throw error_1.ErrorInitUnsupportedChainID;
28
- }
29
- return {
30
- signerOrProvider: signerOrProvider,
31
- network: networkData,
32
- };
33
- }
34
- }
35
- exports.default = InitClient;
package/src/init.ts DELETED
@@ -1,45 +0,0 @@
1
- import { Provider } from '@ethersproject/abstract-provider';
2
- import { Network } from '@ethersproject/networks';
3
- import { Signer } from 'ethers';
4
- import { NETWORKS } from './constants';
5
- import { IClientParams } from './interfaces';
6
- import {
7
- ErrorInitProviderDoesNotExist,
8
- ErrorInitUnsupportedChainID,
9
- } from './error';
10
- import { ChainId } from './enums';
11
-
12
- export default class InitClient {
13
- /**
14
- * **Get init client parameters**
15
- *
16
- * @param {Signer | Provider} providerOrSigner - Ethereum signer or provider
17
- * @returns {Promise<IClientParams>} - Init client parameters
18
- */
19
- static async getParams(
20
- signerOrProvider: Signer | Provider
21
- ): Promise<IClientParams> {
22
- let network: Network;
23
- if (signerOrProvider instanceof Signer) {
24
- if (!signerOrProvider.provider) {
25
- throw ErrorInitProviderDoesNotExist;
26
- }
27
-
28
- network = await signerOrProvider.provider.getNetwork();
29
- } else {
30
- network = await signerOrProvider.getNetwork();
31
- }
32
-
33
- const chainId: ChainId = network.chainId;
34
- const networkData = NETWORKS[chainId];
35
-
36
- if (!networkData) {
37
- throw ErrorInitUnsupportedChainID;
38
- }
39
-
40
- return {
41
- signerOrProvider: signerOrProvider,
42
- network: networkData,
43
- };
44
- }
45
- }