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.
Files changed (37) hide show
  1. package/dist/esm/index.d.ts +3 -0
  2. package/dist/esm/index.js +2 -0
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/stackswap/config.d.ts +5 -0
  5. package/dist/esm/stackswap/config.js +9 -0
  6. package/dist/esm/stackswap/config.js.map +1 -1
  7. package/dist/esm/stackswap/manager/groupfarm.manager.d.ts +33 -0
  8. package/dist/esm/stackswap/manager/groupfarm.manager.js +254 -0
  9. package/dist/esm/stackswap/manager/groupfarm.manager.js.map +1 -0
  10. package/dist/esm/stackswap/manager/launchpad.manager.d.ts +2 -0
  11. package/dist/esm/stackswap/manager/launchpad.manager.js +37 -2
  12. package/dist/esm/stackswap/manager/launchpad.manager.js.map +1 -1
  13. package/dist/esm/stackswap/manager/token.manager.d.ts +2 -1
  14. package/dist/esm/stackswap/manager/token.manager.js +3 -0
  15. package/dist/esm/stackswap/manager/token.manager.js.map +1 -1
  16. package/dist/index.d.ts +3 -0
  17. package/dist/index.js +2 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/index.umd.js +1 -1
  20. package/dist/stackswap/config.d.ts +5 -0
  21. package/dist/stackswap/config.js +9 -0
  22. package/dist/stackswap/config.js.map +1 -1
  23. package/dist/stackswap/manager/groupfarm.manager.d.ts +33 -0
  24. package/dist/stackswap/manager/groupfarm.manager.js +261 -0
  25. package/dist/stackswap/manager/groupfarm.manager.js.map +1 -0
  26. package/dist/stackswap/manager/launchpad.manager.d.ts +2 -0
  27. package/dist/stackswap/manager/launchpad.manager.js +35 -0
  28. package/dist/stackswap/manager/launchpad.manager.js.map +1 -1
  29. package/dist/stackswap/manager/token.manager.d.ts +2 -1
  30. package/dist/stackswap/manager/token.manager.js +3 -0
  31. package/dist/stackswap/manager/token.manager.js.map +1 -1
  32. package/package.json +1 -1
  33. package/src/index.ts +5 -0
  34. package/src/stackswap/config.ts +13 -0
  35. package/src/stackswap/manager/groupfarm.manager.ts +307 -0
  36. package/src/stackswap/manager/launchpad.manager.ts +45 -2
  37. 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 {
@@ -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
  }