@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.
- package/README.md +80 -1
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +24 -5
- package/dist/encryption.d.ts +84 -0
- package/dist/encryption.d.ts.map +1 -0
- package/dist/encryption.js +202 -0
- package/dist/error.d.ts +2 -2
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js +3 -3
- package/dist/escrow.d.ts +48 -15
- package/dist/escrow.d.ts.map +1 -1
- package/dist/escrow.js +118 -37
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -14
- package/dist/interfaces.d.ts +11 -12
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/kvstore.d.ts +19 -8
- package/dist/kvstore.d.ts.map +1 -1
- package/dist/kvstore.js +38 -9
- package/dist/queries.d.ts +3 -2
- package/dist/queries.d.ts.map +1 -1
- package/dist/queries.js +4 -7
- package/dist/staking.d.ts +17 -8
- package/dist/staking.d.ts.map +1 -1
- package/dist/staking.js +44 -14
- package/dist/storage.d.ts +2 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +9 -3
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -1
- package/src/constants.ts +24 -5
- package/src/encryption.ts +223 -0
- package/src/error.ts +2 -4
- package/src/escrow.ts +166 -70
- package/src/index.ts +6 -12
- package/src/interfaces.ts +11 -13
- package/src/kvstore.ts +51 -14
- package/src/queries.ts +15 -7
- package/src/staking.ts +64 -26
- package/src/storage.ts +14 -3
- package/src/types.ts +8 -0
- package/dist/init.d.ts +0 -13
- package/dist/init.d.ts.map +0 -1
- package/dist/init.js +0 -35
- 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,
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
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 {
|
|
29
|
+
import { IAllocation, IReward, IStaker } from './interfaces';
|
|
26
30
|
import { RAW_REWARDS_QUERY } from './queries';
|
|
27
|
-
import {
|
|
31
|
+
import { NetworkData } from './types';
|
|
32
|
+
import { gqlFetch, throwError } from './utils';
|
|
28
33
|
|
|
29
|
-
export
|
|
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
|
-
* **
|
|
42
|
+
* **StakingClient constructor**
|
|
38
43
|
*
|
|
39
|
-
* @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
|
|
40
46
|
*/
|
|
41
|
-
constructor(
|
|
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
|
-
|
|
47
|
-
|
|
49
|
+
network.stakingAddress,
|
|
50
|
+
signerOrProvider
|
|
48
51
|
);
|
|
49
52
|
|
|
50
53
|
this.escrowFactoryContract = EscrowFactory__factory.connect(
|
|
51
|
-
|
|
52
|
-
|
|
54
|
+
network.factoryAddress,
|
|
55
|
+
signerOrProvider
|
|
53
56
|
);
|
|
54
57
|
|
|
55
58
|
this.tokenContract = HMToken__factory.connect(
|
|
56
|
-
|
|
57
|
-
|
|
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<
|
|
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
|
|
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 {
|
|
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
|
package/dist/init.d.ts.map
DELETED
|
@@ -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
|
-
}
|