@super-protocol/sdk-js 3.12.0-beta.0 → 3.12.0-beta.2
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.
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { Contract,
|
|
1
|
+
import { Contract, TransactionReceipt } from 'web3';
|
|
2
2
|
import { abi } from '../contracts/Campaign.js';
|
|
3
3
|
import { TransactionOptions, BlockInfo, Status, Content, ParticipantData, Stat } from '../types/index.js';
|
|
4
4
|
declare class Campaign {
|
|
5
5
|
private static _addressHttps;
|
|
6
6
|
private static _addressWss;
|
|
7
7
|
private static contractHttps?;
|
|
8
|
+
private static contractWss?;
|
|
8
9
|
private static readonly logger;
|
|
9
10
|
static get addressHttps(): string;
|
|
10
11
|
static set addressHttps(newAddress: string);
|
|
11
|
-
static createContract(newAddress: string): Contract<typeof abi
|
|
12
|
+
static createContract(newAddress: string): [Contract<typeof abi>, Contract<typeof abi>];
|
|
12
13
|
static get addressWss(): string;
|
|
13
14
|
static set addressWss(newAddress: string);
|
|
14
15
|
/**
|
|
@@ -16,12 +17,17 @@ declare class Campaign {
|
|
|
16
17
|
*/
|
|
17
18
|
private static checkInit;
|
|
18
19
|
private static getContract;
|
|
20
|
+
static isLinkUniqe(link: string, contract?: Contract<typeof abi>): Promise<{
|
|
21
|
+
clearedLink: string;
|
|
22
|
+
isUniqe: boolean;
|
|
23
|
+
}>;
|
|
19
24
|
static getStat(contract?: Contract<typeof abi>): Promise<Stat>;
|
|
20
|
-
static getStatsByPoints(points:
|
|
25
|
+
static getStatsByPoints(points: number, contract?: Contract<typeof abi>): Promise<string[]>;
|
|
26
|
+
static getStatsByPointsBatch(points: number[], contract?: Contract<typeof abi>): Promise<string[][]>;
|
|
21
27
|
static getParticipantData(participant: string, contract?: Contract<typeof abi>): Promise<ParticipantData>;
|
|
22
28
|
static getContentRange(from: number, to: number, status: Status, contract?: Contract<typeof abi>): Promise<Content[]>;
|
|
23
|
-
static addContent(link: string, referrer: string, transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<
|
|
24
|
-
static updateContent(index: number, contentHash: string, status: Status, transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<
|
|
29
|
+
static addContent(link: string, referrer: string, transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<TransactionReceipt>;
|
|
30
|
+
static updateContent(index: number, contentHash: string, status: Status, transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<TransactionReceipt>;
|
|
25
31
|
static onContentAdded(callback: onContentAddedCallback): () => void;
|
|
26
32
|
static onContentUpdated(callback: onContentUpdated): () => void;
|
|
27
33
|
}
|
|
@@ -13,19 +13,27 @@ class Campaign {
|
|
|
13
13
|
static _addressHttps;
|
|
14
14
|
static _addressWss;
|
|
15
15
|
static contractHttps;
|
|
16
|
+
static contractWss;
|
|
16
17
|
static logger = logger_js_1.default.child({ className: 'Campaign' });
|
|
17
18
|
static get addressHttps() {
|
|
18
19
|
return Campaign._addressHttps;
|
|
19
20
|
}
|
|
20
21
|
static set addressHttps(newAddress) {
|
|
21
22
|
Campaign._addressHttps = newAddress;
|
|
22
|
-
|
|
23
|
+
const [contractHttps, contractWss] = Campaign.createContract(newAddress);
|
|
24
|
+
Campaign.contractHttps = contractHttps;
|
|
25
|
+
Campaign.contractWss = contractWss;
|
|
23
26
|
}
|
|
24
27
|
static createContract(newAddress) {
|
|
25
|
-
|
|
28
|
+
const httpsContract = new store_js_1.default.web3Https.eth.Contract(Campaign_js_1.abi, newAddress, {
|
|
26
29
|
provider: store_js_1.default.web3Https.currentProvider,
|
|
27
30
|
config: { contractDataInputFill: 'data' },
|
|
28
31
|
});
|
|
32
|
+
const wssContract = new store_js_1.default.web3Wss.eth.Contract(Campaign_js_1.abi, newAddress, {
|
|
33
|
+
provider: store_js_1.default.web3Wss.currentProvider,
|
|
34
|
+
config: { contractDataInputFill: 'data' },
|
|
35
|
+
});
|
|
36
|
+
return [httpsContract, wssContract];
|
|
29
37
|
}
|
|
30
38
|
static get addressWss() {
|
|
31
39
|
return Campaign._addressWss;
|
|
@@ -36,21 +44,27 @@ class Campaign {
|
|
|
36
44
|
/**
|
|
37
45
|
* Checks if contract has been initialized, if not - initialize contract
|
|
38
46
|
*/
|
|
39
|
-
static checkInit() {
|
|
47
|
+
static checkInit(wssConnection = false) {
|
|
40
48
|
if (!Campaign.contractHttps) {
|
|
41
49
|
throw Error(`Campaign must be initialized before it can be used`);
|
|
42
50
|
}
|
|
43
|
-
return Campaign.contractHttps;
|
|
51
|
+
return wssConnection ? Campaign.contractWss : Campaign.contractHttps;
|
|
44
52
|
}
|
|
45
53
|
static getContract(contract) {
|
|
46
54
|
return contract ? contract : Campaign.checkInit();
|
|
47
55
|
}
|
|
56
|
+
static async isLinkUniqe(link, contract) {
|
|
57
|
+
return await this.getContract(contract).methods.isLinkUniqe(link).call();
|
|
58
|
+
}
|
|
48
59
|
static async getStat(contract) {
|
|
49
60
|
return await this.getContract(contract).methods.getStat().call();
|
|
50
61
|
}
|
|
51
62
|
static async getStatsByPoints(points, contract) {
|
|
52
63
|
return await this.getContract(contract).methods.getStatsByPoints(points).call();
|
|
53
64
|
}
|
|
65
|
+
static async getStatsByPointsBatch(points, contract) {
|
|
66
|
+
return await this.getContract(contract).methods.getStatsByPointsBatch(points).call();
|
|
67
|
+
}
|
|
54
68
|
static async getParticipantData(participant, contract) {
|
|
55
69
|
return await this.getContract(contract).methods.getParticipantData(participant).call();
|
|
56
70
|
}
|
|
@@ -63,8 +77,7 @@ class Campaign {
|
|
|
63
77
|
if (checkTxBeforeSend) {
|
|
64
78
|
await TxManager_js_1.default.dryRun(contract.methods.addContent(link, referrer), transactionOptions);
|
|
65
79
|
}
|
|
66
|
-
|
|
67
|
-
return store_js_1.default.web3Https.eth.getTransaction(receipt.transactionHash);
|
|
80
|
+
return await TxManager_js_1.default.execute(contract.methods.addContent(link, referrer), transactionOptions, Campaign.addressHttps);
|
|
68
81
|
}
|
|
69
82
|
static async updateContent(index, contentHash, status, transactionOptions, checkTxBeforeSend = false) {
|
|
70
83
|
const contract = this.checkInit();
|
|
@@ -72,8 +85,7 @@ class Campaign {
|
|
|
72
85
|
if (checkTxBeforeSend) {
|
|
73
86
|
await TxManager_js_1.default.dryRun(contract.methods.updateContent(index, contentHash, status), transactionOptions);
|
|
74
87
|
}
|
|
75
|
-
|
|
76
|
-
return store_js_1.default.web3Https.eth.getTransaction(receipt.transactionHash);
|
|
88
|
+
return await TxManager_js_1.default.execute(contract.methods.updateContent(index, contentHash, status), transactionOptions, Campaign.addressHttps);
|
|
77
89
|
}
|
|
78
90
|
static onContentAdded(callback) {
|
|
79
91
|
const listener = index_js_1.BlockchainEventsListener.getInstance();
|
|
@@ -88,7 +100,7 @@ class Campaign {
|
|
|
88
100
|
const onError = (error) => {
|
|
89
101
|
logger.warn(error);
|
|
90
102
|
};
|
|
91
|
-
const contract = this.checkInit();
|
|
103
|
+
const contract = this.checkInit(true);
|
|
92
104
|
return listener.subscribeEvent({
|
|
93
105
|
onError,
|
|
94
106
|
onData,
|
|
@@ -109,7 +121,7 @@ class Campaign {
|
|
|
109
121
|
const onError = (error) => {
|
|
110
122
|
logger.warn(error);
|
|
111
123
|
};
|
|
112
|
-
const contract = this.checkInit();
|
|
124
|
+
const contract = this.checkInit(true);
|
|
113
125
|
return listener.subscribeEvent({
|
|
114
126
|
onError,
|
|
115
127
|
onData,
|
|
@@ -119,4 +131,4 @@ class Campaign {
|
|
|
119
131
|
}
|
|
120
132
|
}
|
|
121
133
|
exports.default = Campaign;
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FtcGFpZ24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhdGljTW9kZWxzL0NhbXBhaWduLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsNkRBQXNDO0FBQ3RDLDBEQUErQztBQUMvQywyREFBZ0M7QUFDaEMsa0RBQW9GO0FBVXBGLHlFQUE4QztBQUM5QyxxREFBa0U7QUFNbEUsTUFBTSxRQUFRO0lBQ0osTUFBTSxDQUFDLGFBQWEsQ0FBUztJQUM3QixNQUFNLENBQUMsV0FBVyxDQUFTO0lBQzNCLE1BQU0sQ0FBQyxhQUFhLENBQXdCO0lBQzVDLE1BQU0sQ0FBQyxXQUFXLENBQXdCO0lBQzFDLE1BQU0sQ0FBVSxNQUFNLEdBQUcsbUJBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUV0RSxNQUFNLEtBQUssWUFBWTtRQUM1QixPQUFPLFFBQVEsQ0FBQyxhQUFhLENBQUM7SUFDaEMsQ0FBQztJQUVNLE1BQU0sS0FBSyxZQUFZLENBQUMsVUFBa0I7UUFDL0MsUUFBUSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUM7UUFDcEMsTUFBTSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pFLFFBQVEsQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ3ZDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQWtCO1FBQzdDLE1BQU0sYUFBYSxHQUFHLElBQUksa0JBQUssQ0FBQyxTQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxpQkFBRyxFQUFFLFVBQVUsRUFBRTtZQUN2RSxRQUFRLEVBQUUsa0JBQUssQ0FBQyxTQUFVLENBQUMsZUFBZTtZQUMxQyxNQUFNLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVB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
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { Contract,
|
|
1
|
+
import { Contract, TransactionReceipt } from 'web3';
|
|
2
2
|
import { abi } from '../contracts/Campaign.js';
|
|
3
3
|
import { TransactionOptions, BlockInfo, Status, Content, ParticipantData, Stat } from '../types/index.js';
|
|
4
4
|
declare class Campaign {
|
|
5
5
|
private static _addressHttps;
|
|
6
6
|
private static _addressWss;
|
|
7
7
|
private static contractHttps?;
|
|
8
|
+
private static contractWss?;
|
|
8
9
|
private static readonly logger;
|
|
9
10
|
static get addressHttps(): string;
|
|
10
11
|
static set addressHttps(newAddress: string);
|
|
11
|
-
static createContract(newAddress: string): Contract<typeof abi
|
|
12
|
+
static createContract(newAddress: string): [Contract<typeof abi>, Contract<typeof abi>];
|
|
12
13
|
static get addressWss(): string;
|
|
13
14
|
static set addressWss(newAddress: string);
|
|
14
15
|
/**
|
|
@@ -16,12 +17,17 @@ declare class Campaign {
|
|
|
16
17
|
*/
|
|
17
18
|
private static checkInit;
|
|
18
19
|
private static getContract;
|
|
20
|
+
static isLinkUniqe(link: string, contract?: Contract<typeof abi>): Promise<{
|
|
21
|
+
clearedLink: string;
|
|
22
|
+
isUniqe: boolean;
|
|
23
|
+
}>;
|
|
19
24
|
static getStat(contract?: Contract<typeof abi>): Promise<Stat>;
|
|
20
|
-
static getStatsByPoints(points:
|
|
25
|
+
static getStatsByPoints(points: number, contract?: Contract<typeof abi>): Promise<string[]>;
|
|
26
|
+
static getStatsByPointsBatch(points: number[], contract?: Contract<typeof abi>): Promise<string[][]>;
|
|
21
27
|
static getParticipantData(participant: string, contract?: Contract<typeof abi>): Promise<ParticipantData>;
|
|
22
28
|
static getContentRange(from: number, to: number, status: Status, contract?: Contract<typeof abi>): Promise<Content[]>;
|
|
23
|
-
static addContent(link: string, referrer: string, transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<
|
|
24
|
-
static updateContent(index: number, contentHash: string, status: Status, transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<
|
|
29
|
+
static addContent(link: string, referrer: string, transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<TransactionReceipt>;
|
|
30
|
+
static updateContent(index: number, contentHash: string, status: Status, transactionOptions?: TransactionOptions, checkTxBeforeSend?: boolean): Promise<TransactionReceipt>;
|
|
25
31
|
static onContentAdded(callback: onContentAddedCallback): () => void;
|
|
26
32
|
static onContentUpdated(callback: onContentUpdated): () => void;
|
|
27
33
|
}
|
|
@@ -8,19 +8,27 @@ class Campaign {
|
|
|
8
8
|
static _addressHttps;
|
|
9
9
|
static _addressWss;
|
|
10
10
|
static contractHttps;
|
|
11
|
+
static contractWss;
|
|
11
12
|
static logger = rootLogger.child({ className: 'Campaign' });
|
|
12
13
|
static get addressHttps() {
|
|
13
14
|
return Campaign._addressHttps;
|
|
14
15
|
}
|
|
15
16
|
static set addressHttps(newAddress) {
|
|
16
17
|
Campaign._addressHttps = newAddress;
|
|
17
|
-
|
|
18
|
+
const [contractHttps, contractWss] = Campaign.createContract(newAddress);
|
|
19
|
+
Campaign.contractHttps = contractHttps;
|
|
20
|
+
Campaign.contractWss = contractWss;
|
|
18
21
|
}
|
|
19
22
|
static createContract(newAddress) {
|
|
20
|
-
|
|
23
|
+
const httpsContract = new store.web3Https.eth.Contract(abi, newAddress, {
|
|
21
24
|
provider: store.web3Https.currentProvider,
|
|
22
25
|
config: { contractDataInputFill: 'data' },
|
|
23
26
|
});
|
|
27
|
+
const wssContract = new store.web3Wss.eth.Contract(abi, newAddress, {
|
|
28
|
+
provider: store.web3Wss.currentProvider,
|
|
29
|
+
config: { contractDataInputFill: 'data' },
|
|
30
|
+
});
|
|
31
|
+
return [httpsContract, wssContract];
|
|
24
32
|
}
|
|
25
33
|
static get addressWss() {
|
|
26
34
|
return Campaign._addressWss;
|
|
@@ -31,21 +39,27 @@ class Campaign {
|
|
|
31
39
|
/**
|
|
32
40
|
* Checks if contract has been initialized, if not - initialize contract
|
|
33
41
|
*/
|
|
34
|
-
static checkInit() {
|
|
42
|
+
static checkInit(wssConnection = false) {
|
|
35
43
|
if (!Campaign.contractHttps) {
|
|
36
44
|
throw Error(`Campaign must be initialized before it can be used`);
|
|
37
45
|
}
|
|
38
|
-
return Campaign.contractHttps;
|
|
46
|
+
return wssConnection ? Campaign.contractWss : Campaign.contractHttps;
|
|
39
47
|
}
|
|
40
48
|
static getContract(contract) {
|
|
41
49
|
return contract ? contract : Campaign.checkInit();
|
|
42
50
|
}
|
|
51
|
+
static async isLinkUniqe(link, contract) {
|
|
52
|
+
return await this.getContract(contract).methods.isLinkUniqe(link).call();
|
|
53
|
+
}
|
|
43
54
|
static async getStat(contract) {
|
|
44
55
|
return await this.getContract(contract).methods.getStat().call();
|
|
45
56
|
}
|
|
46
57
|
static async getStatsByPoints(points, contract) {
|
|
47
58
|
return await this.getContract(contract).methods.getStatsByPoints(points).call();
|
|
48
59
|
}
|
|
60
|
+
static async getStatsByPointsBatch(points, contract) {
|
|
61
|
+
return await this.getContract(contract).methods.getStatsByPointsBatch(points).call();
|
|
62
|
+
}
|
|
49
63
|
static async getParticipantData(participant, contract) {
|
|
50
64
|
return await this.getContract(contract).methods.getParticipantData(participant).call();
|
|
51
65
|
}
|
|
@@ -58,8 +72,7 @@ class Campaign {
|
|
|
58
72
|
if (checkTxBeforeSend) {
|
|
59
73
|
await TxManager.dryRun(contract.methods.addContent(link, referrer), transactionOptions);
|
|
60
74
|
}
|
|
61
|
-
|
|
62
|
-
return store.web3Https.eth.getTransaction(receipt.transactionHash);
|
|
75
|
+
return await TxManager.execute(contract.methods.addContent(link, referrer), transactionOptions, Campaign.addressHttps);
|
|
63
76
|
}
|
|
64
77
|
static async updateContent(index, contentHash, status, transactionOptions, checkTxBeforeSend = false) {
|
|
65
78
|
const contract = this.checkInit();
|
|
@@ -67,8 +80,7 @@ class Campaign {
|
|
|
67
80
|
if (checkTxBeforeSend) {
|
|
68
81
|
await TxManager.dryRun(contract.methods.updateContent(index, contentHash, status), transactionOptions);
|
|
69
82
|
}
|
|
70
|
-
|
|
71
|
-
return store.web3Https.eth.getTransaction(receipt.transactionHash);
|
|
83
|
+
return await TxManager.execute(contract.methods.updateContent(index, contentHash, status), transactionOptions, Campaign.addressHttps);
|
|
72
84
|
}
|
|
73
85
|
static onContentAdded(callback) {
|
|
74
86
|
const listener = BlockchainEventsListener.getInstance();
|
|
@@ -83,7 +95,7 @@ class Campaign {
|
|
|
83
95
|
const onError = (error) => {
|
|
84
96
|
logger.warn(error);
|
|
85
97
|
};
|
|
86
|
-
const contract = this.checkInit();
|
|
98
|
+
const contract = this.checkInit(true);
|
|
87
99
|
return listener.subscribeEvent({
|
|
88
100
|
onError,
|
|
89
101
|
onData,
|
|
@@ -104,7 +116,7 @@ class Campaign {
|
|
|
104
116
|
const onError = (error) => {
|
|
105
117
|
logger.warn(error);
|
|
106
118
|
};
|
|
107
|
-
const contract = this.checkInit();
|
|
119
|
+
const contract = this.checkInit(true);
|
|
108
120
|
return listener.subscribeEvent({
|
|
109
121
|
onError,
|
|
110
122
|
onData,
|
|
@@ -114,4 +126,4 @@ class Campaign {
|
|
|
114
126
|
}
|
|
115
127
|
}
|
|
116
128
|
export default Campaign;
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FtcGFpZ24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhdGljTW9kZWxzL0NhbXBhaWduLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sVUFBVSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0MsT0FBTyxLQUFLLE1BQU0sYUFBYSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQVVwRixPQUFPLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQU1sRSxNQUFNLFFBQVE7SUFDSixNQUFNLENBQUMsYUFBYSxDQUFTO0lBQzdCLE1BQU0sQ0FBQyxXQUFXLENBQVM7SUFDM0IsTUFBTSxDQUFDLGFBQWEsQ0FBd0I7SUFDNUMsTUFBTSxDQUFDLFdBQVcsQ0FBd0I7SUFDMUMsTUFBTSxDQUFVLE1BQU0sR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFFdEUsTUFBTSxLQUFLLFlBQVk7UUFDNUIsT0FBTyxRQUFRLENBQUMsYUFBYSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxNQUFNLEtBQUssWUFBWSxDQUFDLFVBQWtCO1FBQy9DLFFBQVEsQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6RSxRQUFRLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUN2QyxRQUFRLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNyQyxDQUFDO0lBRU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFrQjtRQUM3QyxNQUFNLGFBQWEs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
|