@human-protocol/sdk 1.1.5 → 1.1.7

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 +48 -15
  12. package/dist/escrow.d.ts.map +1 -1
  13. package/dist/escrow.js +118 -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 +11 -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 +17 -8
  26. package/dist/staking.d.ts.map +1 -1
  27. package/dist/staking.js +44 -14
  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 +166 -70
  38. package/src/index.ts +6 -12
  39. package/src/interfaces.ts +11 -13
  40. package/src/kvstore.ts +51 -14
  41. package/src/queries.ts +15 -7
  42. package/src/staking.ts +64 -26
  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
  /**
@@ -319,6 +355,7 @@ export default class StakingClient {
319
355
  .sub(tokensLocked);
320
356
 
321
357
  return {
358
+ staker,
322
359
  tokensStaked,
323
360
  tokensAllocated,
324
361
  tokensLocked,
@@ -333,7 +370,7 @@ export default class StakingClient {
333
370
  /**
334
371
  * **Returns the staking information about all stakers of the protocol.*
335
372
  *
336
- * @returns {Promise<IStakerInfo>} - Return an array with all stakers information
373
+ * @returns {Promise<IStaker[]>} - Return an array with all stakers information
337
374
  * @throws {Error} - An error object if an error occurred, results otherwise
338
375
  */
339
376
  public async getAllStakers(): Promise<IStaker[]> {
@@ -344,7 +381,7 @@ export default class StakingClient {
344
381
  throw ErrorStakingGetStakers;
345
382
  }
346
383
 
347
- return result[1].map((staker: any) => {
384
+ return result[1].map((staker: any, index: number) => {
348
385
  const tokensStaked = BigNumber.from(staker.tokensStaked),
349
386
  tokensAllocated = BigNumber.from(staker.tokensAllocated),
350
387
  tokensLocked = BigNumber.from(staker.tokensLocked),
@@ -355,6 +392,7 @@ export default class StakingClient {
355
392
  .sub(tokensLocked);
356
393
 
357
394
  return {
395
+ staker: result[0][index],
358
396
  tokensStaked,
359
397
  tokensAllocated,
360
398
  tokensLocked,
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
- }