stackswap-front-api-test-02 1.0.35
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/506.index.umd.js +1 -0
- package/dist/esm/index.d.ts +77 -0
- package/dist/esm/index.js +110 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/stackswap/config.d.ts +84 -0
- package/dist/esm/stackswap/config.js +123 -0
- package/dist/esm/stackswap/config.js.map +1 -0
- package/dist/esm/stackswap/main.d.ts +1 -0
- package/dist/esm/stackswap/main.js +5 -0
- package/dist/esm/stackswap/main.js.map +1 -0
- package/dist/esm/stackswap/manager/farm.manager.d.ts +37 -0
- package/dist/esm/stackswap/manager/farm.manager.js +220 -0
- package/dist/esm/stackswap/manager/farm.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/farm2.manager.d.ts +37 -0
- package/dist/esm/stackswap/manager/farm2.manager.js +294 -0
- package/dist/esm/stackswap/manager/farm2.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/governance.manager.d.ts +9 -0
- package/dist/esm/stackswap/manager/governance.manager.js +54 -0
- package/dist/esm/stackswap/manager/governance.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/launchpad.manager.d.ts +13 -0
- package/dist/esm/stackswap/manager/launchpad.manager.js +148 -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/multisig.manager.d.ts +11 -0
- package/dist/esm/stackswap/manager/multisig.manager.js +52 -0
- package/dist/esm/stackswap/manager/multisig.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/nft.manager.d.ts +52 -0
- package/dist/esm/stackswap/manager/nft.manager.js +244 -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 +48 -0
- package/dist/esm/stackswap/manager/other.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/pool.manager.d.ts +33 -0
- package/dist/esm/stackswap/manager/pool.manager.js +160 -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 +25 -0
- package/dist/esm/stackswap/manager/staking.manager.js +234 -0
- package/dist/esm/stackswap/manager/staking.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/swap.manager.d.ts +35 -0
- package/dist/esm/stackswap/manager/swap.manager.js +291 -0
- package/dist/esm/stackswap/manager/swap.manager.js.map +1 -0
- package/dist/esm/stackswap/manager/token.manager.d.ts +31 -0
- package/dist/esm/stackswap/manager/token.manager.js +126 -0
- package/dist/esm/stackswap/manager/token.manager.js.map +1 -0
- package/dist/esm/stackswap/util.d.ts +37 -0
- package/dist/esm/stackswap/util.js +240 -0
- package/dist/esm/stackswap/util.js.map +1 -0
- package/dist/index.d.ts +77 -0
- package/dist/index.js +117 -0
- package/dist/index.js.map +1 -0
- package/dist/index.umd.js +2 -0
- package/dist/index.umd.js.LICENSE.txt +10 -0
- package/dist/stackswap/config.d.ts +84 -0
- package/dist/stackswap/config.js +127 -0
- package/dist/stackswap/config.js.map +1 -0
- package/dist/stackswap/main.d.ts +1 -0
- package/dist/stackswap/main.js +7 -0
- package/dist/stackswap/main.js.map +1 -0
- package/dist/stackswap/manager/farm.manager.d.ts +37 -0
- package/dist/stackswap/manager/farm.manager.js +228 -0
- package/dist/stackswap/manager/farm.manager.js.map +1 -0
- package/dist/stackswap/manager/farm2.manager.d.ts +37 -0
- package/dist/stackswap/manager/farm2.manager.js +301 -0
- package/dist/stackswap/manager/farm2.manager.js.map +1 -0
- package/dist/stackswap/manager/governance.manager.d.ts +9 -0
- package/dist/stackswap/manager/governance.manager.js +61 -0
- package/dist/stackswap/manager/governance.manager.js.map +1 -0
- package/dist/stackswap/manager/launchpad.manager.d.ts +13 -0
- package/dist/stackswap/manager/launchpad.manager.js +152 -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/multisig.manager.d.ts +11 -0
- package/dist/stackswap/manager/multisig.manager.js +56 -0
- package/dist/stackswap/manager/multisig.manager.js.map +1 -0
- package/dist/stackswap/manager/nft.manager.d.ts +52 -0
- package/dist/stackswap/manager/nft.manager.js +251 -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 +55 -0
- package/dist/stackswap/manager/other.manager.js.map +1 -0
- package/dist/stackswap/manager/pool.manager.d.ts +33 -0
- package/dist/stackswap/manager/pool.manager.js +168 -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 +25 -0
- package/dist/stackswap/manager/staking.manager.js +241 -0
- package/dist/stackswap/manager/staking.manager.js.map +1 -0
- package/dist/stackswap/manager/swap.manager.d.ts +35 -0
- package/dist/stackswap/manager/swap.manager.js +298 -0
- package/dist/stackswap/manager/swap.manager.js.map +1 -0
- package/dist/stackswap/manager/token.manager.d.ts +31 -0
- package/dist/stackswap/manager/token.manager.js +134 -0
- package/dist/stackswap/manager/token.manager.js.map +1 -0
- package/dist/stackswap/util.d.ts +37 -0
- package/dist/stackswap/util.js +259 -0
- package/dist/stackswap/util.js.map +1 -0
- package/package.json +43 -0
- package/src/index.ts +165 -0
- package/src/stackswap/config.ts +202 -0
- package/src/stackswap/main.ts +6 -0
- package/src/stackswap/manager/farm.manager.ts +310 -0
- package/src/stackswap/manager/farm2.manager.ts +407 -0
- package/src/stackswap/manager/governance.manager.ts +95 -0
- package/src/stackswap/manager/launchpad.manager.ts +190 -0
- package/src/stackswap/manager/lbtc.manager.ts +566 -0
- package/src/stackswap/manager/multisig.manager.ts +87 -0
- package/src/stackswap/manager/nft.manager.ts +311 -0
- package/src/stackswap/manager/operator.manager.ts +123 -0
- package/src/stackswap/manager/other.manager.ts +71 -0
- package/src/stackswap/manager/pool.manager.ts +188 -0
- package/src/stackswap/manager/poxl.manager.ts +99 -0
- package/src/stackswap/manager/staking.manager.ts +321 -0
- package/src/stackswap/manager/swap.manager.ts +351 -0
- package/src/stackswap/manager/token.manager.ts +156 -0
- package/src/stackswap/util.ts +269 -0
|
@@ -0,0 +1,407 @@
|
|
|
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, numFormat_} from "../util";
|
|
12
|
+
import {StackswapAPI} from "../../index";
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
export class Farm2Manager {
|
|
16
|
+
stackswap: StackswapAPI;
|
|
17
|
+
|
|
18
|
+
constructor(stackswap: StackswapAPI) {
|
|
19
|
+
this.stackswap = stackswap;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
async getFarmingRound( bh: number) {
|
|
23
|
+
try {
|
|
24
|
+
const function_option = getReadOptions(this.stackswap, this.stackswap.config.CONTRACT_NAME_STACKSWAP_FARMING(), 'getRewardRound', [
|
|
25
|
+
uintCV(bh)
|
|
26
|
+
]);
|
|
27
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
28
|
+
const result = cvToValue(result_raw);
|
|
29
|
+
// console.log('farming round', result);
|
|
30
|
+
return result.value;
|
|
31
|
+
} catch (e) {
|
|
32
|
+
return 0;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
async getFarmingRoundFirstBlock( cycle: number) {
|
|
38
|
+
const function_option = getReadOptions(this.stackswap, this.stackswap.config.CONTRACT_NAME_STACKSWAP_FARMING(), 'getFirstBlockOfRound', [
|
|
39
|
+
uintCV(cycle)
|
|
40
|
+
]);
|
|
41
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
42
|
+
const result = cvToValue(result_raw);
|
|
43
|
+
// console.log(result);
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
async isUserMigratable( pool_address: string) {
|
|
49
|
+
const address = pool_address.split('.');
|
|
50
|
+
const function_option = getReadOptions(this.stackswap, this.stackswap.config.CONTRACT_NAME_STACKSWAP_FARMING(), 'isUserMigratable', [
|
|
51
|
+
contractPrincipalCV(address[0], address[1]),
|
|
52
|
+
standardPrincipalCV(this.stackswap.getSenderAddress()),
|
|
53
|
+
]);
|
|
54
|
+
try {
|
|
55
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
56
|
+
const result = cvToValue(result_raw);
|
|
57
|
+
// console.log('migrate' , result);
|
|
58
|
+
return result;
|
|
59
|
+
} catch (e) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
getPoolUSDPriceFarm(farm: any, farm_total: any, oracle_stx: any, oracle_stsw: any, oracle_lbtc: any) {
|
|
65
|
+
// BigNumber.config({ DECIMAL_PLACES: 6});
|
|
66
|
+
let tvl = 0;
|
|
67
|
+
switch (farm.BASE) {
|
|
68
|
+
case 'STX':
|
|
69
|
+
if (farm.token_x.symbol === farm.BASE) {
|
|
70
|
+
tvl = (new BigNumber(farm.pair['balance-x'].value).multipliedBy(farm_total).dividedBy(farm.pair['shares-total'].value).dividedBy(new BigNumber(10 ** 12))).multipliedBy(2).multipliedBy(new BigNumber(oracle_stx)).toNumber();
|
|
71
|
+
} else {
|
|
72
|
+
tvl = (new BigNumber(farm.pair['balance-y'].value).multipliedBy(farm_total).dividedBy(farm.pair['shares-total'].value).dividedBy(new BigNumber(10 ** 12))).multipliedBy(2).multipliedBy(new BigNumber(oracle_stx)).toNumber();
|
|
73
|
+
}
|
|
74
|
+
break;
|
|
75
|
+
case 'STSW':
|
|
76
|
+
if (farm.token_x.symbol === farm.BASE) {
|
|
77
|
+
tvl = (new BigNumber(farm.pair['balance-x'].value).multipliedBy(farm_total).dividedBy(farm.pair['shares-total'].value).dividedBy(new BigNumber(10 ** 12))).multipliedBy(2).multipliedBy(new BigNumber(oracle_stsw)).toNumber();
|
|
78
|
+
} else {
|
|
79
|
+
tvl = (new BigNumber(farm.pair['balance-y'].value).multipliedBy(farm_total).dividedBy(farm.pair['shares-total'].value).dividedBy(new BigNumber(10 ** 12))).multipliedBy(2).multipliedBy(new BigNumber(oracle_stsw)).toNumber();
|
|
80
|
+
}
|
|
81
|
+
break;
|
|
82
|
+
case 'lBTC':
|
|
83
|
+
if (farm.token_x.symbol === farm.BASE) {
|
|
84
|
+
tvl = (new BigNumber(farm.pair['balance-x'].value).multipliedBy(farm_total).dividedBy(farm.pair['shares-total'].value).dividedBy(new BigNumber(10 ** 14))).multipliedBy(2).multipliedBy(new BigNumber(oracle_lbtc)).toNumber();
|
|
85
|
+
} else {
|
|
86
|
+
tvl = (new BigNumber(farm.pair['balance-y'].value).multipliedBy(farm_total).dividedBy(farm.pair['shares-total'].value).dividedBy(new BigNumber(10 ** 14))).multipliedBy(2).multipliedBy(new BigNumber(oracle_lbtc)).toNumber();
|
|
87
|
+
}
|
|
88
|
+
break;
|
|
89
|
+
default:
|
|
90
|
+
tvl = 0;
|
|
91
|
+
}
|
|
92
|
+
return tvl;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
async getFarming(pair: any, token_x: any, token_y: any, farm_total: any) {
|
|
97
|
+
// BigNumber.config({ DECIMAL_PLACES: 6});
|
|
98
|
+
const x_token_addr = token_x.addr;
|
|
99
|
+
// console.log(token_x.addr);
|
|
100
|
+
const y_token_addr = token_y.addr;
|
|
101
|
+
// console.log(token_y.addr);
|
|
102
|
+
let total_balacne = new BigNumber(-1);
|
|
103
|
+
if (x_token_addr === this.stackswap.config.BASE_WSTX_DATA().addr) {
|
|
104
|
+
total_balacne = (new BigNumber(pair['balance-x'].value).multipliedBy(farm_total).dividedBy(pair['shares-total'].value).dividedBy(new BigNumber(10 ** token_x.decimal))).multipliedBy(2);
|
|
105
|
+
} else if (y_token_addr === this.stackswap.config.BASE_WSTX_DATA().addr) {
|
|
106
|
+
total_balacne = (new BigNumber(pair['balance-y'].value).multipliedBy(farm_total).dividedBy(pair['shares-total'].value).dividedBy(new BigNumber(10 ** token_y.decimal))).multipliedBy(2);
|
|
107
|
+
}
|
|
108
|
+
// console.log('pool_stx_price', token_x.addr, token_y.addr,token_x.balance, token_y.balance,total_balacne.toNumber());
|
|
109
|
+
// console.log(pair["balance-x"].value, pair["balance-y"].value, total_balacne.toNumber());
|
|
110
|
+
return total_balacne;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
async getFarmingStakerStatus( pool_address: string, cur_round: number) {
|
|
115
|
+
const address = pool_address.split('.');
|
|
116
|
+
const function_option = getReadOptions(this.stackswap, this.stackswap.config.CONTRACT_NAME_STACKSWAP_FARMING(), 'getLPUserData', [
|
|
117
|
+
contractPrincipalCV(address[0], address[1]),
|
|
118
|
+
standardPrincipalCV(this.stackswap.getSenderAddress()),
|
|
119
|
+
]);
|
|
120
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
121
|
+
const result = cvToValue(result_raw);
|
|
122
|
+
try {
|
|
123
|
+
// console.log('getFarmingStakerStatus', result);
|
|
124
|
+
const pooledToken = result.value.amountLP.value;
|
|
125
|
+
const unclaimedList = [];
|
|
126
|
+
const stakedList = []
|
|
127
|
+
for (const unclaimedElement of result.value.unclaimedList.value) {
|
|
128
|
+
if (unclaimedElement.value < cur_round) {
|
|
129
|
+
unclaimedList.push(unclaimedElement.value);
|
|
130
|
+
// console.log('TTT', unclaimedElement.value)
|
|
131
|
+
}
|
|
132
|
+
stakedList.push(unclaimedElement.value);
|
|
133
|
+
}
|
|
134
|
+
// console.log({pooledToken, unclaimedList, stakedList});
|
|
135
|
+
return {pooledToken, unclaimedList, stakedList};
|
|
136
|
+
} catch (e) {
|
|
137
|
+
// console.log(e);
|
|
138
|
+
return {pooledToken: 0, unclaimedList: [], stakedList: []}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
async getFarmingTotalStatusCycle( cycle: number) {
|
|
144
|
+
// console.log(cycle);
|
|
145
|
+
const function_option = getReadOptions(this.stackswap, this.stackswap.config.CONTRACT_NAME_STACKSWAP_FARMING(), 'getTotalRoundDataOrDefault', [
|
|
146
|
+
uintCV(cycle),
|
|
147
|
+
]);
|
|
148
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
149
|
+
const result = cvToValue(result_raw);
|
|
150
|
+
// console.log('FARMING TOTAL', result);
|
|
151
|
+
try {
|
|
152
|
+
return {
|
|
153
|
+
reward: result.reward.value,
|
|
154
|
+
value: result.value.value
|
|
155
|
+
}
|
|
156
|
+
// return new BigNumber(result.value.amountUstx.value).multipliedBy(2).toFixed(0).toString();
|
|
157
|
+
} catch (e) {
|
|
158
|
+
return {
|
|
159
|
+
reward: 0,
|
|
160
|
+
value: 0
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
*
|
|
168
|
+
* @param this.stackswap
|
|
169
|
+
* @param pool_address
|
|
170
|
+
* @param cycle
|
|
171
|
+
*
|
|
172
|
+
* {
|
|
173
|
+
* "type": "(tuple (amountLP uint) (weight uint))",
|
|
174
|
+
* "value": {
|
|
175
|
+
* "amountLP": {
|
|
176
|
+
* "type": "uint",
|
|
177
|
+
* "value": "122000000"
|
|
178
|
+
* },
|
|
179
|
+
* "weight": {
|
|
180
|
+
* "type": "uint",
|
|
181
|
+
* "value": "1"
|
|
182
|
+
* }
|
|
183
|
+
* }
|
|
184
|
+
* }
|
|
185
|
+
*/
|
|
186
|
+
|
|
187
|
+
async getFarmingTotalPoolStatus( pool_address: string) {
|
|
188
|
+
const address = pool_address.split('.');
|
|
189
|
+
const function_option = getReadOptions(this.stackswap, this.stackswap.config.CONTRACT_NAME_STACKSWAP_FARMING(), 'getLPTotalData', [
|
|
190
|
+
contractPrincipalCV(address[0], address[1]),
|
|
191
|
+
]);
|
|
192
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
193
|
+
const result = cvToValue(result_raw);
|
|
194
|
+
// console.log('lp total data', result);
|
|
195
|
+
try {
|
|
196
|
+
return {amountLP: result.value.amountLP.value, weight: result.value.weight.value};
|
|
197
|
+
// return {amountLP: result.value.amountLP.value, weight: '3'};
|
|
198
|
+
} catch (e) {
|
|
199
|
+
return {amountLP: '0', weight: '1'};
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
*
|
|
205
|
+
* @param this.stackswap
|
|
206
|
+
* @param pool_address
|
|
207
|
+
* @param cycle
|
|
208
|
+
*
|
|
209
|
+
* {
|
|
210
|
+
* value: u0,
|
|
211
|
+
* weight: u0,
|
|
212
|
+
* amountLP: u0,
|
|
213
|
+
* price: u0
|
|
214
|
+
* }
|
|
215
|
+
*/
|
|
216
|
+
|
|
217
|
+
async getFarmingTotalPoolStatusCycle( pool_address: string, cycle: number) {
|
|
218
|
+
const address = pool_address.split('.');
|
|
219
|
+
const function_option = getReadOptions(this.stackswap, this.stackswap.config.CONTRACT_NAME_STACKSWAP_FARMING(), 'getLPRoundData', [
|
|
220
|
+
contractPrincipalCV(address[0], address[1]),
|
|
221
|
+
uintCV(cycle),
|
|
222
|
+
]);
|
|
223
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
224
|
+
const result = cvToValue(result_raw);
|
|
225
|
+
// console.log('lp round data', result);
|
|
226
|
+
try {
|
|
227
|
+
return new BigNumber(result.value.amountUstx.value).multipliedBy(2).toFixed(0).toString();
|
|
228
|
+
} catch (e) {
|
|
229
|
+
return '0';
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
async getFarmingTotalValue( pool_address: string) {
|
|
235
|
+
try {
|
|
236
|
+
const address = pool_address.split('.');
|
|
237
|
+
const function_option = getReadOptions(this.stackswap, this.stackswap.config.CONTRACT_NAME_STACKSWAP_FARMING(), 'getLPTotalData', [
|
|
238
|
+
contractPrincipalCV(address[0], address[1]),
|
|
239
|
+
]);
|
|
240
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
241
|
+
const result = cvToValue(result_raw);
|
|
242
|
+
// console.log('get_farming_total',result.value);
|
|
243
|
+
return result.value;
|
|
244
|
+
} catch (e) {
|
|
245
|
+
return 0;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
async getFarmingUserRewardPerCycle( pool_address: string, cycle: number) {
|
|
252
|
+
const address = pool_address.split('.');
|
|
253
|
+
const function_option = getReadOptions(this.stackswap, this.stackswap.config.CONTRACT_NAME_STACKSWAP_FARMING(), 'getFarmingReward', [
|
|
254
|
+
contractPrincipalCV(address[0], address[1]),
|
|
255
|
+
standardPrincipalCV(this.stackswap.getSenderAddress()),
|
|
256
|
+
uintCV(cycle),
|
|
257
|
+
]);
|
|
258
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
259
|
+
const result = cvToValue(result_raw);
|
|
260
|
+
// console.log('reward', result);
|
|
261
|
+
return result;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
async getFarmingUserRewardList( pool_address: string, unclaimed_list: any) {
|
|
267
|
+
const address = pool_address.split('.');
|
|
268
|
+
const function_option = getReadOptions(this.stackswap, this.stackswap.config.CONTRACT_NAME_STACKSWAP_FARMING(), 'getFarmingRewardFromList', [
|
|
269
|
+
standardPrincipalCV(this.stackswap.getSenderAddress()),
|
|
270
|
+
contractPrincipalCV(address[0], address[1]),
|
|
271
|
+
listCV(unclaimed_list),
|
|
272
|
+
]);
|
|
273
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
274
|
+
const result = cvToValue(result_raw);
|
|
275
|
+
// console.log('getFarmingUserRewardTotal', result);
|
|
276
|
+
return result;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
async getFarmingRewardInfo( pool_address: string, cycle: number) {
|
|
281
|
+
const address = pool_address.split('.');
|
|
282
|
+
const function_option = getReadOptions(this.stackswap, this.stackswap.config.CONTRACT_NAME_STACKSWAP_FARMING(), 'getLPUserRoundData', [
|
|
283
|
+
contractPrincipalCV(address[0], address[1]),
|
|
284
|
+
standardPrincipalCV(this.stackswap.getSenderAddress()),
|
|
285
|
+
uintCV(cycle),
|
|
286
|
+
]);
|
|
287
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
288
|
+
const result = cvToValue(result_raw);
|
|
289
|
+
// console.log(result);
|
|
290
|
+
return result.value.returnLP.value;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
async migrateToVersion2( pool_address: string, callback: any = null) {
|
|
295
|
+
const address = pool_address.split('.');
|
|
296
|
+
// console.log(amountTokens);
|
|
297
|
+
const function_option = getWriteOptions(this.stackswap, this.stackswap.config.CONTRACT_NAME_STACKSWAP_FARMING(), 'migrateFromVersion1', [
|
|
298
|
+
contractPrincipalCV(address[0], address[1]),
|
|
299
|
+
], [], callback);
|
|
300
|
+
await openContractCall(function_option);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
async stakeFarmingContract( pool_address: string, amountTokens: string, lockPeriod: number, callback: any = null) {
|
|
305
|
+
const address = pool_address.split('.');
|
|
306
|
+
// console.log(amountTokens);
|
|
307
|
+
const amount = new BigNumber(amountTokens).multipliedBy(10 ** 6).toFixed(0).toString();
|
|
308
|
+
const function_option = getWriteOptions(this.stackswap, this.stackswap.config.CONTRACT_NAME_STACKSWAP_FARMING(), 'stakeTokens', [
|
|
309
|
+
uintCV(amount),
|
|
310
|
+
contractPrincipalCV(address[0], address[1]),
|
|
311
|
+
uintCV(lockPeriod),
|
|
312
|
+
contractPrincipalCV(this.stackswap.config.STACKSWAP_ADDRESS(), this.stackswap.config.CONTRACT_NAME_ORACLE())
|
|
313
|
+
], [await getPostConditionFromAsset(this.stackswap, this.stackswap.getSenderAddress(), pool_address, amount, FungibleConditionCode.Equal)], callback);
|
|
314
|
+
await openContractCall(function_option);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
async getFarmBalance( token: any) {
|
|
318
|
+
// console.log("getBalance", token)
|
|
319
|
+
const pair_details_options: any = getReadOptions(this.stackswap, token.addr, 'get-balance',
|
|
320
|
+
[contractPrincipalCV(this.stackswap.config.STACKSWAP_ADDRESS(), this.stackswap.config.CONTRACT_NAME_STACKSWAP_FARMING())]);
|
|
321
|
+
try {
|
|
322
|
+
const result = await callReadOnlyFunction(pair_details_options);
|
|
323
|
+
return cvToValue(result).value;
|
|
324
|
+
} catch (e) {
|
|
325
|
+
return 0;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
async claimFarmingContract( pool_address: string, cycle: number, amount_STSW: string, amount_LP: string, callback: any = null) {
|
|
331
|
+
const address = pool_address.split('.');
|
|
332
|
+
const post_condition = [];
|
|
333
|
+
post_condition.push(await getPostConditionFromAsset(this.stackswap, this.stackswap.config.STACKSWAP_ADDRESS() + '.' + this.stackswap.config.CONTRACT_NAME_STACKSWAP_FARMING(), this.stackswap.config.BASE_STSW_DATA().addr, amount_STSW, FungibleConditionCode.Equal));
|
|
334
|
+
post_condition.push(await getPostConditionFromAsset(this.stackswap, this.stackswap.config.STACKSWAP_ADDRESS() + '.' + this.stackswap.config.CONTRACT_NAME_STACKSWAP_FARMING(), pool_address, amount_LP, FungibleConditionCode.Equal));
|
|
335
|
+
const function_option = getWriteOptions(this.stackswap, this.stackswap.config.CONTRACT_NAME_STACKSWAP_FARMING(), 'claimStakingReward', [
|
|
336
|
+
uintCV(cycle),
|
|
337
|
+
contractPrincipalCV(address[0], address[1]),
|
|
338
|
+
contractPrincipalCV(this.stackswap.config.STACKSWAP_ADDRESS(), this.stackswap.config.CONTRACT_NAME_ORACLE())
|
|
339
|
+
], post_condition, callback);
|
|
340
|
+
await openContractCall(function_option);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
async unstakeFarmingContract( pool_address: string, cycle: number, amount_LP: string, callback: any = null) {
|
|
345
|
+
const address = pool_address.split('.');
|
|
346
|
+
const post_condition = [];
|
|
347
|
+
// post_condition.push(await getPostConditionFromAsset(STACKSWAP_ADDRESS()+'.'+CONTRACT_NAME_STACKSWAP_FARMING(), BASE_STSW_DATA().addr, amount_STSW, FungibleConditionCode.Equal));
|
|
348
|
+
post_condition.push(await getPostConditionFromAsset(this.stackswap, this.stackswap.config.STACKSWAP_ADDRESS() + '.' + this.stackswap.config.CONTRACT_NAME_STACKSWAP_FARMING(), pool_address, amount_LP, FungibleConditionCode.Equal));
|
|
349
|
+
const function_option = getWriteOptions(this.stackswap, this.stackswap.config.CONTRACT_NAME_STACKSWAP_FARMING(), 'unstake-from-farming', [
|
|
350
|
+
uintCV(cycle),
|
|
351
|
+
contractPrincipalCV(address[0], address[1]),
|
|
352
|
+
], post_condition, callback);
|
|
353
|
+
await openContractCall(function_option);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
async getCurrentFarmingRound() {
|
|
358
|
+
const bh:number = Number(await this.stackswap.getCurrentBlock());
|
|
359
|
+
return await this. getFarmingRound(bh);
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
async getRewardBalanceFromFarming( pool_addr: string, unclaimed_list: any) {
|
|
364
|
+
// let reward_balance = new BigNumber(0);
|
|
365
|
+
const num_list = [];
|
|
366
|
+
for (const unclaimed of unclaimed_list) {
|
|
367
|
+
num_list.push(uintCV(unclaimed));
|
|
368
|
+
}
|
|
369
|
+
let reward_num = new BigNumber(0);
|
|
370
|
+
|
|
371
|
+
try {
|
|
372
|
+
for (let i = 0; i < num_list.length; i += 4) {
|
|
373
|
+
// console.log(i, num_list.slice(i, i+4 < num_list.length ? i + 4 : num_list.length));
|
|
374
|
+
const result = await this.getFarmingUserRewardList(pool_addr, num_list.slice(i, i + 4 < num_list.length ? i + 4 : num_list.length));
|
|
375
|
+
// rewardSum.value;
|
|
376
|
+
// console.log('temp result', result);
|
|
377
|
+
reward_num = reward_num.plus(new BigNumber(result.rewardSum.value));
|
|
378
|
+
}
|
|
379
|
+
return numFormat_(num2decimal(reward_num.toString(), 6));
|
|
380
|
+
} catch (e) {
|
|
381
|
+
// console.log(e);
|
|
382
|
+
return numFormat_(num2decimal(reward_num.toString(), 6));
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
getFarmingAPR(tvl: string, stsw_price: string, reward: string, weight: string) {
|
|
387
|
+
// console.log('farmingAPR');
|
|
388
|
+
// console.log({tvl, stsw_price, reward, weight})
|
|
389
|
+
if (!tvl || new BigNumber(tvl) <= new BigNumber(0)) {
|
|
390
|
+
const temp = new BigNumber(reward).dividedBy(10 ** 6).multipliedBy(52).multipliedBy(stsw_price);
|
|
391
|
+
// console.log('reward_to_stx', temp.toFixed(3).toString());
|
|
392
|
+
// console.log(typeof temp);
|
|
393
|
+
return temp.toFixed(3).toString();
|
|
394
|
+
} else {
|
|
395
|
+
BigNumber.config({DECIMAL_PLACES: 10});
|
|
396
|
+
const tvl_bn = new BigNumber(tvl).multipliedBy(10 ** 12);
|
|
397
|
+
// console.log({tvl_bn: tvl_bn.toString()});
|
|
398
|
+
const reward_usd = new BigNumber(reward).multipliedBy(stsw_price);
|
|
399
|
+
// console.log({reward_stx: reward_usd.toString()});
|
|
400
|
+
const new_reward = reward_usd.div(tvl_bn);
|
|
401
|
+
// console.log({new_reward: new_reward.toString()});
|
|
402
|
+
const new_reward_apr = new_reward.multipliedBy(5200).multipliedBy(weight);
|
|
403
|
+
// console.log({new_reward_apr: new_reward_apr.toString()});
|
|
404
|
+
return new_reward_apr.toFixed(3).toString();
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import {
|
|
2
|
+
callReadOnlyFunction,
|
|
3
|
+
cvToValue,
|
|
4
|
+
FungibleConditionCode,
|
|
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
|
+
const function_option : any = getReadOptions(this.stackswap, this.stackswap.config.CONTRACT_NAME_STACKSWAP_GOVERNANCE(),'get-proposals',[]);
|
|
23
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
24
|
+
|
|
25
|
+
const result = cvToValue(result_raw);
|
|
26
|
+
|
|
27
|
+
// tslint:disable-next-line:prefer-const
|
|
28
|
+
let res_list:any = [];
|
|
29
|
+
result.value.forEach((element:any) =>{
|
|
30
|
+
res_list.push(element.value);
|
|
31
|
+
});
|
|
32
|
+
return res_list;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async getNumVoting(proposal_id:number) {
|
|
36
|
+
const function_option : any = getReadOptions(
|
|
37
|
+
this.stackswap,
|
|
38
|
+
this.stackswap.config.CONTRACT_NAME_STACKSWAP_GOVERNANCE(),
|
|
39
|
+
'get-votes-by-member-by-id',
|
|
40
|
+
[
|
|
41
|
+
uintCV(proposal_id),
|
|
42
|
+
standardPrincipalCV(this.stackswap.getSenderAddress())
|
|
43
|
+
]);
|
|
44
|
+
const result_raw = await callReadOnlyFunction(function_option);
|
|
45
|
+
const result = cvToValue(result_raw);
|
|
46
|
+
// console.log("TTT", cvToValue(result_raw))
|
|
47
|
+
return [result['vote-count'].value, result.returned.value];
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
async txWithdrawVoting(proposal_id:number, callback: any = null) {
|
|
52
|
+
const function_option : any = getWriteOptions(
|
|
53
|
+
this.stackswap,
|
|
54
|
+
this.stackswap.config.CONTRACT_NAME_STACKSWAP_GOVERNANCE(),
|
|
55
|
+
'return-votes-to-member',
|
|
56
|
+
[
|
|
57
|
+
uintCV(proposal_id),
|
|
58
|
+
standardPrincipalCV(this.stackswap.getSenderAddress())
|
|
59
|
+
], callback);
|
|
60
|
+
await openContractCall(function_option);
|
|
61
|
+
// console.log("TTT", cvToValue(result_raw))
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
async txVote(proposal_id:number, vote_mode:string, vote_amount:any, callback: any = null){
|
|
66
|
+
// console.log("TT", typeof(vote_mode), vote_mode)
|
|
67
|
+
// console.log("TT", typeof(vote_amount), vote_amount)
|
|
68
|
+
// console.log("TT", typeof(BASE_vSTSW_DATA().decimal), BASE_vSTSW_DATA().decimal)
|
|
69
|
+
|
|
70
|
+
const vote_amount_bn = new BigNumber(10 ** 6).multipliedBy(parseFloat(vote_amount)).toFixed(0).toString();
|
|
71
|
+
// console.log("TT", typeof(vote_amount_bn), vote_amount_bn)
|
|
72
|
+
|
|
73
|
+
const post_condition = [await getPostConditionFromAsset(this.stackswap, this.stackswap.getSenderAddress(), this.stackswap.config.BASE_vSTSW_DATA().addr, vote_amount_bn, FungibleConditionCode.Equal)];
|
|
74
|
+
|
|
75
|
+
let function_option = null;
|
|
76
|
+
if(vote_mode==='For'){
|
|
77
|
+
function_option = getWriteOptions(
|
|
78
|
+
this.stackswap,
|
|
79
|
+
this.stackswap.config.CONTRACT_NAME_STACKSWAP_GOVERNANCE(),
|
|
80
|
+
'vote-for',[
|
|
81
|
+
uintCV(proposal_id), uintCV(vote_amount_bn)],
|
|
82
|
+
post_condition, callback);
|
|
83
|
+
}else if (vote_mode === 'Against'){
|
|
84
|
+
function_option = getWriteOptions(
|
|
85
|
+
this.stackswap,
|
|
86
|
+
this.stackswap.config.CONTRACT_NAME_STACKSWAP_GOVERNANCE(),
|
|
87
|
+
'vote-against',[
|
|
88
|
+
uintCV(proposal_id), uintCV(vote_amount_bn)],
|
|
89
|
+
post_condition, callback);
|
|
90
|
+
}
|
|
91
|
+
if(function_option !=null){
|
|
92
|
+
await openContractCall(function_option);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|