stackswap-front-api-test-02 0.10.1
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 +10 -0
- package/dist/esm/index.d.ts +106 -0
- package/dist/esm/index.js +196 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/stackswap/config.d.ts +172 -0
- package/dist/esm/stackswap/config.js +302 -0
- package/dist/esm/stackswap/config.js.map +1 -0
- package/dist/esm/stackswap/manager/bridge.manager.d.ts +27 -0
- package/dist/esm/stackswap/manager/bridge.manager.js +215 -0
- package/dist/esm/stackswap/manager/bridge.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/farm.manager.d.ts +41 -0
- package/dist/esm/stackswap/manager/farm.manager.js +293 -0
- package/dist/esm/stackswap/manager/farm.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/farm2.manager.d.ts +106 -0
- package/dist/esm/stackswap/manager/farm2.manager.js +625 -0
- package/dist/esm/stackswap/manager/farm2.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/farm3.manager.d.ts +121 -0
- package/dist/esm/stackswap/manager/farm3.manager.js +557 -0
- package/dist/esm/stackswap/manager/farm3.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/governance.manager.d.ts +9 -0
- package/dist/esm/stackswap/manager/governance.manager.js +68 -0
- package/dist/esm/stackswap/manager/governance.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/groupfarm.manager.d.ts +70 -0
- package/dist/esm/stackswap/manager/groupfarm.manager.js +379 -0
- package/dist/esm/stackswap/manager/groupfarm.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/launchpad.manager.d.ts +18 -0
- package/dist/esm/stackswap/manager/launchpad.manager.js +253 -0
- package/dist/esm/stackswap/manager/launchpad.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/lbtc.manager.d.ts +31 -0
- package/dist/esm/stackswap/manager/lbtc.manager.js +327 -0
- package/dist/esm/stackswap/manager/lbtc.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/lbtcstaking.manager.d.ts +61 -0
- package/dist/esm/stackswap/manager/lbtcstaking.manager.js +248 -0
- package/dist/esm/stackswap/manager/lbtcstaking.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/multisig.manager.d.ts +11 -0
- package/dist/esm/stackswap/manager/multisig.manager.js +50 -0
- package/dist/esm/stackswap/manager/multisig.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/nft.manager.d.ts +55 -0
- package/dist/esm/stackswap/manager/nft.manager.js +274 -0
- package/dist/esm/stackswap/manager/nft.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/operator.manager.d.ts +17 -0
- package/dist/esm/stackswap/manager/operator.manager.js +86 -0
- package/dist/esm/stackswap/manager/operator.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/other.manager.d.ts +9 -0
- package/dist/esm/stackswap/manager/other.manager.js +41 -0
- package/dist/esm/stackswap/manager/other.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/pool.manager.d.ts +34 -0
- package/dist/esm/stackswap/manager/pool.manager.js +172 -0
- package/dist/esm/stackswap/manager/pool.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/poxl.manager.d.ts +16 -0
- package/dist/esm/stackswap/manager/poxl.manager.js +72 -0
- package/dist/esm/stackswap/manager/poxl.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/staking.manager.d.ts +40 -0
- package/dist/esm/stackswap/manager/staking.manager.js +295 -0
- package/dist/esm/stackswap/manager/staking.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/swap.manager.d.ts +71 -0
- package/dist/esm/stackswap/manager/swap.manager.js +730 -0
- package/dist/esm/stackswap/manager/swap.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/token.manager.d.ts +32 -0
- package/dist/esm/stackswap/manager/token.manager.js +142 -0
- package/dist/esm/stackswap/manager/token.manager.js.map +1 -0
- package/dist/esm/stackswap/util.d.ts +35 -0
- package/dist/esm/stackswap/util.js +202 -0
- package/dist/esm/stackswap/util.js.map +1 -0
- package/dist/index.d.ts +106 -0
- package/dist/index.js +206 -0
- package/dist/index.js.map +1 -0
- package/dist/index.umd.js +2 -0
- package/dist/index.umd.js.LICENSE.txt +25 -0
- package/dist/stackswap/config.d.ts +172 -0
- package/dist/stackswap/config.js +308 -0
- package/dist/stackswap/config.js.map +1 -0
- package/dist/stackswap/manager/bridge.manager.d.ts +27 -0
- package/dist/stackswap/manager/bridge.manager.js +222 -0
- package/dist/stackswap/manager/bridge.manager.js.map +1 -0
- package/dist/stackswap/manager/farm.manager.d.ts +41 -0
- package/dist/stackswap/manager/farm.manager.js +301 -0
- package/dist/stackswap/manager/farm.manager.js.map +1 -0
- package/dist/stackswap/manager/farm2.manager.d.ts +106 -0
- package/dist/stackswap/manager/farm2.manager.js +632 -0
- package/dist/stackswap/manager/farm2.manager.js.map +1 -0
- package/dist/stackswap/manager/farm3.manager.d.ts +121 -0
- package/dist/stackswap/manager/farm3.manager.js +564 -0
- package/dist/stackswap/manager/farm3.manager.js.map +1 -0
- package/dist/stackswap/manager/governance.manager.d.ts +9 -0
- package/dist/stackswap/manager/governance.manager.js +75 -0
- package/dist/stackswap/manager/governance.manager.js.map +1 -0
- package/dist/stackswap/manager/groupfarm.manager.d.ts +70 -0
- package/dist/stackswap/manager/groupfarm.manager.js +386 -0
- package/dist/stackswap/manager/groupfarm.manager.js.map +1 -0
- package/dist/stackswap/manager/launchpad.manager.d.ts +18 -0
- package/dist/stackswap/manager/launchpad.manager.js +257 -0
- package/dist/stackswap/manager/launchpad.manager.js.map +1 -0
- package/dist/stackswap/manager/lbtc.manager.d.ts +31 -0
- package/dist/stackswap/manager/lbtc.manager.js +334 -0
- package/dist/stackswap/manager/lbtc.manager.js.map +1 -0
- package/dist/stackswap/manager/lbtcstaking.manager.d.ts +61 -0
- package/dist/stackswap/manager/lbtcstaking.manager.js +255 -0
- package/dist/stackswap/manager/lbtcstaking.manager.js.map +1 -0
- package/dist/stackswap/manager/multisig.manager.d.ts +11 -0
- package/dist/stackswap/manager/multisig.manager.js +54 -0
- package/dist/stackswap/manager/multisig.manager.js.map +1 -0
- package/dist/stackswap/manager/nft.manager.d.ts +55 -0
- package/dist/stackswap/manager/nft.manager.js +281 -0
- package/dist/stackswap/manager/nft.manager.js.map +1 -0
- package/dist/stackswap/manager/operator.manager.d.ts +17 -0
- package/dist/stackswap/manager/operator.manager.js +93 -0
- package/dist/stackswap/manager/operator.manager.js.map +1 -0
- package/dist/stackswap/manager/other.manager.d.ts +9 -0
- package/dist/stackswap/manager/other.manager.js +45 -0
- package/dist/stackswap/manager/other.manager.js.map +1 -0
- package/dist/stackswap/manager/pool.manager.d.ts +34 -0
- package/dist/stackswap/manager/pool.manager.js +180 -0
- package/dist/stackswap/manager/pool.manager.js.map +1 -0
- package/dist/stackswap/manager/poxl.manager.d.ts +16 -0
- package/dist/stackswap/manager/poxl.manager.js +79 -0
- package/dist/stackswap/manager/poxl.manager.js.map +1 -0
- package/dist/stackswap/manager/staking.manager.d.ts +40 -0
- package/dist/stackswap/manager/staking.manager.js +302 -0
- package/dist/stackswap/manager/staking.manager.js.map +1 -0
- package/dist/stackswap/manager/swap.manager.d.ts +71 -0
- package/dist/stackswap/manager/swap.manager.js +737 -0
- package/dist/stackswap/manager/swap.manager.js.map +1 -0
- package/dist/stackswap/manager/token.manager.d.ts +32 -0
- package/dist/stackswap/manager/token.manager.js +150 -0
- package/dist/stackswap/manager/token.manager.js.map +1 -0
- package/dist/stackswap/util.d.ts +35 -0
- package/dist/stackswap/util.js +219 -0
- package/dist/stackswap/util.js.map +1 -0
- package/package.json +45 -0
- package/src/index.ts +279 -0
- package/src/stackswap/config.ts +456 -0
- package/src/stackswap/manager/bridge.manager.ts +313 -0
- package/src/stackswap/manager/farm.manager.ts +399 -0
- package/src/stackswap/manager/farm2.manager.ts +733 -0
- package/src/stackswap/manager/farm3.manager.ts +690 -0
- package/src/stackswap/manager/governance.manager.ts +112 -0
- package/src/stackswap/manager/groupfarm.manager.ts +474 -0
- package/src/stackswap/manager/launchpad.manager.ts +307 -0
- package/src/stackswap/manager/lbtc.manager.ts +566 -0
- package/src/stackswap/manager/lbtcstaking.manager.ts +360 -0
- package/src/stackswap/manager/multisig.manager.ts +87 -0
- package/src/stackswap/manager/nft.manager.ts +352 -0
- package/src/stackswap/manager/operator.manager.ts +123 -0
- package/src/stackswap/manager/other.manager.ts +72 -0
- package/src/stackswap/manager/pool.manager.ts +202 -0
- package/src/stackswap/manager/poxl.manager.ts +99 -0
- package/src/stackswap/manager/staking.manager.ts +402 -0
- package/src/stackswap/manager/swap.manager.ts +902 -0
- package/src/stackswap/manager/token.manager.ts +177 -0
- package/src/stackswap/util.ts +275 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import {
|
|
2
|
+
callReadOnlyFunction,
|
|
3
|
+
cvToValue,
|
|
4
|
+
FungibleConditionCode, listCV,
|
|
5
|
+
standardPrincipalCV,
|
|
6
|
+
uintCV
|
|
7
|
+
} from "@stacks/transactions";
|
|
8
|
+
import {openContractCall} from "@stacks/connect";
|
|
9
|
+
import BigNumber from "bignumber.js";
|
|
10
|
+
import {getPostConditionFromAsset, getReadOptions, getWriteOptions} from "../util";
|
|
11
|
+
import {StackswapAPI} from "../../index";
|
|
12
|
+
|
|
13
|
+
export class GovernanceManager {
|
|
14
|
+
stackswap: StackswapAPI;
|
|
15
|
+
|
|
16
|
+
constructor(stackswap: StackswapAPI) {
|
|
17
|
+
this.stackswap = stackswap;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
async getProposalsList(){
|
|
22
|
+
let res_list:any = [];
|
|
23
|
+
|
|
24
|
+
for (const governance of this.stackswap.config.CONTRACT_NAME_STACKSWAP_GOVERNANCE_LIST()) {
|
|
25
|
+
let args = [];
|
|
26
|
+
if (governance.version == 2){
|
|
27
|
+
const arg2 = []
|
|
28
|
+
for(let i = 0; i < 30; i ++){
|
|
29
|
+
arg2.push(uintCV(i))
|
|
30
|
+
}
|
|
31
|
+
args.push(listCV(arg2))
|
|
32
|
+
}
|
|
33
|
+
const function_option : any = getReadOptions(this.stackswap, governance.name,'get-proposals',args);
|
|
34
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
35
|
+
|
|
36
|
+
const result = cvToValue(result_raw);
|
|
37
|
+
|
|
38
|
+
// tslint:disable-next-line:prefer-const
|
|
39
|
+
result.value.forEach((element:any) =>{
|
|
40
|
+
if(Number(element.value['end-block-height']) != 0)
|
|
41
|
+
element.value['contract-name'] = governance.name
|
|
42
|
+
res_list.push(element.value);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return res_list;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async getNumVoting(proposal_id:number, governance_name: string = this.stackswap.config.CONTRACT_NAME_STACKSWAP_GOVERNANCE()) {
|
|
50
|
+
const function_option : any = getReadOptions(
|
|
51
|
+
this.stackswap,
|
|
52
|
+
governance_name,
|
|
53
|
+
'get-votes-by-member-by-id',
|
|
54
|
+
[
|
|
55
|
+
uintCV(proposal_id),
|
|
56
|
+
standardPrincipalCV(this.stackswap.getSenderAddress())
|
|
57
|
+
]);
|
|
58
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
59
|
+
const result = cvToValue(result_raw);
|
|
60
|
+
// // // console.log("TTT", cvToValue(result_raw))
|
|
61
|
+
return [result['vote-count'].value, result.returned.value];
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
async txWithdrawVoting(proposal_id:number, _amount: string, callback: any = null, governance_name: string = this.stackswap.config.CONTRACT_NAME_STACKSWAP_GOVERNANCE()) {
|
|
66
|
+
const post_condition = [];
|
|
67
|
+
post_condition.push(await getPostConditionFromAsset(this.stackswap, this.stackswap.config.STACKSWAP_ADDRESS()+'.'+this.stackswap.config.CONTRACT_NAME_STACKSWAP_GOVERNANCE(), this.stackswap.config.BASE_vSTSW_DATA().addr, _amount, FungibleConditionCode.Equal));
|
|
68
|
+
|
|
69
|
+
const function_option : any = getWriteOptions(
|
|
70
|
+
this.stackswap,
|
|
71
|
+
governance_name,
|
|
72
|
+
'return-votes-to-member',
|
|
73
|
+
[
|
|
74
|
+
uintCV(proposal_id),
|
|
75
|
+
standardPrincipalCV(this.stackswap.getSenderAddress())
|
|
76
|
+
], post_condition, callback);
|
|
77
|
+
await openContractCall(function_option);
|
|
78
|
+
// // console.log("TTT", cvToValue(result_raw))
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
async txVote(proposal_id:number, vote_mode:string, vote_amount:any, callback: any = null, governance_name: string = this.stackswap.config.CONTRACT_NAME_STACKSWAP_GOVERNANCE()){
|
|
83
|
+
// // console.log("TT", typeof(vote_mode), vote_mode)
|
|
84
|
+
// // console.log("TT", typeof(vote_amount), vote_amount)
|
|
85
|
+
// // console.log("TT", typeof(BASE_vSTSW_DATA().decimal), BASE_vSTSW_DATA().decimal)
|
|
86
|
+
|
|
87
|
+
const vote_amount_bn = new BigNumber(10 ** 6).multipliedBy(parseFloat(vote_amount)).toFixed(0).toString();
|
|
88
|
+
// // console.log("TT", typeof(vote_amount_bn), vote_amount_bn)
|
|
89
|
+
|
|
90
|
+
const post_condition = [await getPostConditionFromAsset(this.stackswap, this.stackswap.getSenderAddress(), this.stackswap.config.BASE_vSTSW_DATA().addr, vote_amount_bn, FungibleConditionCode.Equal)];
|
|
91
|
+
|
|
92
|
+
let function_option = null;
|
|
93
|
+
if(vote_mode==='For'){
|
|
94
|
+
function_option = getWriteOptions(
|
|
95
|
+
this.stackswap,
|
|
96
|
+
governance_name,
|
|
97
|
+
'vote-for',[
|
|
98
|
+
uintCV(proposal_id), uintCV(vote_amount_bn)],
|
|
99
|
+
post_condition, callback);
|
|
100
|
+
}else if (vote_mode === 'Against'){
|
|
101
|
+
function_option = getWriteOptions(
|
|
102
|
+
this.stackswap,
|
|
103
|
+
governance_name,
|
|
104
|
+
'vote-against',[
|
|
105
|
+
uintCV(proposal_id), uintCV(vote_amount_bn)],
|
|
106
|
+
post_condition, callback);
|
|
107
|
+
}
|
|
108
|
+
if(function_option !=null){
|
|
109
|
+
await openContractCall(function_option);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -0,0 +1,474 @@
|
|
|
1
|
+
import {
|
|
2
|
+
callReadOnlyFunction,
|
|
3
|
+
contractPrincipalCV,
|
|
4
|
+
cvToValue,
|
|
5
|
+
FungibleConditionCode,
|
|
6
|
+
listCV, makeContractNonFungiblePostCondition, makeStandardNonFungiblePostCondition,
|
|
7
|
+
NonFungibleConditionCode,
|
|
8
|
+
standardPrincipalCV,
|
|
9
|
+
uintCV,
|
|
10
|
+
} from '@stacks/transactions';
|
|
11
|
+
import BigNumber from 'bignumber.js';
|
|
12
|
+
import {openContractCall} from '@stacks/connect';
|
|
13
|
+
import {
|
|
14
|
+
getPostConditionFromAsset,
|
|
15
|
+
getReadOptions,
|
|
16
|
+
getWriteOptions,
|
|
17
|
+
parseAddressToCV,
|
|
18
|
+
} from "../util";
|
|
19
|
+
import {StackswapAPI} from "../../index";
|
|
20
|
+
import {BaseToken, Token} from "./token.manager";
|
|
21
|
+
import axios from "axios";
|
|
22
|
+
|
|
23
|
+
export enum Mode {
|
|
24
|
+
WITH_SERVER,
|
|
25
|
+
ONLY_BLOCKCHAIN
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export class GroupFarmManager {
|
|
29
|
+
stackswap: StackswapAPI;
|
|
30
|
+
|
|
31
|
+
constructor(stackswap: StackswapAPI) {``
|
|
32
|
+
this.stackswap = stackswap;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async getFarmCounts() {
|
|
36
|
+
const pair_details_options : any = getReadOptions(this.stackswap, this.stackswap.config.CONTRACT_NAME_STACKSWAP_ONE_STEP_GROUP_FARM(), 'get-farm-counts', []);
|
|
37
|
+
try {
|
|
38
|
+
const result = cvToValue(await callReadOnlyFunction(pair_details_options)).value;
|
|
39
|
+
return result;
|
|
40
|
+
} catch (e) {
|
|
41
|
+
return('');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
async getFarmLists(farmIDs: number[]) {
|
|
46
|
+
const listTemp = [];
|
|
47
|
+
for (const farmID of farmIDs) {
|
|
48
|
+
listTemp.push(uintCV(farmID));
|
|
49
|
+
}
|
|
50
|
+
const pair_details_options : any = getReadOptions(this.stackswap, this.stackswap.config.CONTRACT_NAME_STACKSWAP_ONE_STEP_GROUP_FARM(), 'get-farms', [listCV(listTemp)]);
|
|
51
|
+
try {
|
|
52
|
+
const result = cvToValue(await callReadOnlyFunction(pair_details_options)).value;
|
|
53
|
+
// console.log('farmLists', result);
|
|
54
|
+
return result;
|
|
55
|
+
} catch (e) {
|
|
56
|
+
return('');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
async getAllDatas(farming_contract: string) {
|
|
61
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getAllDatas', [
|
|
62
|
+
]);
|
|
63
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
64
|
+
const result = cvToValue(result_raw);
|
|
65
|
+
// // console.log('getFarmingUserRewardTotal', result);
|
|
66
|
+
return result;
|
|
67
|
+
}
|
|
68
|
+
async getRewardData(farming_contract: string) {
|
|
69
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getAllRewardData', [
|
|
70
|
+
]);
|
|
71
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
72
|
+
const result = cvToValue(result_raw);
|
|
73
|
+
// // console.log('getFarmingUserRewardTotal', result);
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
async getFarmingRound(bh: number, farming_contract: string) {
|
|
78
|
+
try {
|
|
79
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getRewardRound', [
|
|
80
|
+
uintCV(bh)
|
|
81
|
+
]);
|
|
82
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
83
|
+
const result = cvToValue(result_raw);
|
|
84
|
+
// // console.log('farming round', result);
|
|
85
|
+
return result.value;
|
|
86
|
+
} catch (e) {
|
|
87
|
+
return 0;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
async getCurrentFarmingRound2(farming_contract: string) {
|
|
92
|
+
const bh = await this.stackswap.getCurrentBlocks();
|
|
93
|
+
return await this.getFarmingRound(Number(bh.tenure_block_height), farming_contract);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
async getFarmingRoundFirstBlock(cycle: number, farming_contract: string) {
|
|
98
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getFirstBlockOfRound', [
|
|
99
|
+
uintCV(cycle)
|
|
100
|
+
]);
|
|
101
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
102
|
+
const result = cvToValue(result_raw);
|
|
103
|
+
// // console.log(result);
|
|
104
|
+
return result;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
async getFarmingStakerStatus(stakingToken: string, cur_round: number, farming_contract: string) {
|
|
109
|
+
const address = stakingToken.split('.');
|
|
110
|
+
// console.log('getFarmingStakerStatus', farming_contract);
|
|
111
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getUserData', [
|
|
112
|
+
contractPrincipalCV(address[0], address[1]),
|
|
113
|
+
standardPrincipalCV(this.stackswap.getSenderAddress()),
|
|
114
|
+
]);
|
|
115
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
116
|
+
const result = cvToValue(result_raw);
|
|
117
|
+
try {
|
|
118
|
+
// console.log('getFarmingStakerStatus', result);
|
|
119
|
+
const pooledToken = result.value.amountLP.value;
|
|
120
|
+
const unclaimedList = [];
|
|
121
|
+
const stakedList = []
|
|
122
|
+
for (const unclaimedElement of result.value.unclaimedList.value) {
|
|
123
|
+
if (unclaimedElement.value < cur_round) {
|
|
124
|
+
unclaimedList.push(unclaimedElement.value);
|
|
125
|
+
// // console.log('TTT', unclaimedElement.value)
|
|
126
|
+
}
|
|
127
|
+
stakedList.push(unclaimedElement.value);
|
|
128
|
+
}
|
|
129
|
+
// // console.log({pooledToken, unclaimedList, stakedList});
|
|
130
|
+
return {pooledToken, unclaimedList, stakedList};
|
|
131
|
+
} catch (e) {
|
|
132
|
+
// console.log(e);
|
|
133
|
+
return {amountToken: {type: 'uint', value: '0'}, unclaimedList: {type: "(list 0 uint)", value: []}}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
async getTotalData(stakingToken: string, farming_contract: string) {
|
|
139
|
+
const address = stakingToken.split('.');
|
|
140
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getTotalData', [
|
|
141
|
+
contractPrincipalCV(address[0], address[1]),
|
|
142
|
+
]);
|
|
143
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
144
|
+
const result = cvToValue(result_raw);
|
|
145
|
+
// // console.log('lp total data', result);
|
|
146
|
+
try {
|
|
147
|
+
return result.value;
|
|
148
|
+
// return {amountLP: result.value.amountLP.value, weight: '3'};
|
|
149
|
+
} catch (e) {
|
|
150
|
+
return 0;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
async getRoundData(stakingToken: string, cycle: number, farming_contract: string) {
|
|
155
|
+
const address = stakingToken.split('.');
|
|
156
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getRoundData', [
|
|
157
|
+
contractPrincipalCV(address[0], address[1]),
|
|
158
|
+
uintCV(cycle),
|
|
159
|
+
]);
|
|
160
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
161
|
+
const result = cvToValue(result_raw);
|
|
162
|
+
// // console.log('lp round data', result);
|
|
163
|
+
try {
|
|
164
|
+
return result.value;
|
|
165
|
+
} catch (e) {
|
|
166
|
+
return '0';
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
async getUserData(stakingToken: string, farming_contract: string) {
|
|
171
|
+
try {
|
|
172
|
+
const address = stakingToken.split('.');
|
|
173
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getUserData', [
|
|
174
|
+
contractPrincipalCV(address[0], address[1]),
|
|
175
|
+
standardPrincipalCV(this.stackswap.getSenderAddress()),
|
|
176
|
+
]);
|
|
177
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
178
|
+
const result = cvToValue(result_raw);
|
|
179
|
+
// // console.log('get_farming_total',result.value);
|
|
180
|
+
return result.value;
|
|
181
|
+
} catch (e) {
|
|
182
|
+
return {amountToken: {type: 'uint', value: '0'}, unclaimedList: {type: "(list 0 uint)", value: []}}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
async getUserNFTData( farming_contract: string) {
|
|
187
|
+
try {
|
|
188
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getUserNFTData', [
|
|
189
|
+
standardPrincipalCV(this.stackswap.getSenderAddress()),
|
|
190
|
+
]);
|
|
191
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
192
|
+
const result = cvToValue(result_raw);
|
|
193
|
+
// // console.log('get_farming_total',result.value);
|
|
194
|
+
return result.value;
|
|
195
|
+
} catch (e) {
|
|
196
|
+
return {
|
|
197
|
+
"amountGold": {
|
|
198
|
+
"type": "uint",
|
|
199
|
+
"value": "0"
|
|
200
|
+
},
|
|
201
|
+
"amountInCount": {
|
|
202
|
+
"type": "uint",
|
|
203
|
+
"value": "0"
|
|
204
|
+
},
|
|
205
|
+
"amountSilver": {
|
|
206
|
+
"type": "uint",
|
|
207
|
+
"value": "0"
|
|
208
|
+
},
|
|
209
|
+
"unclaimedList": {
|
|
210
|
+
"type": "(list 0 uint)",
|
|
211
|
+
"value": [
|
|
212
|
+
]
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
async getUserRoundData(stakingToken: string, cycle: number, farming_contract: string) {
|
|
219
|
+
const address = stakingToken.split('.');
|
|
220
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getUserRoundData', [
|
|
221
|
+
contractPrincipalCV(address[0], address[1]),
|
|
222
|
+
standardPrincipalCV(this.stackswap.getSenderAddress()),
|
|
223
|
+
uintCV(cycle),
|
|
224
|
+
]);
|
|
225
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
226
|
+
const result = cvToValue(result_raw);
|
|
227
|
+
// // console.log('reward', result);
|
|
228
|
+
return result;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
async getFarmingReward(stakingToken: string, round: number | bigint | string, farming_contract: string) {
|
|
232
|
+
const address = stakingToken.split('.');
|
|
233
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getFarmingReward', [
|
|
234
|
+
contractPrincipalCV(address[0], address[1]),
|
|
235
|
+
standardPrincipalCV(this.stackswap.getSenderAddress()),
|
|
236
|
+
uintCV(round),
|
|
237
|
+
]);
|
|
238
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
239
|
+
const result = cvToValue(result_raw);
|
|
240
|
+
// // console.log('getFarmingUserRewardTotal', result);
|
|
241
|
+
return result;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
async getNFTFarmingReward(farming_contract: string) {
|
|
245
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getNFTFarmingReward', [
|
|
246
|
+
standardPrincipalCV(this.stackswap.getSenderAddress()),
|
|
247
|
+
]);
|
|
248
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
249
|
+
const result = cvToValue(result_raw);
|
|
250
|
+
// // console.log('getFarmingUserRewardTotal', result);
|
|
251
|
+
return result;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
async getFarmingUserRewardList2(stakingToken: string, unclaimed_list: any, farming_contract: string) {
|
|
255
|
+
const address = stakingToken.split('.');
|
|
256
|
+
const function_option = getReadOptions(this.stackswap, farming_contract, 'getFarmingRewardFromList', [
|
|
257
|
+
standardPrincipalCV(this.stackswap.getSenderAddress()),
|
|
258
|
+
contractPrincipalCV(address[0], address[1]),
|
|
259
|
+
listCV(unclaimed_list),
|
|
260
|
+
]);
|
|
261
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
262
|
+
const result = cvToValue(result_raw);
|
|
263
|
+
// // console.log('getFarmingUserRewardTotal', result);
|
|
264
|
+
return result;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
async getFarmBalance(token: any, farming_contract: string) {
|
|
268
|
+
// // console.log("getBalance", token)
|
|
269
|
+
const pair_details_options: any = getReadOptions(this.stackswap, token.addr, 'get-balance',
|
|
270
|
+
[contractPrincipalCV(this.stackswap.config.STACKSWAP_ADDRESS(), farming_contract)]);
|
|
271
|
+
try {
|
|
272
|
+
const result = await callReadOnlyFunction(pair_details_options);
|
|
273
|
+
return cvToValue(result).value;
|
|
274
|
+
} catch (e) {
|
|
275
|
+
return 0;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
async stakeTokens(stakingToken: Token, amountTokens: string, lockPeriod: number, callback: any, farming_contract: string) {
|
|
281
|
+
const amount = new BigNumber(amountTokens).multipliedBy(10 ** stakingToken.decimal).toFixed(0).toString();
|
|
282
|
+
const function_option = getWriteOptions(this.stackswap, farming_contract, 'stakeTokens', [
|
|
283
|
+
uintCV(amount),
|
|
284
|
+
parseAddressToCV(stakingToken.addr),
|
|
285
|
+
uintCV(lockPeriod)
|
|
286
|
+
], [await getPostConditionFromAsset(this.stackswap, this.stackswap.getSenderAddress(), stakingToken.addr, amount, FungibleConditionCode.Equal)], callback);
|
|
287
|
+
await openContractCall(function_option);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
async claimStakingReward(stakingToken: string, cycle: number, rewardToken1: string, rewardToken2: string, rewardToken3: string, rewardToken4: string, rewardList: any, callback: any, farming_contract: string) {
|
|
293
|
+
const address = stakingToken.split('.');
|
|
294
|
+
const post_condition : any = [];
|
|
295
|
+
if(stakingToken === rewardToken1){
|
|
296
|
+
post_condition.push(await getPostConditionFromAsset(this.stackswap, farming_contract, stakingToken, new BigNumber(rewardList.returnToken.value).plus(rewardList.reward1.value).toFixed(0), FungibleConditionCode.Equal));
|
|
297
|
+
}else{
|
|
298
|
+
post_condition.push(await getPostConditionFromAsset(this.stackswap, farming_contract, stakingToken, rewardList.returnToken.value, FungibleConditionCode.Equal));
|
|
299
|
+
post_condition.push(await getPostConditionFromAsset(this.stackswap, farming_contract, rewardToken1, rewardList.reward1.value, FungibleConditionCode.Equal));
|
|
300
|
+
}
|
|
301
|
+
if(rewardToken2 !== Token.getBaseTokens(this.stackswap, BaseToken.NULL).addr){
|
|
302
|
+
post_condition.push(await getPostConditionFromAsset(this.stackswap, farming_contract, rewardToken2, rewardList.reward2.value, FungibleConditionCode.Equal));
|
|
303
|
+
}
|
|
304
|
+
if(rewardToken3 !== Token.getBaseTokens(this.stackswap, BaseToken.NULL).addr){
|
|
305
|
+
post_condition.push(await getPostConditionFromAsset(this.stackswap, farming_contract, rewardToken3, rewardList.reward3.value, FungibleConditionCode.Equal));
|
|
306
|
+
}
|
|
307
|
+
if(rewardToken4 !== Token.getBaseTokens(this.stackswap, BaseToken.NULL).addr) {
|
|
308
|
+
post_condition.push(await getPostConditionFromAsset(this.stackswap, farming_contract, rewardToken4, rewardList.reward4.value, FungibleConditionCode.Equal));
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
//{
|
|
312
|
+
// "returnToken": {
|
|
313
|
+
// "type": "uint",
|
|
314
|
+
// "value": "0"
|
|
315
|
+
// },
|
|
316
|
+
// "reward1": {
|
|
317
|
+
// "type": "uint",
|
|
318
|
+
// "value": "104500000"
|
|
319
|
+
// },
|
|
320
|
+
// "reward2": {
|
|
321
|
+
// "type": "uint",
|
|
322
|
+
// "value": "10545000"
|
|
323
|
+
// },
|
|
324
|
+
// "reward3": {
|
|
325
|
+
// "type": "uint",
|
|
326
|
+
// "value": "105545000"
|
|
327
|
+
// },
|
|
328
|
+
// "reward4": {
|
|
329
|
+
// "type": "uint",
|
|
330
|
+
// "value": "0"
|
|
331
|
+
// }
|
|
332
|
+
// }
|
|
333
|
+
const function_option = getWriteOptions(this.stackswap, farming_contract, 'claimStakingReward', [
|
|
334
|
+
uintCV(cycle),
|
|
335
|
+
contractPrincipalCV(address[0], address[1]),
|
|
336
|
+
parseAddressToCV(rewardToken1),
|
|
337
|
+
parseAddressToCV(rewardToken2),
|
|
338
|
+
parseAddressToCV(rewardToken3),
|
|
339
|
+
parseAddressToCV(rewardToken4),
|
|
340
|
+
], post_condition, callback, false);
|
|
341
|
+
// console.log(rewardList);
|
|
342
|
+
await openContractCall(function_option);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
async getNFTAsset(tokenStr: string){
|
|
346
|
+
// // console.log(tokenStr);
|
|
347
|
+
const token_addr = tokenStr.split('.');
|
|
348
|
+
const url = this.stackswap.config.STACKS_API_URL() + '/v2/contracts/interface/' + token_addr[0] + '/' + token_addr[1];
|
|
349
|
+
const result = await axios.get(url);
|
|
350
|
+
if (result.data.non_fungible_tokens.length === 1) {
|
|
351
|
+
return tokenStr + '::' + result.data.non_fungible_tokens[0].name as any;
|
|
352
|
+
} else {
|
|
353
|
+
return tokenStr + '::' + result.data.non_fungible_tokens[0].name as any;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
async stakeNFTs(goldList: number[], silverList: number[], callback: any, farming_contract: string) {
|
|
358
|
+
// // console.log(amountTokens);
|
|
359
|
+
const gold_list = [];
|
|
360
|
+
const silver_list = [];
|
|
361
|
+
const post_condition : any = [];
|
|
362
|
+
const gold_asset_string = await this.getNFTAsset(this.stackswap.config.STACKSWAP_ADDRESS()+'.'+this.stackswap.config.CONTRACT_NAME_GOLD_PASS());
|
|
363
|
+
const silver_asset_string = await this.getNFTAsset(this.stackswap.config.STACKSWAP_ADDRESS()+'.'+this.stackswap.config.CONTRACT_NAME_SILVER_PASS());
|
|
364
|
+
for (const gold of goldList) {
|
|
365
|
+
gold_list.push(uintCV(gold))
|
|
366
|
+
post_condition.push(
|
|
367
|
+
makeStandardNonFungiblePostCondition(this.stackswap.getSenderAddress(), NonFungibleConditionCode.Sends, gold_asset_string, uintCV(gold)),
|
|
368
|
+
)
|
|
369
|
+
}
|
|
370
|
+
for (const silver of silverList) {
|
|
371
|
+
silver_list.push(uintCV(silver))
|
|
372
|
+
post_condition.push(
|
|
373
|
+
makeStandardNonFungiblePostCondition(this.stackswap.getSenderAddress(), NonFungibleConditionCode.Sends, silver_asset_string, uintCV(silver)),
|
|
374
|
+
)
|
|
375
|
+
}
|
|
376
|
+
const function_option = getWriteOptions(this.stackswap, farming_contract, 'stakeNFTs', [
|
|
377
|
+
listCV(gold_list),
|
|
378
|
+
listCV(silver_list)
|
|
379
|
+
], post_condition, callback, false);
|
|
380
|
+
await openContractCall(function_option);
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
async claimNFTStakingReward( rewardToken1: string, rewardToken2: string, rewardToken3: string, rewardToken4: string, rewardList: any, callback: any, farming_contract: string) {
|
|
385
|
+
const post_condition: any = [];
|
|
386
|
+
const gold_asset_string = await this.getNFTAsset(this.stackswap.config.STACKSWAP_ADDRESS()+'.'+this.stackswap.config.CONTRACT_NAME_GOLD_PASS());
|
|
387
|
+
for (const gold of rewardList.returnNFTS.value) {
|
|
388
|
+
// console.log(gold);
|
|
389
|
+
post_condition.push(
|
|
390
|
+
makeContractNonFungiblePostCondition(farming_contract.split('.')[0],farming_contract.split('.')[1], NonFungibleConditionCode.Sends, gold_asset_string, uintCV(gold.value)),
|
|
391
|
+
)
|
|
392
|
+
}
|
|
393
|
+
if(rewardToken1 !== Token.getBaseTokens(this.stackswap, BaseToken.NULL).addr){
|
|
394
|
+
post_condition.push(await getPostConditionFromAsset(this.stackswap, farming_contract, rewardToken1, rewardList.reward1.value, FungibleConditionCode.Equal));
|
|
395
|
+
} if(rewardToken2 !== Token.getBaseTokens(this.stackswap, BaseToken.NULL).addr){
|
|
396
|
+
post_condition.push(await getPostConditionFromAsset(this.stackswap, farming_contract, rewardToken2, rewardList.reward2.value, FungibleConditionCode.Equal));
|
|
397
|
+
} if(rewardToken3 !== Token.getBaseTokens(this.stackswap, BaseToken.NULL).addr){
|
|
398
|
+
post_condition.push(await getPostConditionFromAsset(this.stackswap, farming_contract, rewardToken3, rewardList.reward3.value, FungibleConditionCode.Equal));
|
|
399
|
+
} if(rewardToken4 !== Token.getBaseTokens(this.stackswap, BaseToken.NULL).addr) {
|
|
400
|
+
post_condition.push(await getPostConditionFromAsset(this.stackswap, farming_contract, rewardToken4, rewardList.reward4.value, FungibleConditionCode.Equal));
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
const function_option = getWriteOptions(this.stackswap, farming_contract, 'claimNFTStakingReward', [
|
|
404
|
+
parseAddressToCV(rewardToken1),
|
|
405
|
+
parseAddressToCV(rewardToken2),
|
|
406
|
+
parseAddressToCV(rewardToken3),
|
|
407
|
+
parseAddressToCV(rewardToken4),
|
|
408
|
+
], post_condition, callback, false);
|
|
409
|
+
// // console.log(rewardList, reclaimList);
|
|
410
|
+
await openContractCall(function_option);
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
async getRewardBalanceFromFarming(stakingToken: string, unclaimed_list: any, farming_contract: string) {
|
|
415
|
+
// let reward_balance = new BigNumber(0);
|
|
416
|
+
const tempRewardDict = {
|
|
417
|
+
returnToken:{
|
|
418
|
+
type: "uint",
|
|
419
|
+
value: '0'
|
|
420
|
+
}, reward1:{
|
|
421
|
+
type: "uint",
|
|
422
|
+
value: '0'
|
|
423
|
+
}, reward2:{
|
|
424
|
+
type: "uint",
|
|
425
|
+
value: '0'
|
|
426
|
+
}, reward3:{
|
|
427
|
+
type: "uint",
|
|
428
|
+
value: '0'
|
|
429
|
+
}, reward4:{
|
|
430
|
+
type: "uint",
|
|
431
|
+
value: '0'
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
try {
|
|
435
|
+
for (const round of unclaimed_list) {
|
|
436
|
+
const result = await this.getFarmingReward(stakingToken, round, farming_contract);
|
|
437
|
+
tempRewardDict.returnToken.value =
|
|
438
|
+
new BigNumber(tempRewardDict.returnToken.value).plus(result.returnToken.value).toFixed(0);
|
|
439
|
+
tempRewardDict.reward1.value =
|
|
440
|
+
new BigNumber(tempRewardDict.reward1.value).plus(result.reward1.value).toFixed(0);
|
|
441
|
+
tempRewardDict.reward2.value =
|
|
442
|
+
new BigNumber(tempRewardDict.reward2.value).plus(result.reward2.value).toFixed(0);
|
|
443
|
+
tempRewardDict.reward3.value =
|
|
444
|
+
new BigNumber(tempRewardDict.reward3.value).plus(result.reward3.value).toFixed(0);
|
|
445
|
+
tempRewardDict.reward4.value =
|
|
446
|
+
new BigNumber(tempRewardDict.reward4.value).plus(result.reward4.value).toFixed(0);
|
|
447
|
+
}
|
|
448
|
+
return tempRewardDict;
|
|
449
|
+
} catch (e) {
|
|
450
|
+
// console.log(e);
|
|
451
|
+
return {
|
|
452
|
+
returnToken: {
|
|
453
|
+
type: "uint",
|
|
454
|
+
value: '0'
|
|
455
|
+
}, reward1: {
|
|
456
|
+
type: "uint",
|
|
457
|
+
value: '0'
|
|
458
|
+
}, reward2: {
|
|
459
|
+
type: "uint",
|
|
460
|
+
value: '0'
|
|
461
|
+
}, reward3: {
|
|
462
|
+
type: "uint",
|
|
463
|
+
value: '0'
|
|
464
|
+
}, reward4: {
|
|
465
|
+
type: "uint",
|
|
466
|
+
value: '0'
|
|
467
|
+
}
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
}
|