@human-protocol/sdk 1.1.3 → 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 (56) hide show
  1. package/README.md +80 -1
  2. package/dist/constants.d.ts +52 -0
  3. package/dist/constants.d.ts.map +1 -0
  4. package/dist/constants.js +222 -0
  5. package/dist/decorators.d.ts +2 -0
  6. package/dist/decorators.d.ts.map +1 -0
  7. package/dist/decorators.js +17 -0
  8. package/dist/encryption.d.ts +84 -0
  9. package/dist/encryption.d.ts.map +1 -0
  10. package/dist/encryption.js +202 -0
  11. package/dist/enums.d.ts +17 -0
  12. package/dist/enums.d.ts.map +1 -0
  13. package/dist/enums.js +20 -0
  14. package/dist/error.d.ts +196 -0
  15. package/dist/error.d.ts.map +1 -0
  16. package/dist/error.js +229 -0
  17. package/dist/escrow.d.ts +201 -0
  18. package/dist/escrow.d.ts.map +1 -0
  19. package/dist/escrow.js +651 -0
  20. package/dist/index.d.ts +10 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +29 -0
  23. package/dist/interfaces.d.ts +42 -0
  24. package/dist/interfaces.d.ts.map +1 -0
  25. package/dist/interfaces.js +2 -0
  26. package/dist/kvstore.d.ts +51 -0
  27. package/dist/kvstore.d.ts.map +1 -0
  28. package/dist/kvstore.js +135 -0
  29. package/dist/queries.d.ts +5 -0
  30. package/dist/queries.d.ts.map +1 -0
  31. package/dist/queries.js +19 -0
  32. package/dist/staking.d.ts +130 -0
  33. package/dist/staking.d.ts.map +1 -0
  34. package/dist/staking.js +409 -0
  35. package/dist/storage.d.ts +49 -0
  36. package/dist/storage.d.ts.map +1 -0
  37. package/dist/storage.js +171 -0
  38. package/dist/types.d.ts +131 -0
  39. package/dist/types.d.ts.map +1 -0
  40. package/dist/types.js +35 -0
  41. package/dist/utils.d.ts +32 -0
  42. package/dist/utils.d.ts.map +1 -0
  43. package/dist/utils.js +99 -0
  44. package/package.json +4 -1
  45. package/src/constants.ts +25 -6
  46. package/src/encryption.ts +223 -0
  47. package/src/error.ts +2 -4
  48. package/src/escrow.ts +120 -74
  49. package/src/index.ts +6 -12
  50. package/src/interfaces.ts +10 -13
  51. package/src/kvstore.ts +51 -14
  52. package/src/queries.ts +15 -7
  53. package/src/staking.ts +61 -24
  54. package/src/storage.ts +15 -3
  55. package/src/types.ts +8 -0
  56. package/src/init.ts +0 -45
package/src/staking.ts CHANGED
@@ -1,17 +1,20 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
1
2
  import { Provider } from '@ethersproject/abstract-provider';
3
+ import { Network } from '@ethersproject/networks';
2
4
  import {
3
- Staking__factory,
4
- HMToken__factory,
5
- HMToken,
6
- Staking,
7
- RewardPool__factory,
8
- RewardPool,
9
5
  EscrowFactory,
10
6
  EscrowFactory__factory,
7
+ HMToken,
8
+ HMToken__factory,
9
+ RewardPool,
10
+ RewardPool__factory,
11
+ Staking,
12
+ Staking__factory,
11
13
  } from '@human-protocol/core/typechain-types';
12
- import { BigNumber, ethers, Signer } from 'ethers';
13
- import { NetworkData } from './types';
14
- 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';
15
18
  import {
16
19
  ErrorEscrowAddressIsNotProvidedByFactory,
17
20
  ErrorInvalidEscrowAddressProvided,
@@ -19,13 +22,16 @@ import {
19
22
  ErrorInvalidStakerAddressProvided,
20
23
  ErrorInvalidStakingValueSign,
21
24
  ErrorInvalidStakingValueType,
25
+ ErrorProviderDoesNotExist,
22
26
  ErrorStakingGetStakers,
27
+ ErrorUnsupportedChainID,
23
28
  } from './error';
24
- import { gqlFetch, throwError } from './utils';
29
+ import { IAllocation, IReward, IStaker } from './interfaces';
25
30
  import { RAW_REWARDS_QUERY } from './queries';
26
- import { requiresSigner } from './decorators';
31
+ import { NetworkData } from './types';
32
+ import { gqlFetch, throwError } from './utils';
27
33
 
28
- export default class StakingClient {
34
+ export class StakingClient {
29
35
  public signerOrProvider: Signer | Provider;
30
36
  public network: NetworkData;
31
37
  public tokenContract: HMToken;
@@ -33,28 +39,59 @@ export default class StakingClient {
33
39
  public escrowFactoryContract: EscrowFactory;
34
40
 
35
41
  /**
36
- * **Staking constructor**
42
+ * **StakingClient constructor**
37
43
  *
38
- * @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
39
46
  */
40
- constructor(readonly clientParams: IClientParams) {
41
- this.signerOrProvider = clientParams.signerOrProvider;
42
- this.network = clientParams.network;
43
-
47
+ constructor(signerOrProvider: Signer | Provider, network: NetworkData) {
44
48
  this.stakingContract = Staking__factory.connect(
45
- this.network.stakingAddress,
46
- this.signerOrProvider
49
+ network.stakingAddress,
50
+ signerOrProvider
47
51
  );
48
52
 
49
53
  this.escrowFactoryContract = EscrowFactory__factory.connect(
50
- this.network.factoryAddress,
51
- this.signerOrProvider
54
+ network.factoryAddress,
55
+ signerOrProvider
52
56
  );
53
57
 
54
58
  this.tokenContract = HMToken__factory.connect(
55
- this.network.hmtAddress,
56
- this.signerOrProvider
59
+ network.hmtAddress,
60
+ signerOrProvider
57
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);
58
95
  }
59
96
 
60
97
  /**
package/src/storage.ts CHANGED
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
1
2
  import axios from 'axios';
2
3
  import crypto from 'crypto';
3
4
  import * as Minio from 'minio';
@@ -12,8 +13,9 @@ import { UploadFile, StorageCredentials, StorageParams } from './types';
12
13
  import { isValidUrl } from './utils';
13
14
  import { HttpStatus } from './constants';
14
15
 
15
- export default class StorageClient {
16
+ export class StorageClient {
16
17
  private client: Minio.Client;
18
+ private clientParams: StorageParams;
17
19
 
18
20
  /**
19
21
  * **Storage client constructor**
@@ -23,6 +25,8 @@ export default class StorageClient {
23
25
  */
24
26
  constructor(credentials: StorageCredentials, params: StorageParams) {
25
27
  try {
28
+ this.clientParams = params;
29
+
26
30
  this.client = new Minio.Client({
27
31
  ...params,
28
32
  accessKey: credentials.accessKey,
@@ -108,14 +112,22 @@ export default class StorageClient {
108
112
  const content = JSON.stringify(file);
109
113
 
110
114
  const hash = crypto.createHash('sha1').update(content).digest('hex');
111
- const key = hash;
115
+ const key = `s3${hash}.json`;
112
116
 
113
117
  try {
114
118
  await this.client.putObject(bucket, key, content, {
115
119
  'Content-Type': 'application/json',
116
120
  });
117
121
 
118
- 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
+ };
119
131
  } catch (e) {
120
132
  throw ErrorStorageFileNotUploaded;
121
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/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
- }