stackswap-front-api-test-02 1.0.117 → 1.0.120
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/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/stackswap/config.d.ts +5 -0
- package/dist/esm/stackswap/config.js +9 -0
- package/dist/esm/stackswap/config.js.map +1 -1
- package/dist/esm/stackswap/manager/groupfarm.manager.d.ts +33 -0
- package/dist/esm/stackswap/manager/groupfarm.manager.js +254 -0
- package/dist/esm/stackswap/manager/groupfarm.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/launchpad.manager.d.ts +2 -0
- package/dist/esm/stackswap/manager/launchpad.manager.js +37 -2
- package/dist/esm/stackswap/manager/launchpad.manager.js.map +1 -1
- package/dist/esm/stackswap/manager/token.manager.d.ts +2 -1
- package/dist/esm/stackswap/manager/token.manager.js +3 -0
- package/dist/esm/stackswap/manager/token.manager.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/stackswap/config.d.ts +5 -0
- package/dist/stackswap/config.js +9 -0
- package/dist/stackswap/config.js.map +1 -1
- package/dist/stackswap/manager/groupfarm.manager.d.ts +33 -0
- package/dist/stackswap/manager/groupfarm.manager.js +261 -0
- package/dist/stackswap/manager/groupfarm.manager.js.map +1 -0
- package/dist/stackswap/manager/launchpad.manager.d.ts +2 -0
- package/dist/stackswap/manager/launchpad.manager.js +35 -0
- package/dist/stackswap/manager/launchpad.manager.js.map +1 -1
- package/dist/stackswap/manager/token.manager.d.ts +2 -1
- package/dist/stackswap/manager/token.manager.js +3 -0
- package/dist/stackswap/manager/token.manager.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +5 -0
- package/src/stackswap/config.ts +13 -0
- package/src/stackswap/manager/groupfarm.manager.ts +307 -0
- package/src/stackswap/manager/launchpad.manager.ts +45 -2
- package/src/stackswap/manager/token.manager.ts +3 -0
package/src/index.ts
CHANGED
|
@@ -17,6 +17,7 @@ import {StakingManager} from "./stackswap/manager/staking.manager";
|
|
|
17
17
|
import {SwapManager} from "./stackswap/manager/swap.manager";
|
|
18
18
|
import {AppConfig, showConnect, UserSession} from "@stacks/connect";
|
|
19
19
|
import {LBTCStakingManager} from "./stackswap/manager/lbtcstaking.manager";
|
|
20
|
+
import {GroupFarmManager} from "./stackswap/manager/groupfarm.manager";
|
|
20
21
|
|
|
21
22
|
export interface StackswapAPI {
|
|
22
23
|
config : StackswapConfig;
|
|
@@ -27,6 +28,7 @@ export interface StackswapAPI {
|
|
|
27
28
|
tokenManager: TokenManager;
|
|
28
29
|
farmManager: FarmManager;
|
|
29
30
|
farm2Manager: Farm2Manager;
|
|
31
|
+
groupFarmManager: GroupFarmManager;
|
|
30
32
|
governanceManager: GovernanceManager;
|
|
31
33
|
launchpadManager: LaunchpadManager;
|
|
32
34
|
lbtcManager: LbtcManager;
|
|
@@ -68,6 +70,7 @@ export class StackswapMainnetAPI implements StackswapAPI{
|
|
|
68
70
|
poxlManager: PoxlManager;
|
|
69
71
|
stakingManager: StakingManager;
|
|
70
72
|
swapManager: SwapManager;
|
|
73
|
+
groupFarmManager: GroupFarmManager;
|
|
71
74
|
|
|
72
75
|
constructor(farm_end_cycle: string = '') {
|
|
73
76
|
this.config = new StackswapMainetConfig(farm_end_cycle)
|
|
@@ -90,6 +93,7 @@ export class StackswapMainnetAPI implements StackswapAPI{
|
|
|
90
93
|
this.stakingManager = new StakingManager(this);
|
|
91
94
|
this.swapManager = new SwapManager(this);
|
|
92
95
|
this.lbtcStakingManager = new LBTCStakingManager(this);
|
|
96
|
+
this.groupFarmManager = new GroupFarmManager(this);
|
|
93
97
|
}
|
|
94
98
|
|
|
95
99
|
getSenderAddress() : string {
|
|
@@ -186,6 +190,7 @@ export class StackswapMainnetAPI implements StackswapAPI{
|
|
|
186
190
|
return false;
|
|
187
191
|
}
|
|
188
192
|
}
|
|
193
|
+
|
|
189
194
|
}
|
|
190
195
|
|
|
191
196
|
export class StackswapDevnetAPI extends StackswapMainnetAPI {
|
package/src/stackswap/config.ts
CHANGED
|
@@ -12,6 +12,7 @@ export interface StackswapConfig {
|
|
|
12
12
|
CONTRACT_NAME_STACKSWAP_SWAP: () => string;
|
|
13
13
|
CONTRACT_NAME_STACKSWAP_ONE_STEP_MINT: () => string;
|
|
14
14
|
CONTRACT_NAME_STACKSWAP_ONE_STEP_MINT_CITY: () => string;
|
|
15
|
+
CONTRACT_NAME_STACKSWAP_ONE_STEP_GROUP_FARM: () => string;
|
|
15
16
|
CONTRACT_NAME_STACKSWAP_DAO: () => string;
|
|
16
17
|
CONTRACT_NAME_STACKSWAP_GOVERNANCE: () => string;
|
|
17
18
|
CONTRACT_NAME_STACKSWAP_STACKING: () => string;
|
|
@@ -45,6 +46,7 @@ export interface StackswapConfig {
|
|
|
45
46
|
NEWYORK_DATA: () => any;
|
|
46
47
|
BASE_STSW_DATA: () => any;
|
|
47
48
|
BASE_vSTSW_DATA: () => any;
|
|
49
|
+
BASE_NULL_TOKEN_DATA: () => any;
|
|
48
50
|
BASE_LBTC_DATA: () => any;
|
|
49
51
|
STX_STSW_LP: () => string;
|
|
50
52
|
STSW_LBTC_LP: () => string;
|
|
@@ -231,6 +233,9 @@ export class StackswapMainetConfig implements StackswapConfig {
|
|
|
231
233
|
BASE_LBTC_DATA(): any {
|
|
232
234
|
return JSON.parse('{"name":"Lucid Bitcoin","decimal":8,"icon":"https://app.stackswap.org/icon/lbtc.svg","addr":"SP1Z92MPDQEWZXW36VX71Q25HKF5K2EPCJ304F275.lbtc-token-v1c","symbol":"lBTC"}');
|
|
233
235
|
}
|
|
236
|
+
BASE_NULL_TOKEN_DATA(): any {
|
|
237
|
+
return JSON.parse('{"name":"NULL","decimal":6,"icon":"","addr":"SP1Z92MPDQEWZXW36VX71Q25HKF5K2EPCJ304F275.null-token-v1a","symbol":"NULL"}');
|
|
238
|
+
}
|
|
234
239
|
STX_STSW_LP(): string {
|
|
235
240
|
return 'SP1Z92MPDQEWZXW36VX71Q25HKF5K2EPCJ304F275.liquidity-token-stx-stsw';
|
|
236
241
|
}
|
|
@@ -238,6 +243,10 @@ export class StackswapMainetConfig implements StackswapConfig {
|
|
|
238
243
|
return 'SP1Z92MPDQEWZXW36VX71Q25HKF5K2EPCJ304F275.liquidity-token-v5krqbd8nh6';
|
|
239
244
|
}
|
|
240
245
|
|
|
246
|
+
CONTRACT_NAME_STACKSWAP_ONE_STEP_GROUP_FARM(): string {
|
|
247
|
+
return "stackswap-one-step-group-farm-v1a";
|
|
248
|
+
}
|
|
249
|
+
|
|
241
250
|
}
|
|
242
251
|
export class StackswapDevnetConfig extends StackswapMainetConfig {
|
|
243
252
|
|
|
@@ -299,6 +308,10 @@ export class StackswapDevnetConfig extends StackswapMainetConfig {
|
|
|
299
308
|
return JSON.parse('{"name":"Lucid Bitcoin","decimal":8,"icon":"https://app.stackswap.org/icon/lbtc.svg","addr":"ST2REHHS5J3CERCRBEPMGH7921Q6PYKAADT7JP2VB.lbtc-token-v1c","symbol":"lBTC"}');
|
|
300
309
|
}
|
|
301
310
|
|
|
311
|
+
BASE_NULL_TOKEN_DATA(): any {
|
|
312
|
+
return JSON.parse('{"name":"NULL","decimal":6,"icon":"","addr":"ST2REHHS5J3CERCRBEPMGH7921Q6PYKAADT7JP2VB.null-token-v1a","symbol":"NULL"}');
|
|
313
|
+
}
|
|
314
|
+
|
|
302
315
|
STX_STSW_LP(): string {
|
|
303
316
|
return 'ST2REHHS5J3CERCRBEPMGH7921Q6PYKAADT7JP2VB.liquidity-token-stx-stsw';
|
|
304
317
|
}
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import {
|
|
2
|
+
callReadOnlyFunction,
|
|
3
|
+
contractPrincipalCV,
|
|
4
|
+
cvToValue, FungibleConditionCode,
|
|
5
|
+
listCV,
|
|
6
|
+
standardPrincipalCV,
|
|
7
|
+
uintCV
|
|
8
|
+
} from '@stacks/transactions';
|
|
9
|
+
import BigNumber from 'bignumber.js';
|
|
10
|
+
import {openContractCall} from '@stacks/connect';
|
|
11
|
+
import {getPostConditionFromAsset, getReadOptions, getWriteOptions, num2decimal, parseAddressToCV} from "../util";
|
|
12
|
+
import {StackswapAPI} from "../../index";
|
|
13
|
+
|
|
14
|
+
export enum Mode {
|
|
15
|
+
WITH_SERVER,
|
|
16
|
+
ONLY_BLOCKCHAIN
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export class GroupFarmManager {
|
|
20
|
+
stackswap: StackswapAPI;
|
|
21
|
+
|
|
22
|
+
constructor(stackswap: StackswapAPI) {``
|
|
23
|
+
this.stackswap = stackswap;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
async getAllDatas(farming_contract: string) {
|
|
27
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getAllDatas', [
|
|
28
|
+
]);
|
|
29
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
30
|
+
const result = cvToValue(result_raw);
|
|
31
|
+
// console.log('getFarmingUserRewardTotal', result);
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async getFarmingRound(bh: number, farming_contract: string) {
|
|
36
|
+
try {
|
|
37
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getRewardRound', [
|
|
38
|
+
uintCV(bh)
|
|
39
|
+
]);
|
|
40
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
41
|
+
const result = cvToValue(result_raw);
|
|
42
|
+
// console.log('farming round', result);
|
|
43
|
+
return result.value;
|
|
44
|
+
} catch (e) {
|
|
45
|
+
return 0;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async getCurrentFarmingRound2(farming_contract: string) {
|
|
50
|
+
const bh = await this.stackswap.getCurrentBlock();
|
|
51
|
+
return await this.getFarmingRound(Number(bh), farming_contract);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
async getFarmingRoundFirstBlock(cycle: number, farming_contract: string) {
|
|
56
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getFirstBlockOfRound', [
|
|
57
|
+
uintCV(cycle)
|
|
58
|
+
]);
|
|
59
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
60
|
+
const result = cvToValue(result_raw);
|
|
61
|
+
// console.log(result);
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
async getFarmingStakerStatus(stakingToken: string, cur_round: number, farming_contract: string) {
|
|
67
|
+
const address = stakingToken.split('.');
|
|
68
|
+
console.log('getFarmingStakerStatus', farming_contract);
|
|
69
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getUserData', [
|
|
70
|
+
contractPrincipalCV(address[0], address[1]),
|
|
71
|
+
standardPrincipalCV(this.stackswap.getSenderAddress()),
|
|
72
|
+
]);
|
|
73
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
74
|
+
const result = cvToValue(result_raw);
|
|
75
|
+
try {
|
|
76
|
+
console.log('getFarmingStakerStatus', result);
|
|
77
|
+
const pooledToken = result.value.amountLP.value;
|
|
78
|
+
const unclaimedList = [];
|
|
79
|
+
const stakedList = []
|
|
80
|
+
for (const unclaimedElement of result.value.unclaimedList.value) {
|
|
81
|
+
if (unclaimedElement.value < cur_round) {
|
|
82
|
+
unclaimedList.push(unclaimedElement.value);
|
|
83
|
+
// console.log('TTT', unclaimedElement.value)
|
|
84
|
+
}
|
|
85
|
+
stakedList.push(unclaimedElement.value);
|
|
86
|
+
}
|
|
87
|
+
// console.log({pooledToken, unclaimedList, stakedList});
|
|
88
|
+
return {pooledToken, unclaimedList, stakedList};
|
|
89
|
+
} catch (e) {
|
|
90
|
+
console.log(e);
|
|
91
|
+
return {pooledToken: 0, unclaimedList: [], stakedList: []}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
async getTotalData(stakingToken: string, farming_contract: string) {
|
|
97
|
+
const address = stakingToken.split('.');
|
|
98
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getTotalData', [
|
|
99
|
+
contractPrincipalCV(address[0], address[1]),
|
|
100
|
+
]);
|
|
101
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
102
|
+
const result = cvToValue(result_raw);
|
|
103
|
+
// console.log('lp total data', result);
|
|
104
|
+
try {
|
|
105
|
+
return result.value;
|
|
106
|
+
// return {amountLP: result.value.amountLP.value, weight: '3'};
|
|
107
|
+
} catch (e) {
|
|
108
|
+
return 0;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
async getRoundData(stakingToken: string, cycle: number, farming_contract: string) {
|
|
113
|
+
const address = stakingToken.split('.');
|
|
114
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getRoundData', [
|
|
115
|
+
contractPrincipalCV(address[0], address[1]),
|
|
116
|
+
uintCV(cycle),
|
|
117
|
+
]);
|
|
118
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
119
|
+
const result = cvToValue(result_raw);
|
|
120
|
+
// console.log('lp round data', result);
|
|
121
|
+
try {
|
|
122
|
+
return new result.value;
|
|
123
|
+
} catch (e) {
|
|
124
|
+
return '0';
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
async getUserData(stakingToken: string, farming_contract: string) {
|
|
129
|
+
try {
|
|
130
|
+
const address = stakingToken.split('.');
|
|
131
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getUserData', [
|
|
132
|
+
contractPrincipalCV(address[0], address[1]),
|
|
133
|
+
standardPrincipalCV(this.stackswap.getSenderAddress()),
|
|
134
|
+
]);
|
|
135
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
136
|
+
const result = cvToValue(result_raw);
|
|
137
|
+
// console.log('get_farming_total',result.value);
|
|
138
|
+
return result.value;
|
|
139
|
+
} catch (e) {
|
|
140
|
+
return 0;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
async getUserNFTData( farming_contract: string) {
|
|
145
|
+
try {
|
|
146
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getUserNFTData', [
|
|
147
|
+
standardPrincipalCV(this.stackswap.getSenderAddress()),
|
|
148
|
+
]);
|
|
149
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
150
|
+
const result = cvToValue(result_raw);
|
|
151
|
+
// console.log('get_farming_total',result.value);
|
|
152
|
+
return result.value;
|
|
153
|
+
} catch (e) {
|
|
154
|
+
return 0;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
async getUserRoundData(stakingToken: string, cycle: number, farming_contract: string) {
|
|
159
|
+
const address = stakingToken.split('.');
|
|
160
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getUserRoundData', [
|
|
161
|
+
contractPrincipalCV(address[0], address[1]),
|
|
162
|
+
standardPrincipalCV(this.stackswap.getSenderAddress()),
|
|
163
|
+
uintCV(cycle),
|
|
164
|
+
]);
|
|
165
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
166
|
+
const result = cvToValue(result_raw);
|
|
167
|
+
// console.log('reward', result);
|
|
168
|
+
return result;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
async getFarmingReward(stakingToken: string, round: number | bigint, farming_contract: string) {
|
|
172
|
+
const address = stakingToken.split('.');
|
|
173
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getFarmingReward', [
|
|
174
|
+
contractPrincipalCV(address[0], address[1]),
|
|
175
|
+
standardPrincipalCV(this.stackswap.getSenderAddress()),
|
|
176
|
+
uintCV(round),
|
|
177
|
+
]);
|
|
178
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
179
|
+
const result = cvToValue(result_raw);
|
|
180
|
+
// console.log('getFarmingUserRewardTotal', result);
|
|
181
|
+
return result;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
async getNFTFarmingReward(farming_contract: string) {
|
|
185
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getNFTFarmingReward', [
|
|
186
|
+
standardPrincipalCV(this.stackswap.getSenderAddress()),
|
|
187
|
+
]);
|
|
188
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
189
|
+
const result = cvToValue(result_raw);
|
|
190
|
+
// console.log('getFarmingUserRewardTotal', result);
|
|
191
|
+
return result;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
async getFarmingUserRewardList2(stakingToken: string, unclaimed_list: any, farming_contract: string) {
|
|
195
|
+
const address = stakingToken.split('.');
|
|
196
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getFarmingRewardFromList', [
|
|
197
|
+
standardPrincipalCV(this.stackswap.getSenderAddress()),
|
|
198
|
+
contractPrincipalCV(address[0], address[1]),
|
|
199
|
+
listCV(unclaimed_list),
|
|
200
|
+
]);
|
|
201
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
202
|
+
const result = cvToValue(result_raw);
|
|
203
|
+
// console.log('getFarmingUserRewardTotal', result);
|
|
204
|
+
return result;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
async getFarmBalance(token: any, farming_contract: string) {
|
|
208
|
+
// console.log("getBalance", token)
|
|
209
|
+
const pair_details_options: any = getReadOptions(this.stackswap, token.addr, 'get-balance',
|
|
210
|
+
[contractPrincipalCV(this.stackswap.config.STACKSWAP_ADDRESS(), farming_contract)]);
|
|
211
|
+
try {
|
|
212
|
+
const result = await callReadOnlyFunction(pair_details_options);
|
|
213
|
+
return cvToValue(result).value;
|
|
214
|
+
} catch (e) {
|
|
215
|
+
return 0;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
async stakeTokens(stakingToken: string, amountTokens: string, lockPeriod: number, callback: any, farming_contract: string) {
|
|
221
|
+
const address = stakingToken.split('.');
|
|
222
|
+
// console.log(amountTokens);
|
|
223
|
+
const amount = new BigNumber(amountTokens).multipliedBy(10 ** 6).toFixed(0).toString();
|
|
224
|
+
const function_option = getWriteOptions(this.stackswap, farming_contract, 'stakeTokens', [
|
|
225
|
+
uintCV(amount),
|
|
226
|
+
contractPrincipalCV(address[0], address[1]),
|
|
227
|
+
uintCV(lockPeriod)
|
|
228
|
+
], [await getPostConditionFromAsset(this.stackswap, this.stackswap.getSenderAddress(), stakingToken, amount, FungibleConditionCode.Equal)], callback);
|
|
229
|
+
await openContractCall(function_option);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
async claimStakingReward(stakingToken: string, cycle: number, amount_STSW: string, amount_LP: string, rewardToken1: string, rewardToken2: string, rewardToken3: string, rewardToken4: string, rewardList: any, callback: any, farming_contract: string) {
|
|
235
|
+
const address = stakingToken.split('.');
|
|
236
|
+
const post_condition = [];
|
|
237
|
+
post_condition.push(await getPostConditionFromAsset(this.stackswap, farming_contract, this.stackswap.config.BASE_STSW_DATA().addr, amount_STSW, FungibleConditionCode.Equal));
|
|
238
|
+
post_condition.push(await getPostConditionFromAsset(this.stackswap, farming_contract, stakingToken, amount_LP, FungibleConditionCode.Equal));
|
|
239
|
+
const function_option = getWriteOptions(this.stackswap, farming_contract, 'claimStakingReward', [
|
|
240
|
+
uintCV(cycle),
|
|
241
|
+
contractPrincipalCV(address[0], address[1]),
|
|
242
|
+
parseAddressToCV(rewardToken1),
|
|
243
|
+
parseAddressToCV(rewardToken2),
|
|
244
|
+
parseAddressToCV(rewardToken3),
|
|
245
|
+
parseAddressToCV(rewardToken4),
|
|
246
|
+
], post_condition, callback, true); //TODO post condition
|
|
247
|
+
console.log(rewardList);
|
|
248
|
+
await openContractCall(function_option);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
async stakeNFTs(goldList: number[], silverList: number[], callback: any, farming_contract: string) {
|
|
252
|
+
// console.log(amountTokens);
|
|
253
|
+
const gold_list = [];
|
|
254
|
+
const silver_list = [];
|
|
255
|
+
for (const gold of goldList) {
|
|
256
|
+
gold_list.push(uintCV(gold))
|
|
257
|
+
}
|
|
258
|
+
for (const silver of silverList) {
|
|
259
|
+
silver_list.push(uintCV(silver))
|
|
260
|
+
}
|
|
261
|
+
const function_option = getWriteOptions(this.stackswap, farming_contract, 'stakeTokens', [
|
|
262
|
+
listCV(gold_list),
|
|
263
|
+
listCV(silver_list)
|
|
264
|
+
], [], callback, true); //TODO post Condition
|
|
265
|
+
await openContractCall(function_option);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
async claimNFTStakingReward( rewardToken1: string, rewardToken2: string, rewardToken3: string, rewardToken4: string, rewardList: any, reclaimList: string[], callback: any, farming_contract: string) {
|
|
270
|
+
const post_condition: any = [];
|
|
271
|
+
const function_option = getWriteOptions(this.stackswap, farming_contract, 'claimNFTStakingReward', [
|
|
272
|
+
parseAddressToCV(rewardToken1),
|
|
273
|
+
parseAddressToCV(rewardToken2),
|
|
274
|
+
parseAddressToCV(rewardToken3),
|
|
275
|
+
parseAddressToCV(rewardToken4),
|
|
276
|
+
], post_condition, callback, true); //TODO post condition
|
|
277
|
+
console.log(rewardList, reclaimList);
|
|
278
|
+
await openContractCall(function_option);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
async getRewardBalanceFromFarming2(pool_addr: string, unclaimed_list: any, farming_contract: string) {
|
|
283
|
+
// let reward_balance = new BigNumber(0);
|
|
284
|
+
const num_list = [];
|
|
285
|
+
for (const unclaimed of unclaimed_list) {
|
|
286
|
+
num_list.push(uintCV(unclaimed));
|
|
287
|
+
}
|
|
288
|
+
let reward_num = new BigNumber(0);
|
|
289
|
+
console.log(pool_addr, num_list, farming_contract)
|
|
290
|
+
try {
|
|
291
|
+
for (let i = 0; i < num_list.length; i += 4) {
|
|
292
|
+
console.log(pool_addr, num_list.slice(i, i + 4 < num_list.length ? i + 4 : num_list.length), farming_contract);
|
|
293
|
+
const result = await this.getFarmingUserRewardList2(pool_addr, num_list.slice(i, i + 4 < num_list.length ? i + 4 : num_list.length), farming_contract);
|
|
294
|
+
// rewardSum.value;
|
|
295
|
+
console.log('temp result', result.rewardSum.value);
|
|
296
|
+
reward_num = reward_num.plus(new BigNumber(result.rewardSum.value));
|
|
297
|
+
}
|
|
298
|
+
return num2decimal(reward_num.toString(), 6);
|
|
299
|
+
} catch (e) {
|
|
300
|
+
// console.log(e);
|
|
301
|
+
return num2decimal(reward_num.toString(), 6);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
}
|
|
@@ -2,12 +2,12 @@ import {
|
|
|
2
2
|
getAmountStringWithDecimal,
|
|
3
3
|
getAmountWithDecimalString,
|
|
4
4
|
getPostConditionFromAsset, getReadOptions,
|
|
5
|
-
getWriteOptions
|
|
5
|
+
getWriteOptions, parseAddressToCV
|
|
6
6
|
} from "../util";
|
|
7
7
|
import {
|
|
8
8
|
callReadOnlyFunction, contractPrincipalCV,
|
|
9
9
|
cvToValue,
|
|
10
|
-
FungibleConditionCode,
|
|
10
|
+
FungibleConditionCode, listCV,
|
|
11
11
|
stringAsciiCV,
|
|
12
12
|
stringUtf8CV,
|
|
13
13
|
uintCV
|
|
@@ -77,6 +77,17 @@ export class LaunchpadManager {
|
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
+
async getTemplatetFarmList() {
|
|
81
|
+
const pair_details_options : any = getReadOptions(this.stackswap, this.stackswap.config.CONTRACT_NAME_STACKSWAP_ONE_STEP_GROUP_FARM(), 'get-group-farm-list', []);
|
|
82
|
+
try {
|
|
83
|
+
const result = cvToValue(await callReadOnlyFunction(pair_details_options)).value;
|
|
84
|
+
|
|
85
|
+
return result[this.getRandomIntNum(0, result.length-1)].value;
|
|
86
|
+
} catch (e) {
|
|
87
|
+
return('');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
80
91
|
async mintSIPContractCall(soft_token: string, liquidity_token: string, data : any, callback: any = null) {
|
|
81
92
|
const token_y_addr = soft_token.split('.');
|
|
82
93
|
const pair_addr = liquidity_token.split('.');
|
|
@@ -261,4 +272,36 @@ export class LaunchpadManager {
|
|
|
261
272
|
], post_condition, callback);
|
|
262
273
|
openContractCall(options);
|
|
263
274
|
}
|
|
275
|
+
|
|
276
|
+
async createGroupContractCall(data : any, callback: any = null) {
|
|
277
|
+
// const token_y_addr = city_token.split('.');
|
|
278
|
+
// const pair_addr = liquidity_token.split('.');
|
|
279
|
+
const post_condition: any = [];
|
|
280
|
+
// post_condition.push(await getPostConditionFromAsset(this.stackswap,this.stackswap.getSenderAddress(), this.stackswap.config.BASE_STSW_DATA().addr, getAmountWithDecimalString(data.initial_amount_x, 6), FungibleConditionCode.Equal));
|
|
281
|
+
// post_condition.push(await getPostConditionFromAsset(this.stackswap, this.stackswap.getSenderAddress(), city_token, 0, FungibleConditionCode.GreaterEqual));
|
|
282
|
+
const options = getWriteOptions(this.stackswap, this.stackswap.config.CONTRACT_NAME_STACKSWAP_ONE_STEP_GROUP_FARM(),
|
|
283
|
+
'create-pair-new-city-token-with-stsw',
|
|
284
|
+
[
|
|
285
|
+
parseAddressToCV(data.templateFarm),
|
|
286
|
+
stringAsciiCV( data.name),
|
|
287
|
+
stringUtf8CV( data.uri),
|
|
288
|
+
parseAddressToCV(data.project_token),
|
|
289
|
+
parseAddressToCV(data.project_lp_token),
|
|
290
|
+
uintCV(data.lp_lock_amount),
|
|
291
|
+
parseAddressToCV(data.reward_token_1_in),
|
|
292
|
+
parseAddressToCV(data.reward_token_2_in),
|
|
293
|
+
parseAddressToCV(data.reward_token_3_in),
|
|
294
|
+
parseAddressToCV(data.reward_token_4_in),
|
|
295
|
+
listCV([uintCV(data.reward1List[0]),uintCV(data.reward1List[1]),uintCV(data.reward1List[2]),uintCV(data.reward1List[3]),]),
|
|
296
|
+
listCV([uintCV(data.reward2List[0]),uintCV(data.reward2List[1]),uintCV(data.reward2List[2]),uintCV(data.reward2List[3]),]),
|
|
297
|
+
listCV([uintCV(data.reward3List[0]),uintCV(data.reward3List[1]),uintCV(data.reward3List[2]),uintCV(data.reward3List[3]),]),
|
|
298
|
+
uintCV(data.first_farming_block_in),
|
|
299
|
+
uintCV(data.reward_round_length_in),
|
|
300
|
+
uintCV(data.max_farming_rounds_in),
|
|
301
|
+
uintCV(data.nft_end_block_in),
|
|
302
|
+
uintCV(data.nft_count_limit_in),
|
|
303
|
+
uintCV(data.nft_count_takes_in),
|
|
304
|
+
], post_condition, callback,true);
|
|
305
|
+
openContractCall(options);
|
|
306
|
+
}
|
|
264
307
|
}
|
|
@@ -20,6 +20,7 @@ export enum BaseToken {
|
|
|
20
20
|
STSW,
|
|
21
21
|
vSTSW,
|
|
22
22
|
lBTC,
|
|
23
|
+
NULL,
|
|
23
24
|
}
|
|
24
25
|
|
|
25
26
|
export class Token {
|
|
@@ -63,6 +64,8 @@ export class Token {
|
|
|
63
64
|
return Token.parseTokenFromJson(stackswap.config.BASE_vSTSW_DATA());
|
|
64
65
|
case BaseToken.lBTC:
|
|
65
66
|
return Token.parseTokenFromJson(stackswap.config.BASE_LBTC_DATA());
|
|
67
|
+
case BaseToken.NULL:
|
|
68
|
+
return Token.parseTokenFromJson(stackswap.config.BASE_NULL_TOKEN_DATA());
|
|
66
69
|
}
|
|
67
70
|
}
|
|
68
71
|
}
|