@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.
- package/README.md +80 -1
- package/dist/constants.d.ts +52 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +222 -0
- package/dist/decorators.d.ts +2 -0
- package/dist/decorators.d.ts.map +1 -0
- package/dist/decorators.js +17 -0
- package/dist/encryption.d.ts +84 -0
- package/dist/encryption.d.ts.map +1 -0
- package/dist/encryption.js +202 -0
- package/dist/enums.d.ts +17 -0
- package/dist/enums.d.ts.map +1 -0
- package/dist/enums.js +20 -0
- package/dist/error.d.ts +196 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +229 -0
- package/dist/escrow.d.ts +201 -0
- package/dist/escrow.d.ts.map +1 -0
- package/dist/escrow.js +651 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/interfaces.d.ts +42 -0
- package/dist/interfaces.d.ts.map +1 -0
- package/dist/interfaces.js +2 -0
- package/dist/kvstore.d.ts +51 -0
- package/dist/kvstore.d.ts.map +1 -0
- package/dist/kvstore.js +135 -0
- package/dist/queries.d.ts +5 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +19 -0
- package/dist/staking.d.ts +130 -0
- package/dist/staking.d.ts.map +1 -0
- package/dist/staking.js +409 -0
- package/dist/storage.d.ts +49 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +171 -0
- package/dist/types.d.ts +131 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +35 -0
- package/dist/utils.d.ts +32 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +99 -0
- package/package.json +4 -1
- package/src/constants.ts +25 -6
- package/src/encryption.ts +223 -0
- package/src/error.ts +2 -4
- package/src/escrow.ts +120 -74
- package/src/index.ts +6 -12
- package/src/interfaces.ts +10 -13
- package/src/kvstore.ts +51 -14
- package/src/queries.ts +15 -7
- package/src/staking.ts +61 -24
- package/src/storage.ts +15 -3
- package/src/types.ts +8 -0
- 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,
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
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 {
|
|
29
|
+
import { IAllocation, IReward, IStaker } from './interfaces';
|
|
25
30
|
import { RAW_REWARDS_QUERY } from './queries';
|
|
26
|
-
import {
|
|
31
|
+
import { NetworkData } from './types';
|
|
32
|
+
import { gqlFetch, throwError } from './utils';
|
|
27
33
|
|
|
28
|
-
export
|
|
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
|
-
* **
|
|
42
|
+
* **StakingClient constructor**
|
|
37
43
|
*
|
|
38
|
-
* @param {
|
|
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(
|
|
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
|
-
|
|
46
|
-
|
|
49
|
+
network.stakingAddress,
|
|
50
|
+
signerOrProvider
|
|
47
51
|
);
|
|
48
52
|
|
|
49
53
|
this.escrowFactoryContract = EscrowFactory__factory.connect(
|
|
50
|
-
|
|
51
|
-
|
|
54
|
+
network.factoryAddress,
|
|
55
|
+
signerOrProvider
|
|
52
56
|
);
|
|
53
57
|
|
|
54
58
|
this.tokenContract = HMToken__factory.connect(
|
|
55
|
-
|
|
56
|
-
|
|
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
|
|
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 {
|
|
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
|
-
}
|