@ape.swap/bonds-sdk 1.0.360 → 1.0.362
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/components/BondModal/BondModal.js +2 -58
- package/dist/components/BondModal/helper.d.ts +9 -0
- package/dist/components/BondModal/helper.js +53 -0
- package/dist/components/YourBonds/YourBonds.js +12 -143
- package/dist/components/YourBonds/fetchBillsUser.d.ts +4 -2
- package/dist/components/YourBonds/fetchBillsUser.js +78 -9
- package/dist/components/YourBondsModal/YourBondsModal.js +6 -137
- package/dist/scss/YourBondsModal.scss +7 -6
- package/dist/types/bonds.d.ts +1 -89
- package/package.json +1 -1
|
@@ -59,13 +59,13 @@ import { useNavigate } from 'react-router-dom';
|
|
|
59
59
|
import { isNumber } from '../../utils/numbers';
|
|
60
60
|
import { TooltipBubble, Button, Svg, ListTag } from '../uikit-sdk';
|
|
61
61
|
import { TooltipText } from '../../enum/tooltips';
|
|
62
|
-
import { formatNumberSI } from '../../utils/formatNumber';
|
|
63
62
|
import { ethers } from 'ethers';
|
|
64
63
|
import { adjustDecimals } from "../../utils/convertToTokenValue";
|
|
65
64
|
import TokenImage from '../uikit-sdk/TokenImage';
|
|
66
65
|
import '../../scss/BondModal.scss';
|
|
67
66
|
import BOND_ABI from '../../config/abi/bond.json';
|
|
68
67
|
import ERC_20_ABI from '../../config/abi/bond.json';
|
|
68
|
+
import { formatUSDNumber, getPremiumColor, premium, youGet, youGetUSD, youSpend, youSpendUSD } from './helper';
|
|
69
69
|
var BondModal = function (_a) {
|
|
70
70
|
var isOpen = _a.isOpen, onClose = _a.onClose, bondAddress = _a.bondAddress;
|
|
71
71
|
if (!isOpen)
|
|
@@ -116,62 +116,6 @@ var BondModal = function (_a) {
|
|
|
116
116
|
setSelectedBond(bond);
|
|
117
117
|
navigate("/bondsingle/".concat(bond.billAddress));
|
|
118
118
|
};
|
|
119
|
-
//Note to Gordon: Can we put all this in a helper file or something so the code in here is less?
|
|
120
|
-
/////////////////////
|
|
121
|
-
function formatNumber(input) {
|
|
122
|
-
var number = new BigNumber(input);
|
|
123
|
-
if (number.isNaN())
|
|
124
|
-
return '0';
|
|
125
|
-
return number.gt(1000000)
|
|
126
|
-
? formatNumberSI(number.toNumber())
|
|
127
|
-
: number.gt(1000)
|
|
128
|
-
? number.toNumber().toLocaleString(undefined, { maximumFractionDigits: 0 })
|
|
129
|
-
: number.gt(0.01)
|
|
130
|
-
? parseFloat(number.toFixed(2)).toLocaleString(undefined)
|
|
131
|
-
: parseFloat(number.toPrecision(5)).toLocaleString(undefined);
|
|
132
|
-
}
|
|
133
|
-
function formatUSDNumber(input) {
|
|
134
|
-
var number = new BigNumber(input);
|
|
135
|
-
if (number.isNaN())
|
|
136
|
-
return '0';
|
|
137
|
-
// If the number is greater than 0 but less than 0.01
|
|
138
|
-
if (number.gt(0) && number.lt(0.01)) {
|
|
139
|
-
return '< 0.01';
|
|
140
|
-
}
|
|
141
|
-
// If the number is greater than 1k, round to no decimals.
|
|
142
|
-
if (number.gt(1000)) {
|
|
143
|
-
return number.toNumber().toLocaleString(undefined, { maximumFractionDigits: 0 });
|
|
144
|
-
}
|
|
145
|
-
// Note: Between 1k and 0.01 show 2 decimals
|
|
146
|
-
return parseFloat(number.toFixed(2)).toLocaleString(undefined);
|
|
147
|
-
}
|
|
148
|
-
var youSpend = formatNumber(inputValue);
|
|
149
|
-
var youSpendUSD = function (bond) {
|
|
150
|
-
return (parseFloat(inputValue) * parseFloat(bond.principalTokenPrice)).toString();
|
|
151
|
-
};
|
|
152
|
-
var youGet = function (bond) {
|
|
153
|
-
var _a;
|
|
154
|
-
var bigValue = new BigNumber(inputValue).times(new BigNumber(10).pow(18));
|
|
155
|
-
var billValue = bigValue.div(new BigNumber((_a = bond.trueBillPrice) !== null && _a !== void 0 ? _a : 0));
|
|
156
|
-
return formatNumber(billValue.toString());
|
|
157
|
-
};
|
|
158
|
-
var youGetUSD = function (bond) {
|
|
159
|
-
var _a;
|
|
160
|
-
var bigValue = new BigNumber(inputValue).times(new BigNumber(10).pow(18));
|
|
161
|
-
var billValue = bigValue.div(new BigNumber((_a = bond.trueBillPrice) !== null && _a !== void 0 ? _a : 0));
|
|
162
|
-
return (billValue.toNumber() * parseFloat(bond.payoutTokenPrice)).toString();
|
|
163
|
-
};
|
|
164
|
-
var premium = function (bond) {
|
|
165
|
-
var premiumUSD = parseFloat(youGetUSD(bond)) - parseFloat(youSpendUSD(bond));
|
|
166
|
-
return formatUSDNumber(premiumUSD.toString());
|
|
167
|
-
};
|
|
168
|
-
var getPremiumColor = function (bond) {
|
|
169
|
-
var getPremium = premium(bond);
|
|
170
|
-
return parseFloat(getPremium) < 0 ? 'premium-negative' : 'premium-positive';
|
|
171
|
-
};
|
|
172
|
-
////////////////////////////////////////////////////////////////////////////////////
|
|
173
|
-
////////////////////////////////////////////////////////////////////////////////////
|
|
174
|
-
////////////////////////////////////////////////////////////////////////////////////
|
|
175
119
|
var handleBuy = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
176
120
|
var provider, signer, bondContract, maxPrice, amount, tx, error_1;
|
|
177
121
|
return __generator(this, function (_a) {
|
|
@@ -249,7 +193,7 @@ var BondModal = function (_a) {
|
|
|
249
193
|
}); };
|
|
250
194
|
return (_jsx(ThemeUIProvider, __assign({ theme: defaultTheme }, { children: bondData.map(function (bond) {
|
|
251
195
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
252
|
-
return (_jsx(React.Fragment, { children: _jsx(Flex, __assign({ className: "modal modal-backdrop" }, { children: _jsxs(Flex, __assign({ className: "modal modal-content" }, { children: [isActive && account && (_jsxs("p", { children: ["Wallet Address: ", account] })), _jsx(Flex, __assign({ className: "modal modal-header" }, { children: _jsx(Flex, __assign({ className: "svg-close", onClick: onClose }, { children: _jsx(Svg, { icon: "close" }) })) })), _jsxs(Flex, __assign({ className: "modal-container table-container" }, { children: [_jsxs(Flex, __assign({ className: "modal-container title-container" }, { children: [_jsx(Flex, __assign({ className: "title-container bondicon" }, { children: _jsx(TokenImage, { symbol: (_a = bond.showcaseTokenName) !== null && _a !== void 0 ? _a : bond.payoutTokenName, size: 50 }) })), _jsx(Flex, __assign({ className: "title-container bondname" }, { children: bond === null || bond === void 0 ? void 0 : bond.showcaseTokenName })), _jsxs(Flex, __assign({ className: "title-container price-container" }, { children: [_jsxs(Flex, __assign({ className: "price-container price" }, { children: ["$", earnTokenPrice(bond)] })), _jsxs(Flex, __assign({ className: "price-container discounted" }, { children: ["$", discountEarnTokenPrice(bond)] }))] })), _jsx(Flex, __assign({ className: "title-container tokentags" }, { children: _jsx(ListTag, { text: (_b = bond === null || bond === void 0 ? void 0 : bond.tags) === null || _b === void 0 ? void 0 : _b[0], variant: ((_c = bond === null || bond === void 0 ? void 0 : bond.tags) === null || _c === void 0 ? void 0 : _c[0]) === 'Cex Fund' ? 'cex_fund' : 'liquidity' }) }))] })), _jsx(Flex, __assign({ className: "modal-container description-container" }, { children: bond === null || bond === void 0 ? void 0 : bond.shortDescription })), _jsxs(Flex, __assign({ className: "modal-container blocks-container" }, { children: [_jsxs(Flex, __assign({ className: "modal-block column-discount ".concat(getDiscountColor(bond === null || bond === void 0 ? void 0 : bond.discount)) }, { children: [_jsxs(Flex, __assign({ className: "block-header header" }, { children: ["Discount", _jsx(TooltipBubble, __assign({ body: _jsx(Flex, { children: TooltipText.Discount }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, -5%)" }, { children: _jsx(Flex, __assign({ className: "block-header icon" }, { children: _jsx(Svg, { icon: "questionCircle", width: "12px" }) })) }))] })), "".concat((_d = bond === null || bond === void 0 ? void 0 : bond.discount) === null || _d === void 0 ? void 0 : _d.toFixed(2), "%")] })), _jsxs(Flex, __assign({ className: "modal-block column-arr" }, { children: [_jsxs(Flex, __assign({ className: "block-header header" }, { children: ["ARR", _jsx(TooltipBubble, __assign({ body: _jsx(Flex, { children: TooltipText.ARR }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, -5%)" }, { children: _jsx(Flex, __assign({ className: "block-header icon" }, { children: _jsx(Svg, { icon: "questionCircle", width: "12px" }) })) }))] })), "".concat(((((_e = bond === null || bond === void 0 ? void 0 : bond.discount) !== null && _e !== void 0 ? _e : 0) * 365) / vestingTime((_f = bond === null || bond === void 0 ? void 0 : bond.vestingTerm) !== null && _f !== void 0 ? _f : 0).days).toFixed(2), "%")] })), _jsxs(Flex, __assign({ className: "modal-block column-term" }, { children: [_jsxs(Flex, __assign({ className: "block-header header" }, { children: ["Terms", _jsx(TooltipBubble, __assign({ body: _jsx(Flex, { children: TooltipText.Terms }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, -5%)" }, { children: _jsx(Flex, __assign({ className: "block-header icon" }, { children: _jsx(Svg, { icon: "questionCircle", width: "12px" }) })) }))] })), vestingTime((_g = bond === null || bond === void 0 ? void 0 : bond.vestingTerm) !== null && _g !== void 0 ? _g : 0).days ? "".concat(vestingTime((_h = bond === null || bond === void 0 ? void 0 : bond.vestingTerm) !== null && _h !== void 0 ? _h : 0).days, " D") : '-'] })), _jsxs(Flex, __assign({ className: "modal-block column-maxbuy" }, { children: [_jsxs(Flex, __assign({ className: "block-header header" }, { children: ["Max Buy", _jsx(TooltipBubble, __assign({ body: _jsx(Flex, { children: TooltipText.MaxBuy(bond.payoutTokenName) }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, -5%)" }, { children: _jsx(Flex, __assign({ className: "block-header icon" }, { children: _jsx(Svg, { icon: "questionCircle", width: "12px" }) })) }))] })), (_j = parseFloat(maxBuy(bond).toFixed(0))) === null || _j === void 0 ? void 0 : _j.toLocaleString('en-US')] }))] })), _jsxs(Flex, __assign({ className: "modal-container text-container" }, { children: [_jsxs(Flex, __assign({ className: "text-container row" }, { children: [_jsx(Flex, __assign({ className: "row-container spend" }, { children: "You spend:" })), _jsxs(Flex, __assign({ className: "row-container spend-val" }, { children: [youSpend, " ", bond.principalTokenName, " = $ ", formatUSDNumber(youSpendUSD(bond))] }))] })), _jsxs(Flex, __assign({ className: "text-container row" }, { children: [_jsxs(Flex, __assign({ className: "row-container premium" }, { children: ["Premium:", _jsx(TooltipBubble, __assign({ body: _jsx(Flex, { children: TooltipText.Premium }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, -5%)" }, { children: _jsx(Flex, __assign({ className: "row-container premium-icon" }, { children: _jsx(Svg, { icon: "questionCircle", width: "12px" }) })) }))] })), _jsxs(Flex, __assign({ className: "row-container premium-val ".concat(getPremiumColor(bond)) }, { children: ["$ ", premium(bond)] }))] })), _jsxs(Flex, __assign({ className: "text-container row" }, { children: [_jsxs(Flex, __assign({ className: "row-container get" }, { children: ["You get (over ", vestingTime((_k = bond === null || bond === void 0 ? void 0 : bond.vestingTerm) !== null && _k !== void 0 ? _k : 0).days, " days):"] })), _jsxs(Flex, __assign({ className: "row-container get-val" }, { children: [youGet(bond), " ", bond === null || bond === void 0 ? void 0 : bond.showcaseTokenName, " = $ ", formatUSDNumber(youGetUSD(bond))] }))] }))] })), _jsxs(Flex, __assign({ className: "modal-container input-container" }, { children: [_jsx(Flex, __assign({ className: "input-container input" }, { children: _jsx(Input, { placeholder: "0.0", value: inputValue, pattern: "^[0-9]*[.,]?[0-9]*$", onChange: handleInputChange, onInput: function (v) {
|
|
196
|
+
return (_jsx(React.Fragment, { children: _jsx(Flex, __assign({ className: "modal modal-backdrop" }, { children: _jsxs(Flex, __assign({ className: "modal modal-content" }, { children: [isActive && account && (_jsxs("p", { children: ["Wallet Address: ", account] })), _jsx(Flex, __assign({ className: "modal modal-header" }, { children: _jsx(Flex, __assign({ className: "svg-close", onClick: onClose }, { children: _jsx(Svg, { icon: "close" }) })) })), _jsxs(Flex, __assign({ className: "modal-container table-container" }, { children: [_jsxs(Flex, __assign({ className: "modal-container title-container" }, { children: [_jsx(Flex, __assign({ className: "title-container bondicon" }, { children: _jsx(TokenImage, { symbol: (_a = bond.showcaseTokenName) !== null && _a !== void 0 ? _a : bond.payoutTokenName, size: 50 }) })), _jsx(Flex, __assign({ className: "title-container bondname" }, { children: bond === null || bond === void 0 ? void 0 : bond.showcaseTokenName })), _jsxs(Flex, __assign({ className: "title-container price-container" }, { children: [_jsxs(Flex, __assign({ className: "price-container price" }, { children: ["$", earnTokenPrice(bond)] })), _jsxs(Flex, __assign({ className: "price-container discounted" }, { children: ["$", discountEarnTokenPrice(bond)] }))] })), _jsx(Flex, __assign({ className: "title-container tokentags" }, { children: _jsx(ListTag, { text: (_b = bond === null || bond === void 0 ? void 0 : bond.tags) === null || _b === void 0 ? void 0 : _b[0], variant: ((_c = bond === null || bond === void 0 ? void 0 : bond.tags) === null || _c === void 0 ? void 0 : _c[0]) === 'Cex Fund' ? 'cex_fund' : 'liquidity' }) }))] })), _jsx(Flex, __assign({ className: "modal-container description-container" }, { children: bond === null || bond === void 0 ? void 0 : bond.shortDescription })), _jsxs(Flex, __assign({ className: "modal-container blocks-container" }, { children: [_jsxs(Flex, __assign({ className: "modal-block column-discount ".concat(getDiscountColor(bond === null || bond === void 0 ? void 0 : bond.discount)) }, { children: [_jsxs(Flex, __assign({ className: "block-header header" }, { children: ["Discount", _jsx(TooltipBubble, __assign({ body: _jsx(Flex, { children: TooltipText.Discount }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, -5%)" }, { children: _jsx(Flex, __assign({ className: "block-header icon" }, { children: _jsx(Svg, { icon: "questionCircle", width: "12px" }) })) }))] })), "".concat((_d = bond === null || bond === void 0 ? void 0 : bond.discount) === null || _d === void 0 ? void 0 : _d.toFixed(2), "%")] })), _jsxs(Flex, __assign({ className: "modal-block column-arr" }, { children: [_jsxs(Flex, __assign({ className: "block-header header" }, { children: ["ARR", _jsx(TooltipBubble, __assign({ body: _jsx(Flex, { children: TooltipText.ARR }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, -5%)" }, { children: _jsx(Flex, __assign({ className: "block-header icon" }, { children: _jsx(Svg, { icon: "questionCircle", width: "12px" }) })) }))] })), "".concat(((((_e = bond === null || bond === void 0 ? void 0 : bond.discount) !== null && _e !== void 0 ? _e : 0) * 365) / vestingTime((_f = bond === null || bond === void 0 ? void 0 : bond.vestingTerm) !== null && _f !== void 0 ? _f : 0).days).toFixed(2), "%")] })), _jsxs(Flex, __assign({ className: "modal-block column-term" }, { children: [_jsxs(Flex, __assign({ className: "block-header header" }, { children: ["Terms", _jsx(TooltipBubble, __assign({ body: _jsx(Flex, { children: TooltipText.Terms }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, -5%)" }, { children: _jsx(Flex, __assign({ className: "block-header icon" }, { children: _jsx(Svg, { icon: "questionCircle", width: "12px" }) })) }))] })), vestingTime((_g = bond === null || bond === void 0 ? void 0 : bond.vestingTerm) !== null && _g !== void 0 ? _g : 0).days ? "".concat(vestingTime((_h = bond === null || bond === void 0 ? void 0 : bond.vestingTerm) !== null && _h !== void 0 ? _h : 0).days, " D") : '-'] })), _jsxs(Flex, __assign({ className: "modal-block column-maxbuy" }, { children: [_jsxs(Flex, __assign({ className: "block-header header" }, { children: ["Max Buy", _jsx(TooltipBubble, __assign({ body: _jsx(Flex, { children: TooltipText.MaxBuy(bond.payoutTokenName) }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, -5%)" }, { children: _jsx(Flex, __assign({ className: "block-header icon" }, { children: _jsx(Svg, { icon: "questionCircle", width: "12px" }) })) }))] })), (_j = parseFloat(maxBuy(bond).toFixed(0))) === null || _j === void 0 ? void 0 : _j.toLocaleString('en-US')] }))] })), _jsxs(Flex, __assign({ className: "modal-container text-container" }, { children: [_jsxs(Flex, __assign({ className: "text-container row" }, { children: [_jsx(Flex, __assign({ className: "row-container spend" }, { children: "You spend:" })), _jsxs(Flex, __assign({ className: "row-container spend-val" }, { children: [youSpend(inputValue), " ", bond.principalTokenName, " = $ ", formatUSDNumber(youSpendUSD(bond, inputValue))] }))] })), _jsxs(Flex, __assign({ className: "text-container row" }, { children: [_jsxs(Flex, __assign({ className: "row-container premium" }, { children: ["Premium:", _jsx(TooltipBubble, __assign({ body: _jsx(Flex, { children: TooltipText.Premium }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, -5%)" }, { children: _jsx(Flex, __assign({ className: "row-container premium-icon" }, { children: _jsx(Svg, { icon: "questionCircle", width: "12px" }) })) }))] })), _jsxs(Flex, __assign({ className: "row-container premium-val ".concat(getPremiumColor(bond, inputValue)) }, { children: ["$ ", premium(bond, inputValue)] }))] })), _jsxs(Flex, __assign({ className: "text-container row" }, { children: [_jsxs(Flex, __assign({ className: "row-container get" }, { children: ["You get (over ", vestingTime((_k = bond === null || bond === void 0 ? void 0 : bond.vestingTerm) !== null && _k !== void 0 ? _k : 0).days, " days):"] })), _jsxs(Flex, __assign({ className: "row-container get-val" }, { children: [youGet(bond, inputValue), " ", bond === null || bond === void 0 ? void 0 : bond.showcaseTokenName, " = $ ", formatUSDNumber(youGetUSD(bond, inputValue))] }))] }))] })), _jsxs(Flex, __assign({ className: "modal-container input-container" }, { children: [_jsx(Flex, __assign({ className: "input-container input" }, { children: _jsx(Input, { placeholder: "0.0", value: inputValue, pattern: "^[0-9]*[.,]?[0-9]*$", onChange: handleInputChange, onInput: function (v) {
|
|
253
197
|
if (v.currentTarget.value.includes(',')) {
|
|
254
198
|
v.currentTarget.value = v.currentTarget.value.replace(/,/g, '.');
|
|
255
199
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BondsDataResponse } from "../../types/bonds";
|
|
2
|
+
export declare function formatNumber(input: string): string;
|
|
3
|
+
export declare function formatUSDNumber(input: string): string;
|
|
4
|
+
export declare const youSpend: (inputValue: string) => string;
|
|
5
|
+
export declare const youSpendUSD: (bond: BondsDataResponse, inputValue: string) => string;
|
|
6
|
+
export declare const youGet: (bond: BondsDataResponse, inputValue: string) => string;
|
|
7
|
+
export declare const youGetUSD: (bond: BondsDataResponse, inputValue: string) => string;
|
|
8
|
+
export declare const premium: (bond: BondsDataResponse, inputValue: string) => string;
|
|
9
|
+
export declare const getPremiumColor: (bond: BondsDataResponse, inputValue: string) => string;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import BigNumber from "bignumber.js";
|
|
2
|
+
import { formatNumberSI } from "../../utils/formatNumber";
|
|
3
|
+
export function formatNumber(input) {
|
|
4
|
+
var number = new BigNumber(input);
|
|
5
|
+
if (number.isNaN())
|
|
6
|
+
return '0';
|
|
7
|
+
return number.gt(1000000)
|
|
8
|
+
? formatNumberSI(number.toNumber())
|
|
9
|
+
: number.gt(1000)
|
|
10
|
+
? number.toNumber().toLocaleString(undefined, { maximumFractionDigits: 0 })
|
|
11
|
+
: number.gt(0.01)
|
|
12
|
+
? parseFloat(number.toFixed(2)).toLocaleString(undefined)
|
|
13
|
+
: parseFloat(number.toPrecision(5)).toLocaleString(undefined);
|
|
14
|
+
}
|
|
15
|
+
export function formatUSDNumber(input) {
|
|
16
|
+
var number = new BigNumber(input);
|
|
17
|
+
if (number.isNaN())
|
|
18
|
+
return '0';
|
|
19
|
+
// If the number is greater than 0 but less than 0.01
|
|
20
|
+
if (number.gt(0) && number.lt(0.01)) {
|
|
21
|
+
return '< 0.01';
|
|
22
|
+
}
|
|
23
|
+
// If the number is greater than 1k, round to no decimals.
|
|
24
|
+
if (number.gt(1000)) {
|
|
25
|
+
return number.toNumber().toLocaleString(undefined, { maximumFractionDigits: 0 });
|
|
26
|
+
}
|
|
27
|
+
// Note: Between 1k and 0.01 show 2 decimals
|
|
28
|
+
return parseFloat(number.toFixed(2)).toLocaleString(undefined);
|
|
29
|
+
}
|
|
30
|
+
export var youSpend = function (inputValue) { return formatNumber(inputValue); };
|
|
31
|
+
export var youSpendUSD = function (bond, inputValue) {
|
|
32
|
+
return (parseFloat(inputValue) * parseFloat(bond.principalTokenPrice)).toString();
|
|
33
|
+
};
|
|
34
|
+
export var youGet = function (bond, inputValue) {
|
|
35
|
+
var _a;
|
|
36
|
+
var bigValue = new BigNumber(inputValue).times(new BigNumber(10).pow(18));
|
|
37
|
+
var billValue = bigValue.div(new BigNumber((_a = bond.trueBillPrice) !== null && _a !== void 0 ? _a : 0));
|
|
38
|
+
return formatNumber(billValue.toString());
|
|
39
|
+
};
|
|
40
|
+
export var youGetUSD = function (bond, inputValue) {
|
|
41
|
+
var _a;
|
|
42
|
+
var bigValue = new BigNumber(inputValue).times(new BigNumber(10).pow(18));
|
|
43
|
+
var billValue = bigValue.div(new BigNumber((_a = bond.trueBillPrice) !== null && _a !== void 0 ? _a : 0));
|
|
44
|
+
return (billValue.toNumber() * parseFloat(bond.payoutTokenPrice)).toString();
|
|
45
|
+
};
|
|
46
|
+
export var premium = function (bond, inputValue) {
|
|
47
|
+
var premiumUSD = parseFloat(youGetUSD(bond, inputValue)) - parseFloat(youSpendUSD(bond, inputValue));
|
|
48
|
+
return formatUSDNumber(premiumUSD.toString());
|
|
49
|
+
};
|
|
50
|
+
export var getPremiumColor = function (bond, inputValue) {
|
|
51
|
+
var getPremium = premium(bond, inputValue);
|
|
52
|
+
return parseFloat(getPremium) < 0 ? 'premium-negative' : 'premium-positive';
|
|
53
|
+
};
|
|
@@ -56,20 +56,16 @@ import getTimePeriods from '../../utils/getTimePeriods';
|
|
|
56
56
|
import { defaultTheme } from '../../theme';
|
|
57
57
|
import '../../scss/YourBonds.scss';
|
|
58
58
|
import { BigNumber } from 'bignumber.js';
|
|
59
|
-
import { BillVersion } from '../../enum/apeswaplists';
|
|
60
59
|
import { Text, Button } from '../uikit-sdk';
|
|
61
60
|
import { MAINNET_CHAINS } from '../../config/constants/chains';
|
|
62
61
|
import TokenInfoAndName from '../TokenInfoAndName';
|
|
63
|
-
import { ACF_TO_ABOND } from '../../config/constants/addresses';
|
|
64
|
-
import multicall from '../../utils/multicall';
|
|
65
|
-
import billAbi from '../../config/abi/bond.json';
|
|
66
62
|
import { getBalanceNumber } from '../../utils/getBalanceNumber';
|
|
67
63
|
import { getFirstNonZeroDigits } from '../../utils/roundNumber';
|
|
68
64
|
import { formatNumberSI } from '../../utils/formatNumber';
|
|
69
65
|
import useCurrentTime from '../../hooks/useTimer';
|
|
70
66
|
import { getPendingVesting } from '../../hooks/usePendingVesting';
|
|
71
67
|
import axios from 'axios';
|
|
72
|
-
import {
|
|
68
|
+
import { fetchUserOwnedBillsDataAsync } from './fetchBillsUser';
|
|
73
69
|
var YourBonds = function (_a) {
|
|
74
70
|
var connectionString = _a.connectionString;
|
|
75
71
|
var _b = useWeb3React(), account = _b.account, isActive = _b.isActive;
|
|
@@ -120,145 +116,18 @@ var YourBonds = function (_a) {
|
|
|
120
116
|
setBondData(bonds);
|
|
121
117
|
});
|
|
122
118
|
}, []);
|
|
123
|
-
var _d = useState(
|
|
124
|
-
var _e = useState(
|
|
125
|
-
var _f = useState(
|
|
126
|
-
var rowClick = function (
|
|
127
|
-
|
|
119
|
+
var _d = useState([]), bondData = _d[0], setBondData = _d[1];
|
|
120
|
+
var _e = useState(false), isModalOpen = _e[0], setIsModalOpen = _e[1];
|
|
121
|
+
var _f = useState(null), selectedBill = _f[0], setSelectedBill = _f[1];
|
|
122
|
+
var rowClick = function (bill) {
|
|
123
|
+
setSelectedBill(bill);
|
|
128
124
|
setIsModalOpen(true);
|
|
129
|
-
navigate("/YourBonds/?bondAddress=".concat(
|
|
125
|
+
navigate("/YourBonds/?bondAddress=".concat(bill.address, "&bondChain=").concat(bill.bond.chainId), { replace: true });
|
|
130
126
|
};
|
|
131
|
-
var fetchUserOwnedBillsDataAsync = function (chainId, account) { return __awaiter(void 0, void 0, void 0, function () {
|
|
132
|
-
var bonds, userOwnedBills_1, mapUserOwnedBills_1, userOwnedBillsData_1, ownedBillsData, userBillNftData_1, combinedData, error_2;
|
|
133
|
-
return __generator(this, function (_a) {
|
|
134
|
-
switch (_a.label) {
|
|
135
|
-
case 0:
|
|
136
|
-
_a.trys.push([0, 3, , 4]);
|
|
137
|
-
bonds = bondData.filter(function (bond) {
|
|
138
|
-
return bond.billVersion !== BillVersion.FixedPrice &&
|
|
139
|
-
(bond === null || bond === void 0 ? void 0 : bond.chainId) === chainId &&
|
|
140
|
-
bond.type !== 'migration' &&
|
|
141
|
-
bond.billAddress.toLowerCase() !== ACF_TO_ABOND.toLowerCase();
|
|
142
|
-
});
|
|
143
|
-
return [4 /*yield*/, fetchUserOwnedBills(chainId, account, bonds)];
|
|
144
|
-
case 1:
|
|
145
|
-
userOwnedBills_1 = _a.sent();
|
|
146
|
-
mapUserOwnedBills_1 = bonds.map(function (bill) {
|
|
147
|
-
return userOwnedBills_1.filter(function (b) { return b.address.toLowerCase() === bill.billAddress.toLowerCase(); });
|
|
148
|
-
});
|
|
149
|
-
userOwnedBillsData_1 = bonds.map(function (bill, i) { return ({
|
|
150
|
-
index: bill.index,
|
|
151
|
-
userOwnedBills: mapUserOwnedBills_1[i],
|
|
152
|
-
}); });
|
|
153
|
-
ownedBillsData = mapUserOwnedBills_1.flatMap(function (bs) {
|
|
154
|
-
return bs.map(function (b) {
|
|
155
|
-
return { id: b.id, billNftAddress: b.billNftAddress, contractAddress: b.address };
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
return [4 /*yield*/, fetchUserOwnedBillNftData(ownedBillsData, chainId, bonds)
|
|
159
|
-
// Merge userBillNftData into userOwnedBillsData
|
|
160
|
-
];
|
|
161
|
-
case 2:
|
|
162
|
-
userBillNftData_1 = _a.sent();
|
|
163
|
-
combinedData = userOwnedBillsData_1.map(function (data) {
|
|
164
|
-
var enrichedUserBills = data.userOwnedBills.map(function (bill) {
|
|
165
|
-
var nftData = userBillNftData_1.find(function (nft) { return nft.id === parseInt(bill.id); });
|
|
166
|
-
return __assign(__assign({}, bill), { nftData: nftData ? nftData : undefined });
|
|
167
|
-
});
|
|
168
|
-
return __assign(__assign({}, data), { userOwnedBills: enrichedUserBills });
|
|
169
|
-
});
|
|
170
|
-
console.log("combinedData");
|
|
171
|
-
console.log(combinedData);
|
|
172
|
-
console.log("combinedData");
|
|
173
|
-
return [2 /*return*/, Promise.resolve(combinedData)];
|
|
174
|
-
case 3:
|
|
175
|
-
error_2 = _a.sent();
|
|
176
|
-
console.error('Error fetching user owned bills data:', error_2);
|
|
177
|
-
return [2 /*return*/, Promise.reject(error_2)];
|
|
178
|
-
case 4: return [2 /*return*/];
|
|
179
|
-
}
|
|
180
|
-
});
|
|
181
|
-
}); };
|
|
182
|
-
var fetchUserOwnedBills = function (chainId, account, bonds) { return __awaiter(void 0, void 0, void 0, function () {
|
|
183
|
-
var billIdCalls, billIds, billsPendingRewardCall, billDataCalls, billVersions, billData, pendingRewardsCall, result, i, billDataPos, data;
|
|
184
|
-
var _a, _b, _c, _d, _e;
|
|
185
|
-
return __generator(this, function (_f) {
|
|
186
|
-
switch (_f.label) {
|
|
187
|
-
case 0:
|
|
188
|
-
billIdCalls = bonds.map(function (b) { return ({
|
|
189
|
-
address: b.billAddress,
|
|
190
|
-
name: 'getBillIds',
|
|
191
|
-
params: [account],
|
|
192
|
-
}); });
|
|
193
|
-
return [4 /*yield*/, multicall(chainId, billAbi, billIdCalls, true, 15)];
|
|
194
|
-
case 1:
|
|
195
|
-
billIds = _f.sent();
|
|
196
|
-
billsPendingRewardCall = [];
|
|
197
|
-
billDataCalls = [];
|
|
198
|
-
billVersions = [];
|
|
199
|
-
billIds.forEach(function (idArray, index) {
|
|
200
|
-
return idArray[0].forEach(function (id) {
|
|
201
|
-
return id.gt(0) &&
|
|
202
|
-
(billDataCalls.push({
|
|
203
|
-
address: bonds[index].billAddress,
|
|
204
|
-
name: bonds[index].billVersion !== BillVersion.V1 ? 'getBillInfo' : 'billInfo',
|
|
205
|
-
params: [id],
|
|
206
|
-
bond: bonds[index]
|
|
207
|
-
}),
|
|
208
|
-
billDataCalls.push({ address: bonds[index].billAddress, name: 'billNft' }),
|
|
209
|
-
billsPendingRewardCall.push({
|
|
210
|
-
address: bonds[index].billAddress,
|
|
211
|
-
name: bonds[index].billVersion !== BillVersion.V1 ? 'claimablePayout' : 'pendingPayoutFor',
|
|
212
|
-
params: [id],
|
|
213
|
-
bond: bonds[index]
|
|
214
|
-
}),
|
|
215
|
-
billVersions.push(bonds[index].billVersion));
|
|
216
|
-
});
|
|
217
|
-
});
|
|
218
|
-
return [4 /*yield*/, multicall(chainId, billAbi, billDataCalls, true, 150)];
|
|
219
|
-
case 2:
|
|
220
|
-
billData = _f.sent();
|
|
221
|
-
return [4 /*yield*/, multicall(chainId, billAbi, billsPendingRewardCall)];
|
|
222
|
-
case 3:
|
|
223
|
-
pendingRewardsCall = _f.sent();
|
|
224
|
-
result = [];
|
|
225
|
-
for (i = 0; i < billsPendingRewardCall.length; i++) {
|
|
226
|
-
billDataPos = i === 0 ? 0 : i * 2;
|
|
227
|
-
data = billVersions[i] !== BillVersion.V1
|
|
228
|
-
? {
|
|
229
|
-
address: billsPendingRewardCall[i].address,
|
|
230
|
-
id: billsPendingRewardCall[i].params[0].toString(),
|
|
231
|
-
payout: new BigNumber((_a = billData[billDataPos][0]) === null || _a === void 0 ? void 0 : _a.payout.toString())
|
|
232
|
-
.minus((_b = billData[billDataPos][0]) === null || _b === void 0 ? void 0 : _b.payoutClaimed.toString())
|
|
233
|
-
.toString(),
|
|
234
|
-
billNftAddress: billData[billDataPos + 1][0].toString(),
|
|
235
|
-
vesting: (_c = billData[billDataPos][0]) === null || _c === void 0 ? void 0 : _c.vesting.toString(),
|
|
236
|
-
lastBlockTimestamp: (_d = billData[billDataPos][0]) === null || _d === void 0 ? void 0 : _d.lastClaimTimestamp.toString(),
|
|
237
|
-
truePricePaid: (_e = billData[billDataPos][0]) === null || _e === void 0 ? void 0 : _e.truePricePaid.toString(),
|
|
238
|
-
pendingRewards: pendingRewardsCall[i][0].toString(),
|
|
239
|
-
bond: billsPendingRewardCall[i].bond
|
|
240
|
-
}
|
|
241
|
-
: {
|
|
242
|
-
address: billsPendingRewardCall[i].address,
|
|
243
|
-
id: billsPendingRewardCall[i].params[0].toString(),
|
|
244
|
-
payout: billData[billDataPos][0].toString(),
|
|
245
|
-
billNftAddress: billData[billDataPos + 1][0].toString(),
|
|
246
|
-
vesting: billData[billDataPos][1].toString(),
|
|
247
|
-
lastBlockTimestamp: billData[billDataPos][2].toString(),
|
|
248
|
-
truePricePaid: billData[billDataPos][3].toString(),
|
|
249
|
-
pendingRewards: pendingRewardsCall[i][0].toString(),
|
|
250
|
-
bond: billsPendingRewardCall[i].bond
|
|
251
|
-
};
|
|
252
|
-
result.push(data);
|
|
253
|
-
}
|
|
254
|
-
return [2 /*return*/, result];
|
|
255
|
-
}
|
|
256
|
-
});
|
|
257
|
-
}); };
|
|
258
127
|
var _g = useState([]), userOwnedBillsData = _g[0], setUserOwnedBillsData = _g[1];
|
|
259
128
|
useEffect(function () {
|
|
260
129
|
var fetchData = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
261
|
-
var results,
|
|
130
|
+
var results, error_2;
|
|
262
131
|
return __generator(this, function (_a) {
|
|
263
132
|
switch (_a.label) {
|
|
264
133
|
case 0:
|
|
@@ -266,14 +135,14 @@ var YourBonds = function (_a) {
|
|
|
266
135
|
_a.label = 1;
|
|
267
136
|
case 1:
|
|
268
137
|
_a.trys.push([1, 3, , 4]);
|
|
269
|
-
return [4 /*yield*/, Promise.all(MAINNET_CHAINS.map(function (chain) { return fetchUserOwnedBillsDataAsync(chain, account); }))];
|
|
138
|
+
return [4 /*yield*/, Promise.all(MAINNET_CHAINS.map(function (chain) { return fetchUserOwnedBillsDataAsync(chain, account, bondData); }))];
|
|
270
139
|
case 2:
|
|
271
140
|
results = _a.sent();
|
|
272
141
|
setUserOwnedBillsData(results);
|
|
273
142
|
return [3 /*break*/, 4];
|
|
274
143
|
case 3:
|
|
275
|
-
|
|
276
|
-
console.error('Error fetching user owned bills data:',
|
|
144
|
+
error_2 = _a.sent();
|
|
145
|
+
console.error('Error fetching user owned bills data:', error_2);
|
|
277
146
|
return [3 /*break*/, 4];
|
|
278
147
|
case 4: return [2 /*return*/];
|
|
279
148
|
}
|
|
@@ -314,7 +183,7 @@ var YourBonds = function (_a) {
|
|
|
314
183
|
});
|
|
315
184
|
return sortedBills.map(function (bill) {
|
|
316
185
|
var _a, _b;
|
|
317
|
-
return (_jsxs(Flex, __assign({ className: "container bondrow-container", onClick: function () { return rowClick(bill
|
|
186
|
+
return (_jsxs(Flex, __assign({ className: "container bondrow-container", onClick: function () { return rowClick(bill); } }, { children: [_jsx(Flex, __assign({ className: "column column-tokens" }, { children: _jsx(Flex, __assign({ className: "column column-tokeninfoname" }, { children: _jsx(TokenInfoAndName, { bill: bill.bond, vestEnds: "Ends in ".concat(getPendingVesting(bill.lastBlockTimestamp, bill.vesting)) }) })) })), _jsxs(Flex, __assign({ className: "column column-bondinfo" }, { children: [_jsxs(Flex, __assign({ className: "column column-claimable" }, { children: [formatNumberSI(parseFloat(claimable(bill).toFixed(3)), 0), "($".concat((claimable(bill) * ((_a = parseFloat(earnTokenPrice(bill.bond))) !== null && _a !== void 0 ? _a : 0)).toFixed(2), ")")] })), _jsxs(Flex, __assign({ className: "column column-pending" }, { children: [formatNumberSI(parseFloat(totalPending(bill).toFixed(0)), 0), "($".concat((totalPending(bill) * ((_b = parseFloat(earnTokenPrice(bill.bond))) !== null && _b !== void 0 ? _b : 0)).toFixed(2), ")")] })), _jsx(Flex, __assign({ className: "column column-term" }, { children: "".concat(vestingTimeRemaining(bill).days, "d, ").concat(vestingTimeRemaining(bill).hours, "h, ").concat(vestingTimeRemaining(bill).minutes, "m") })), _jsx(Flex, __assign({ className: "column column-claimall" }, { children: _jsx(Flex, __assign({ className: "column-claimall button" }, { children: _jsx(Button, __assign({ disabled: !account, sx: {
|
|
318
187
|
height: ['36px', '36px', '36px', '26px'],
|
|
319
188
|
lineHeight: '12px',
|
|
320
189
|
fontSize: '14px',
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { BondsDataResponse, CleanedBondsState, UserBill } from '../../types/bonds';
|
|
2
1
|
import { ChainId } from '../../enum/apeswaplists';
|
|
2
|
+
import { UserBill, UserOwnedBillsData } from '../../types/yourbonds';
|
|
3
|
+
import { BondsDataResponse } from '../../types/bonds';
|
|
3
4
|
/**
|
|
4
5
|
* Fetches user-owned bill NFT data for a given set of owned bills data, chain ID, and bills.
|
|
5
6
|
* @param ownedBillsData An array of objects containing the ID, bill NFT address, and contract address of the owned bills.
|
|
@@ -12,4 +13,5 @@ export declare const fetchUserOwnedBillNftData: (ownedBillsData: {
|
|
|
12
13
|
billNftAddress: string;
|
|
13
14
|
contractAddress: string;
|
|
14
15
|
}[], chainId: ChainId, bills: BondsDataResponse[]) => Promise<any[]>;
|
|
15
|
-
export declare const
|
|
16
|
+
export declare const fetchUserOwnedBillsDataAsync: (chainId: ChainId, account: string, bondData: BondsDataResponse[]) => Promise<UserOwnedBillsData[]>;
|
|
17
|
+
export declare const fetchUserOwnedBills: (chainId: ChainId, account: string, bonds: BondsDataResponse[]) => Promise<UserBill[]>;
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
1
12
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
13
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
14
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -39,6 +50,7 @@ import BigNumber from 'bignumber.js';
|
|
|
39
50
|
import { getBillNftBatchData } from './getBillNftData';
|
|
40
51
|
import multicall from '../../utils/multicall';
|
|
41
52
|
import { BillVersion } from '../../enum/apeswaplists';
|
|
53
|
+
import { ACF_TO_ABOND } from '../../config/constants/addresses';
|
|
42
54
|
/**
|
|
43
55
|
* Fetches user-owned bill NFT data for a given set of owned bills data, chain ID, and bills.
|
|
44
56
|
* @param ownedBillsData An array of objects containing the ID, bill NFT address, and contract address of the owned bills.
|
|
@@ -97,14 +109,67 @@ export var fetchUserOwnedBillNftData = function (ownedBillsData, chainId, bills)
|
|
|
97
109
|
}
|
|
98
110
|
});
|
|
99
111
|
}); };
|
|
100
|
-
|
|
112
|
+
// MODIFIED FUNCTION FROM FRONTEND SPECIFICALLY FOR THE SDK
|
|
113
|
+
export var fetchUserOwnedBillsDataAsync = function (chainId, account, bondData) { return __awaiter(void 0, void 0, void 0, function () {
|
|
114
|
+
var bonds, userOwnedBills_1, mapUserOwnedBills_1, userOwnedBillsData, ownedBillsData, userBillNftData_1, combinedData, error_1;
|
|
115
|
+
return __generator(this, function (_a) {
|
|
116
|
+
switch (_a.label) {
|
|
117
|
+
case 0:
|
|
118
|
+
_a.trys.push([0, 3, , 4]);
|
|
119
|
+
bonds = bondData.filter(function (bond) {
|
|
120
|
+
return bond.billVersion !== BillVersion.FixedPrice &&
|
|
121
|
+
(bond === null || bond === void 0 ? void 0 : bond.chainId) === chainId &&
|
|
122
|
+
bond.type !== 'migration' &&
|
|
123
|
+
bond.billAddress.toLowerCase() !== ACF_TO_ABOND.toLowerCase();
|
|
124
|
+
});
|
|
125
|
+
return [4 /*yield*/, fetchUserOwnedBills(chainId, account, bonds)];
|
|
126
|
+
case 1:
|
|
127
|
+
userOwnedBills_1 = _a.sent();
|
|
128
|
+
mapUserOwnedBills_1 = bonds.map(function (bill) {
|
|
129
|
+
return userOwnedBills_1.filter(function (b) { return b.address.toLowerCase() === bill.billAddress.toLowerCase(); });
|
|
130
|
+
});
|
|
131
|
+
userOwnedBillsData = bonds.map(function (bill, i) { return ({
|
|
132
|
+
index: bill.index,
|
|
133
|
+
userOwnedBills: mapUserOwnedBills_1[i],
|
|
134
|
+
}); });
|
|
135
|
+
ownedBillsData = mapUserOwnedBills_1.flatMap(function (bs) {
|
|
136
|
+
return bs.map(function (b) {
|
|
137
|
+
return { id: b.id, billNftAddress: b.billNftAddress, contractAddress: b.address };
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
return [4 /*yield*/, fetchUserOwnedBillNftData(ownedBillsData, chainId, bonds)
|
|
141
|
+
// Merge userBillNftData into userOwnedBillsData
|
|
142
|
+
];
|
|
143
|
+
case 2:
|
|
144
|
+
userBillNftData_1 = _a.sent();
|
|
145
|
+
combinedData = userOwnedBillsData.map(function (data) {
|
|
146
|
+
var enrichedUserBills = data.userOwnedBills.map(function (bill) {
|
|
147
|
+
var nftData = userBillNftData_1.find(function (nft) { return nft.id === parseInt(bill.id); });
|
|
148
|
+
return __assign(__assign({}, bill), { nftData: nftData ? nftData : undefined });
|
|
149
|
+
});
|
|
150
|
+
return __assign(__assign({}, data), { userOwnedBills: enrichedUserBills });
|
|
151
|
+
});
|
|
152
|
+
console.log("combinedData");
|
|
153
|
+
console.log(combinedData);
|
|
154
|
+
console.log("combinedData");
|
|
155
|
+
return [2 /*return*/, Promise.resolve(combinedData)];
|
|
156
|
+
case 3:
|
|
157
|
+
error_1 = _a.sent();
|
|
158
|
+
console.error('Error fetching user owned bills data:', error_1);
|
|
159
|
+
return [2 /*return*/, Promise.reject(error_1)];
|
|
160
|
+
case 4: return [2 /*return*/];
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
}); };
|
|
164
|
+
// MODIFIED FUNCTION FROM FRONTEND SPECIFICALLY FOR THE SDK
|
|
165
|
+
export var fetchUserOwnedBills = function (chainId, account, bonds) { return __awaiter(void 0, void 0, void 0, function () {
|
|
101
166
|
var billIdCalls, billIds, billsPendingRewardCall, billDataCalls, billVersions, billData, pendingRewardsCall, result, i, billDataPos, data;
|
|
102
167
|
var _a, _b, _c, _d, _e;
|
|
103
168
|
return __generator(this, function (_f) {
|
|
104
169
|
switch (_f.label) {
|
|
105
170
|
case 0:
|
|
106
|
-
billIdCalls =
|
|
107
|
-
address: b.
|
|
171
|
+
billIdCalls = bonds.map(function (b) { return ({
|
|
172
|
+
address: b.billAddress,
|
|
108
173
|
name: 'getBillIds',
|
|
109
174
|
params: [account],
|
|
110
175
|
}); });
|
|
@@ -118,17 +183,19 @@ export var fetchUserOwnedBills = function (chainId, account, bills) { return __a
|
|
|
118
183
|
return idArray[0].forEach(function (id) {
|
|
119
184
|
return id.gt(0) &&
|
|
120
185
|
(billDataCalls.push({
|
|
121
|
-
address:
|
|
122
|
-
name:
|
|
186
|
+
address: bonds[index].billAddress,
|
|
187
|
+
name: bonds[index].billVersion !== BillVersion.V1 ? 'getBillInfo' : 'billInfo',
|
|
123
188
|
params: [id],
|
|
189
|
+
bond: bonds[index]
|
|
124
190
|
}),
|
|
125
|
-
billDataCalls.push({ address:
|
|
191
|
+
billDataCalls.push({ address: bonds[index].billAddress, name: 'billNft' }),
|
|
126
192
|
billsPendingRewardCall.push({
|
|
127
|
-
address:
|
|
128
|
-
name:
|
|
193
|
+
address: bonds[index].billAddress,
|
|
194
|
+
name: bonds[index].billVersion !== BillVersion.V1 ? 'claimablePayout' : 'pendingPayoutFor',
|
|
129
195
|
params: [id],
|
|
196
|
+
bond: bonds[index]
|
|
130
197
|
}),
|
|
131
|
-
billVersions.push(
|
|
198
|
+
billVersions.push(bonds[index].billVersion));
|
|
132
199
|
});
|
|
133
200
|
});
|
|
134
201
|
return [4 /*yield*/, multicall(chainId, billAbi, billDataCalls, true, 150)];
|
|
@@ -152,6 +219,7 @@ export var fetchUserOwnedBills = function (chainId, account, bills) { return __a
|
|
|
152
219
|
lastBlockTimestamp: (_d = billData[billDataPos][0]) === null || _d === void 0 ? void 0 : _d.lastClaimTimestamp.toString(),
|
|
153
220
|
truePricePaid: (_e = billData[billDataPos][0]) === null || _e === void 0 ? void 0 : _e.truePricePaid.toString(),
|
|
154
221
|
pendingRewards: pendingRewardsCall[i][0].toString(),
|
|
222
|
+
bond: billsPendingRewardCall[i].bond
|
|
155
223
|
}
|
|
156
224
|
: {
|
|
157
225
|
address: billsPendingRewardCall[i].address,
|
|
@@ -162,6 +230,7 @@ export var fetchUserOwnedBills = function (chainId, account, bills) { return __a
|
|
|
162
230
|
lastBlockTimestamp: billData[billDataPos][2].toString(),
|
|
163
231
|
truePricePaid: billData[billDataPos][3].toString(),
|
|
164
232
|
pendingRewards: pendingRewardsCall[i][0].toString(),
|
|
233
|
+
bond: billsPendingRewardCall[i].bond
|
|
165
234
|
};
|
|
166
235
|
result.push(data);
|
|
167
236
|
}
|
|
@@ -57,16 +57,12 @@ import { BigNumber } from 'bignumber.js';
|
|
|
57
57
|
import { getFirstNonZeroDigits } from '../../utils/roundNumber';
|
|
58
58
|
import { TooltipBubble, Button, Svg, ListTag } from '../uikit-sdk';
|
|
59
59
|
import { UserBillTooltipText } from '../../enum/tooltips';
|
|
60
|
-
import billAbi from '../../config/abi/bond.json';
|
|
61
60
|
import TokenImage from '../uikit-sdk/TokenImage';
|
|
62
61
|
import { getBalanceNumber } from '../../utils/getBalanceNumber';
|
|
63
|
-
import multicall from '../../utils/multicall';
|
|
64
|
-
import { BillVersion } from '../../enum/apeswaplists';
|
|
65
|
-
import { ACF_TO_ABOND } from '../../config/constants/addresses';
|
|
66
62
|
import { MAINNET_CHAINS } from '../../config/constants/chains';
|
|
67
63
|
import { getPendingVesting } from '../../hooks/usePendingVesting';
|
|
68
64
|
import { formatNumberSI } from '../../utils/formatNumber';
|
|
69
|
-
import {
|
|
65
|
+
import { fetchUserOwnedBillsDataAsync } from '../YourBonds/fetchBillsUser';
|
|
70
66
|
var YourBondsModal = function (_a) {
|
|
71
67
|
var isOpen = _a.isOpen, onClose = _a.onClose, bondAddress = _a.bondAddress;
|
|
72
68
|
if (!isOpen)
|
|
@@ -82,136 +78,9 @@ var YourBondsModal = function (_a) {
|
|
|
82
78
|
});
|
|
83
79
|
}, [bondAddress]);
|
|
84
80
|
var _d = useState([]), userOwnedBillsData = _d[0], setUserOwnedBillsData = _d[1];
|
|
85
|
-
var fetchUserOwnedBillsDataAsync = function (chainId, account) { return __awaiter(void 0, void 0, void 0, function () {
|
|
86
|
-
var bonds, userOwnedBills_1, mapUserOwnedBills_1, userOwnedBillsData_1, ownedBillsData, userBillNftData_1, combinedData, error_1;
|
|
87
|
-
return __generator(this, function (_a) {
|
|
88
|
-
switch (_a.label) {
|
|
89
|
-
case 0:
|
|
90
|
-
_a.trys.push([0, 3, , 4]);
|
|
91
|
-
bonds = bondData.filter(function (bond) {
|
|
92
|
-
return bond.billVersion !== BillVersion.FixedPrice &&
|
|
93
|
-
(bond === null || bond === void 0 ? void 0 : bond.chainId) === chainId &&
|
|
94
|
-
bond.type !== 'migration' &&
|
|
95
|
-
bond.billAddress.toLowerCase() !== ACF_TO_ABOND.toLowerCase();
|
|
96
|
-
});
|
|
97
|
-
return [4 /*yield*/, fetchUserOwnedBills(chainId, account, bonds)];
|
|
98
|
-
case 1:
|
|
99
|
-
userOwnedBills_1 = _a.sent();
|
|
100
|
-
mapUserOwnedBills_1 = bonds.map(function (bill) {
|
|
101
|
-
return userOwnedBills_1.filter(function (b) { return b.address.toLowerCase() === bill.billAddress.toLowerCase(); });
|
|
102
|
-
});
|
|
103
|
-
userOwnedBillsData_1 = bonds.map(function (bill, i) { return ({
|
|
104
|
-
index: bill.index,
|
|
105
|
-
userOwnedBills: mapUserOwnedBills_1[i],
|
|
106
|
-
}); });
|
|
107
|
-
ownedBillsData = mapUserOwnedBills_1.flatMap(function (bs) {
|
|
108
|
-
return bs.map(function (b) {
|
|
109
|
-
return { id: b.id, billNftAddress: b.billNftAddress, contractAddress: b.address };
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
return [4 /*yield*/, fetchUserOwnedBillNftData(ownedBillsData, chainId, bonds)
|
|
113
|
-
// Merge userBillNftData into userOwnedBillsData
|
|
114
|
-
];
|
|
115
|
-
case 2:
|
|
116
|
-
userBillNftData_1 = _a.sent();
|
|
117
|
-
combinedData = userOwnedBillsData_1.map(function (data) {
|
|
118
|
-
var enrichedUserBills = data.userOwnedBills.map(function (bill) {
|
|
119
|
-
var nftData = userBillNftData_1.find(function (nft) { return nft.id === parseInt(bill.id); });
|
|
120
|
-
return __assign(__assign({}, bill), { nftData: nftData ? nftData : undefined });
|
|
121
|
-
});
|
|
122
|
-
return __assign(__assign({}, data), { userOwnedBills: enrichedUserBills });
|
|
123
|
-
});
|
|
124
|
-
console.log("combinedData");
|
|
125
|
-
console.log(combinedData);
|
|
126
|
-
console.log("combinedData");
|
|
127
|
-
return [2 /*return*/, Promise.resolve(combinedData)];
|
|
128
|
-
case 3:
|
|
129
|
-
error_1 = _a.sent();
|
|
130
|
-
console.error('Error fetching user owned bills data:', error_1);
|
|
131
|
-
return [2 /*return*/, Promise.reject(error_1)];
|
|
132
|
-
case 4: return [2 /*return*/];
|
|
133
|
-
}
|
|
134
|
-
});
|
|
135
|
-
}); };
|
|
136
|
-
var fetchUserOwnedBills = function (chainId, account, bonds) { return __awaiter(void 0, void 0, void 0, function () {
|
|
137
|
-
var billIdCalls, billIds, billsPendingRewardCall, billDataCalls, billVersions, billData, pendingRewardsCall, result, i, billDataPos, data;
|
|
138
|
-
var _a, _b, _c, _d, _e;
|
|
139
|
-
return __generator(this, function (_f) {
|
|
140
|
-
switch (_f.label) {
|
|
141
|
-
case 0:
|
|
142
|
-
billIdCalls = bonds.map(function (b) { return ({
|
|
143
|
-
address: b.billAddress,
|
|
144
|
-
name: 'getBillIds',
|
|
145
|
-
params: [account],
|
|
146
|
-
}); });
|
|
147
|
-
return [4 /*yield*/, multicall(chainId, billAbi, billIdCalls, true, 15)];
|
|
148
|
-
case 1:
|
|
149
|
-
billIds = _f.sent();
|
|
150
|
-
billsPendingRewardCall = [];
|
|
151
|
-
billDataCalls = [];
|
|
152
|
-
billVersions = [];
|
|
153
|
-
billIds.forEach(function (idArray, index) {
|
|
154
|
-
return idArray[0].forEach(function (id) {
|
|
155
|
-
return id.gt(0) &&
|
|
156
|
-
(billDataCalls.push({
|
|
157
|
-
address: bonds[index].billAddress,
|
|
158
|
-
name: bonds[index].billVersion !== BillVersion.V1 ? 'getBillInfo' : 'billInfo',
|
|
159
|
-
params: [id],
|
|
160
|
-
bond: bonds[index]
|
|
161
|
-
}),
|
|
162
|
-
billDataCalls.push({ address: bonds[index].billAddress, name: 'billNft' }),
|
|
163
|
-
billsPendingRewardCall.push({
|
|
164
|
-
address: bonds[index].billAddress,
|
|
165
|
-
name: bonds[index].billVersion !== BillVersion.V1 ? 'claimablePayout' : 'pendingPayoutFor',
|
|
166
|
-
params: [id],
|
|
167
|
-
bond: bonds[index]
|
|
168
|
-
}),
|
|
169
|
-
billVersions.push(bonds[index].billVersion));
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
return [4 /*yield*/, multicall(chainId, billAbi, billDataCalls, true, 150)];
|
|
173
|
-
case 2:
|
|
174
|
-
billData = _f.sent();
|
|
175
|
-
return [4 /*yield*/, multicall(chainId, billAbi, billsPendingRewardCall)];
|
|
176
|
-
case 3:
|
|
177
|
-
pendingRewardsCall = _f.sent();
|
|
178
|
-
result = [];
|
|
179
|
-
for (i = 0; i < billsPendingRewardCall.length; i++) {
|
|
180
|
-
billDataPos = i === 0 ? 0 : i * 2;
|
|
181
|
-
data = billVersions[i] !== BillVersion.V1
|
|
182
|
-
? {
|
|
183
|
-
address: billsPendingRewardCall[i].address,
|
|
184
|
-
id: billsPendingRewardCall[i].params[0].toString(),
|
|
185
|
-
payout: new BigNumber((_a = billData[billDataPos][0]) === null || _a === void 0 ? void 0 : _a.payout.toString())
|
|
186
|
-
.minus((_b = billData[billDataPos][0]) === null || _b === void 0 ? void 0 : _b.payoutClaimed.toString())
|
|
187
|
-
.toString(),
|
|
188
|
-
billNftAddress: billData[billDataPos + 1][0].toString(),
|
|
189
|
-
vesting: (_c = billData[billDataPos][0]) === null || _c === void 0 ? void 0 : _c.vesting.toString(),
|
|
190
|
-
lastBlockTimestamp: (_d = billData[billDataPos][0]) === null || _d === void 0 ? void 0 : _d.lastClaimTimestamp.toString(),
|
|
191
|
-
truePricePaid: (_e = billData[billDataPos][0]) === null || _e === void 0 ? void 0 : _e.truePricePaid.toString(),
|
|
192
|
-
pendingRewards: pendingRewardsCall[i][0].toString(),
|
|
193
|
-
bond: billsPendingRewardCall[i].bond
|
|
194
|
-
}
|
|
195
|
-
: {
|
|
196
|
-
address: billsPendingRewardCall[i].address,
|
|
197
|
-
id: billsPendingRewardCall[i].params[0].toString(),
|
|
198
|
-
payout: billData[billDataPos][0].toString(),
|
|
199
|
-
billNftAddress: billData[billDataPos + 1][0].toString(),
|
|
200
|
-
vesting: billData[billDataPos][1].toString(),
|
|
201
|
-
lastBlockTimestamp: billData[billDataPos][2].toString(),
|
|
202
|
-
truePricePaid: billData[billDataPos][3].toString(),
|
|
203
|
-
pendingRewards: pendingRewardsCall[i][0].toString(),
|
|
204
|
-
bond: billsPendingRewardCall[i].bond
|
|
205
|
-
};
|
|
206
|
-
result.push(data);
|
|
207
|
-
}
|
|
208
|
-
return [2 /*return*/, result];
|
|
209
|
-
}
|
|
210
|
-
});
|
|
211
|
-
}); };
|
|
212
81
|
useEffect(function () {
|
|
213
82
|
var fetchData = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
214
|
-
var results,
|
|
83
|
+
var results, error_1;
|
|
215
84
|
return __generator(this, function (_a) {
|
|
216
85
|
switch (_a.label) {
|
|
217
86
|
case 0:
|
|
@@ -219,14 +88,14 @@ var YourBondsModal = function (_a) {
|
|
|
219
88
|
_a.label = 1;
|
|
220
89
|
case 1:
|
|
221
90
|
_a.trys.push([1, 3, , 4]);
|
|
222
|
-
return [4 /*yield*/, Promise.all(MAINNET_CHAINS.map(function (chain) { return fetchUserOwnedBillsDataAsync(chain, account); }))];
|
|
91
|
+
return [4 /*yield*/, Promise.all(MAINNET_CHAINS.map(function (chain) { return fetchUserOwnedBillsDataAsync(chain, account, bondData); }))];
|
|
223
92
|
case 2:
|
|
224
93
|
results = _a.sent();
|
|
225
94
|
setUserOwnedBillsData(results);
|
|
226
95
|
return [3 /*break*/, 4];
|
|
227
96
|
case 3:
|
|
228
|
-
|
|
229
|
-
console.error('Error fetching user owned bills data:',
|
|
97
|
+
error_1 = _a.sent();
|
|
98
|
+
console.error('Error fetching user owned bills data:', error_1);
|
|
230
99
|
return [3 /*break*/, 4];
|
|
231
100
|
case 4: return [2 /*return*/];
|
|
232
101
|
}
|
|
@@ -251,7 +120,7 @@ var YourBondsModal = function (_a) {
|
|
|
251
120
|
var userBill = data.userOwnedBills.find(function (bill) { return bill.bond.billAddress.toLowerCase() === (bondAddress === null || bondAddress === void 0 ? void 0 : bondAddress.toLowerCase()); });
|
|
252
121
|
console.log("USER BILL LOG");
|
|
253
122
|
console.log(userBill);
|
|
254
|
-
return userBill ? (_jsx(React.Fragment, { children: _jsx(Flex, __assign({ className: "yourbondsmodal backdrop" }, { children: _jsxs(Flex, __assign({ className: "yourbondsmodal content" }, { children: [_jsx(Flex, __assign({ className: "yourbondsmodal header" }, { children: _jsx(Flex, __assign({ className: "svg-close", onClick: onClose }, { children: _jsx(Svg, { icon: "close" }) })) })), _jsxs(Flex, __assign({ className: "yourbondsmodal table-container" }, { children: [_jsx(Flex, __assign({ className: "yourbondsmodal bondimage" }, { children: _jsx("img", { src: (_a = userBill.nftData) === null || _a === void 0 ? void 0 : _a.data.image }) })), _jsxs(Flex, __assign({ className: "yourbondsmodal yourbondinfo" }, { children: [_jsxs(Flex, __assign({ className: "yourbondinfo title-container" }, { children: [_jsx(Flex, __assign({ className: "title-container bondicon" }, { children: _jsx(TokenImage, { symbol: (_b = userBill.bond.showcaseTokenName) !== null && _b !== void 0 ? _b : userBill.bond.payoutTokenName, size: 40 }) })), _jsx(Flex, __assign({ className: "title-container bondname" }, { children: (_c = userBill.bond) === null || _c === void 0 ? void 0 : _c.showcaseTokenName })), _jsx(Flex, __assign({ className: "title-container tokentags" }, { children: _jsx(ListTag, { text: (_e = (_d = userBill.bond) === null || _d === void 0 ? void 0 : _d.tags) === null || _e === void 0 ? void 0 : _e[0], variant: ((_g = (_f = userBill.bond) === null || _f === void 0 ? void 0 : _f.tags) === null || _g === void 0 ? void 0 : _g[0]) === 'Cex Fund' ? 'cex_fund' : 'liquidity' }) }))] })), _jsxs(Flex, __assign({ className: "yourbondinfo blocks-container" }, { children: [_jsx(Flex, __assign({ className: "yourbondinfo-block row-traits" }, { children: _jsx(Flex, __assign({ className: "yourbondinfo-block header" }, { children: "Traits" })) })), _jsxs(Flex, __assign({ className: "yourbondinfo-block row-vested" }, { children: [_jsxs(Flex, __assign({ className: "yourbondinfo-block header" }, { children: ["Fully Vested", _jsx(TooltipBubble, __assign({ body: _jsx(Flex, { children: UserBillTooltipText.FullyVested }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, -5%)" }, { children: _jsx(Flex, __assign({ className: "block-header icon" }, { children: _jsx(Svg, { icon: "questionCircle", width: "12px" }) })) }))] })), _jsxs(Flex, __assign({ className: "yourbondinfo-block info" }, { children: [_jsx(Flex, { className: "block-info icon" }), _jsx(Flex, __assign({ className: "block-info text" }, { children: getPendingVesting(userBill.lastBlockTimestamp, userBill.vesting) }))] }))] })), _jsxs(Flex, __assign({ className: "yourbondinfo-block row-pending" }, { children: [_jsxs(Flex, __assign({ className: "yourbondinfo-block header" }, { children: ["Pending", _jsx(TooltipBubble, __assign({ body: _jsx(Flex, { children: UserBillTooltipText.Pending }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, -5%)" }, { children: _jsx(Flex, __assign({ className: "block-header icon" }, { children: _jsx(Svg, { icon: "questionCircle", width: "12px" }) })) }))] })), _jsxs(Flex, __assign({ className: "yourbondinfo-block info" }, { children: [_jsx(Flex, __assign({ className: "block-info icon" }, { children: _jsx(TokenImage, { symbol: (_h = userBill.bond.showcaseTokenName) !== null && _h !== void 0 ? _h : userBill.bond.payoutTokenName, size: 25 }) })), _jsxs(Flex, __assign({ className: "block-info text" }, { children: [formatNumberSI(parseFloat(totalPending(userBill).toFixed(4)), 4), "($".concat((totalPending(userBill) * ((_j = parseFloat(earnTokenPrice(userBill.bond))) !== null && _j !== void 0 ? _j : 0)).toFixed(2), ")")] }))] }))] })), _jsxs(Flex, __assign({ className: "yourbondinfo-block row-claimable" }, { children: [_jsxs(Flex, __assign({ className: "yourbondinfo-block header" }, { children: ["Claimable", _jsx(TooltipBubble, __assign({ body: _jsx(Flex, { children: UserBillTooltipText.Claimable }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, -5%)" }, { children: _jsx(Flex, __assign({ className: "block-header icon" }, { children: _jsx(Svg, { icon: "questionCircle", width: "12px" }) })) }))] })), _jsxs(Flex, __assign({ className: "yourbondinfo-block info" }, { children: [_jsx(Flex, __assign({ className: "block-info icon" }, { children: _jsx(TokenImage, { symbol: (_k = userBill.bond.showcaseTokenName) !== null && _k !== void 0 ? _k : userBill.bond.payoutTokenName, size: 25 }) })), _jsxs(Flex, __assign({ className: "block-info text" }, { children: [formatNumberSI(parseFloat(claimable(userBill).toFixed(4)), 4), "($".concat((claimable(userBill) * ((_l = parseFloat(earnTokenPrice(userBill.bond))) !== null && _l !== void 0 ? _l : 0)).toFixed(2), ")")] }))] }))] }))] })), _jsxs(Flex, __assign({ className: "yourbondinfo button-container" }, { children: [_jsx(Flex, __assign({ className: "button-container claim" }, { children: _jsx(Button, { children: "CLAIM" }) })), _jsx(Flex, __assign({ className: "button-container transfer" }, { children: _jsx(Button, { children: "TRANSFER" }) }))] }))] }))] }))] })) })) }, userBill.bond.billAddress)) : null;
|
|
123
|
+
return userBill ? (_jsx(React.Fragment, { children: _jsx(Flex, __assign({ className: "yourbondsmodal backdrop" }, { children: _jsxs(Flex, __assign({ className: "yourbondsmodal content" }, { children: [_jsx(Flex, __assign({ className: "yourbondsmodal header" }, { children: _jsx(Flex, __assign({ className: "svg-close", onClick: onClose }, { children: _jsx(Svg, { icon: "close" }) })) })), _jsxs(Flex, __assign({ className: "yourbondsmodal table-container" }, { children: [_jsx(Flex, __assign({ className: "yourbondsmodal bondimage" }, { children: _jsx("img", { src: (_a = userBill.nftData) === null || _a === void 0 ? void 0 : _a.data.image }) })), _jsxs(Flex, __assign({ className: "yourbondsmodal yourbondinfo" }, { children: [_jsxs(Flex, __assign({ className: "yourbondinfo title-container" }, { children: [_jsx(Flex, __assign({ className: "title-container bondicon" }, { children: _jsx(TokenImage, { symbol: (_b = userBill.bond.showcaseTokenName) !== null && _b !== void 0 ? _b : userBill.bond.payoutTokenName, size: 40 }) })), _jsx(Flex, __assign({ className: "title-container bondname" }, { children: (_c = userBill.bond) === null || _c === void 0 ? void 0 : _c.showcaseTokenName })), _jsx(Flex, __assign({ className: "title-container tokentags" }, { children: _jsx(ListTag, { text: (_e = (_d = userBill.bond) === null || _d === void 0 ? void 0 : _d.tags) === null || _e === void 0 ? void 0 : _e[0], variant: ((_g = (_f = userBill.bond) === null || _f === void 0 ? void 0 : _f.tags) === null || _g === void 0 ? void 0 : _g[0]) === 'Cex Fund' ? 'cex_fund' : 'liquidity' }) })), "#", userBill.id] })), _jsxs(Flex, __assign({ className: "yourbondinfo blocks-container" }, { children: [_jsx(Flex, __assign({ className: "yourbondinfo-block row-traits" }, { children: _jsx(Flex, __assign({ className: "yourbondinfo-block header" }, { children: "Traits" })) })), _jsxs(Flex, __assign({ className: "yourbondinfo-block row-vested" }, { children: [_jsxs(Flex, __assign({ className: "yourbondinfo-block header" }, { children: ["Fully Vested", _jsx(TooltipBubble, __assign({ body: _jsx(Flex, { children: UserBillTooltipText.FullyVested }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, -5%)" }, { children: _jsx(Flex, __assign({ className: "block-header icon" }, { children: _jsx(Svg, { icon: "questionCircle", width: "12px" }) })) }))] })), _jsxs(Flex, __assign({ className: "yourbondinfo-block info" }, { children: [_jsx(Flex, { className: "block-info icon" }), _jsx(Flex, __assign({ className: "block-info text" }, { children: getPendingVesting(userBill.lastBlockTimestamp, userBill.vesting) }))] }))] })), _jsxs(Flex, __assign({ className: "yourbondinfo-block row-pending" }, { children: [_jsxs(Flex, __assign({ className: "yourbondinfo-block header" }, { children: ["Pending", _jsx(TooltipBubble, __assign({ body: _jsx(Flex, { children: UserBillTooltipText.Pending }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, -5%)" }, { children: _jsx(Flex, __assign({ className: "block-header icon" }, { children: _jsx(Svg, { icon: "questionCircle", width: "12px" }) })) }))] })), _jsxs(Flex, __assign({ className: "yourbondinfo-block info" }, { children: [_jsx(Flex, __assign({ className: "block-info icon" }, { children: _jsx(TokenImage, { symbol: (_h = userBill.bond.showcaseTokenName) !== null && _h !== void 0 ? _h : userBill.bond.payoutTokenName, size: 25 }) })), _jsxs(Flex, __assign({ className: "block-info text" }, { children: [formatNumberSI(parseFloat(totalPending(userBill).toFixed(4)), 4), "($".concat((totalPending(userBill) * ((_j = parseFloat(earnTokenPrice(userBill.bond))) !== null && _j !== void 0 ? _j : 0)).toFixed(2), ")")] }))] }))] })), _jsxs(Flex, __assign({ className: "yourbondinfo-block row-claimable" }, { children: [_jsxs(Flex, __assign({ className: "yourbondinfo-block header" }, { children: ["Claimable", _jsx(TooltipBubble, __assign({ body: _jsx(Flex, { children: UserBillTooltipText.Claimable }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, -5%)" }, { children: _jsx(Flex, __assign({ className: "block-header icon" }, { children: _jsx(Svg, { icon: "questionCircle", width: "12px" }) })) }))] })), _jsxs(Flex, __assign({ className: "yourbondinfo-block info" }, { children: [_jsx(Flex, __assign({ className: "block-info icon" }, { children: _jsx(TokenImage, { symbol: (_k = userBill.bond.showcaseTokenName) !== null && _k !== void 0 ? _k : userBill.bond.payoutTokenName, size: 25 }) })), _jsxs(Flex, __assign({ className: "block-info text" }, { children: [formatNumberSI(parseFloat(claimable(userBill).toFixed(4)), 4), "($".concat((claimable(userBill) * ((_l = parseFloat(earnTokenPrice(userBill.bond))) !== null && _l !== void 0 ? _l : 0)).toFixed(2), ")")] }))] }))] }))] })), _jsxs(Flex, __assign({ className: "yourbondinfo button-container" }, { children: [_jsx(Flex, __assign({ className: "button-container claim" }, { children: _jsx(Button, { children: "CLAIM" }) })), _jsx(Flex, __assign({ className: "button-container transfer" }, { children: _jsx(Button, { children: "TRANSFER" }) }))] }))] }))] }))] })) })) }, userBill.bond.billAddress)) : null;
|
|
255
124
|
}) })));
|
|
256
125
|
};
|
|
257
126
|
export default YourBondsModal;
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
align-items: center;
|
|
11
11
|
z-index: 1000;
|
|
12
12
|
overflow: auto;
|
|
13
|
+
padding: 50px;
|
|
13
14
|
}
|
|
14
15
|
|
|
15
16
|
.yourbondsmodal.content {
|
|
@@ -20,8 +21,8 @@
|
|
|
20
21
|
padding: 10px;
|
|
21
22
|
border-radius: 10px;
|
|
22
23
|
z-index: 1001;
|
|
23
|
-
max-width:
|
|
24
|
-
min-width:
|
|
24
|
+
max-width: 1200px;
|
|
25
|
+
min-width: 1000px;
|
|
25
26
|
overflow: auto;
|
|
26
27
|
}
|
|
27
28
|
|
|
@@ -154,7 +155,7 @@
|
|
|
154
155
|
flex-direction: row;
|
|
155
156
|
height: 25px;
|
|
156
157
|
padding-left: 10px;
|
|
157
|
-
width:
|
|
158
|
+
width: 100%;
|
|
158
159
|
margin-bottom: 10px;
|
|
159
160
|
align-items: center;
|
|
160
161
|
justify-content: start;
|
|
@@ -163,7 +164,7 @@
|
|
|
163
164
|
.yourbondinfo-block.row-vested {
|
|
164
165
|
flex-direction: row;
|
|
165
166
|
height: 50px;
|
|
166
|
-
width:
|
|
167
|
+
width: 100%;
|
|
167
168
|
margin-bottom: 10px;
|
|
168
169
|
padding-left: 10px;
|
|
169
170
|
padding-right: 10px;
|
|
@@ -174,7 +175,7 @@
|
|
|
174
175
|
.yourbondinfo-block.row-pending {
|
|
175
176
|
flex-direction: row;
|
|
176
177
|
height: 50px;
|
|
177
|
-
width:
|
|
178
|
+
width: 100%;
|
|
178
179
|
margin-bottom: 10px;
|
|
179
180
|
padding-left: 10px;
|
|
180
181
|
padding-right: 10px;
|
|
@@ -185,7 +186,7 @@
|
|
|
185
186
|
.yourbondinfo-block.row-claimable {
|
|
186
187
|
flex-direction: row;
|
|
187
188
|
height: 50px;
|
|
188
|
-
width:
|
|
189
|
+
width: 100%;
|
|
189
190
|
margin-bottom: 10px;
|
|
190
191
|
padding-left: 10px;
|
|
191
192
|
padding-right: 10px;
|
package/dist/types/bonds.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ChainId } from '../enum/apeswaplists';
|
|
2
2
|
export interface BondsDataResponse {
|
|
3
3
|
index: number;
|
|
4
4
|
cmcId?: number;
|
|
@@ -38,94 +38,6 @@ export interface BondsDataResponse {
|
|
|
38
38
|
billVersion?: string;
|
|
39
39
|
earnToken?: EarnToken;
|
|
40
40
|
}
|
|
41
|
-
export interface UserBillNft {
|
|
42
|
-
image: string;
|
|
43
|
-
tokenId: string;
|
|
44
|
-
attributes: {
|
|
45
|
-
trait_type: string;
|
|
46
|
-
value: string;
|
|
47
|
-
}[];
|
|
48
|
-
}
|
|
49
|
-
export interface UserBill {
|
|
50
|
-
address: string;
|
|
51
|
-
id: string;
|
|
52
|
-
vesting: string;
|
|
53
|
-
payout: string;
|
|
54
|
-
totalPayout?: string;
|
|
55
|
-
truePricePaid: string;
|
|
56
|
-
lastBlockTimestamp: string;
|
|
57
|
-
pendingRewards: string;
|
|
58
|
-
billNftAddress: string;
|
|
59
|
-
nftData?: UserBillNft;
|
|
60
|
-
}
|
|
61
|
-
export interface Bills extends BillsConfig {
|
|
62
|
-
price?: string;
|
|
63
|
-
priceUsd?: string;
|
|
64
|
-
vestingTime?: string;
|
|
65
|
-
discount?: string;
|
|
66
|
-
currentDebt?: string;
|
|
67
|
-
currentFee?: string;
|
|
68
|
-
debtDecay?: string;
|
|
69
|
-
debtRatio?: string;
|
|
70
|
-
totalDebt?: string;
|
|
71
|
-
totalPayoutGiven?: string;
|
|
72
|
-
totalPrincipalBilled?: string;
|
|
73
|
-
controlVariable?: string;
|
|
74
|
-
minimumPrice?: string;
|
|
75
|
-
maxPayout?: string;
|
|
76
|
-
maxDebt?: string;
|
|
77
|
-
lpPriceUsd?: number;
|
|
78
|
-
earnTokenPrice?: number;
|
|
79
|
-
billNftAddress?: string;
|
|
80
|
-
userOwnedBillsData?: UserBill[];
|
|
81
|
-
userOwnedBillsNftData?: UserBillNft[];
|
|
82
|
-
maxTotalPayout?: string;
|
|
83
|
-
lpPrice?: number;
|
|
84
|
-
maxPayoutTokens?: string;
|
|
85
|
-
startVestingTimestamp?: string;
|
|
86
|
-
totalBonusRewards?: string;
|
|
87
|
-
featuredURLS?: string[];
|
|
88
|
-
partnersURLS?: string[];
|
|
89
|
-
}
|
|
90
|
-
export interface CleanedBondsState {
|
|
91
|
-
index: number;
|
|
92
|
-
cmcId: number | null;
|
|
93
|
-
chainId: ChainId;
|
|
94
|
-
vestingTerm?: number;
|
|
95
|
-
principalTokenName: string;
|
|
96
|
-
principalToken: string;
|
|
97
|
-
principalTokenDecimals: number;
|
|
98
|
-
payoutTokenName: string;
|
|
99
|
-
payoutToken: string;
|
|
100
|
-
payoutTokenDecimals: number;
|
|
101
|
-
soldOut?: boolean;
|
|
102
|
-
tags?: string[];
|
|
103
|
-
contractAddress: string;
|
|
104
|
-
billNftAddress: string;
|
|
105
|
-
inactive?: boolean;
|
|
106
|
-
showcaseTokenName?: string;
|
|
107
|
-
twitter?: string;
|
|
108
|
-
projectLink?: string;
|
|
109
|
-
audit?: string;
|
|
110
|
-
shortDescription?: string;
|
|
111
|
-
fullDescription?: string;
|
|
112
|
-
lpToken?: Token;
|
|
113
|
-
billType?: string;
|
|
114
|
-
billVersion?: BillVersion;
|
|
115
|
-
featuredURLS?: string[];
|
|
116
|
-
partnersURLS?: string[];
|
|
117
|
-
discount?: number;
|
|
118
|
-
principalTokenPrice?: string;
|
|
119
|
-
payoutTokenPrice?: string;
|
|
120
|
-
tokensRemaining?: string;
|
|
121
|
-
maxTotalPayout?: string;
|
|
122
|
-
trueBillPrice?: string;
|
|
123
|
-
maxPayout?: string;
|
|
124
|
-
totalPayoutGiven?: string;
|
|
125
|
-
isHotBond?: boolean;
|
|
126
|
-
userOwnedBillsData?: UserBill[];
|
|
127
|
-
userOwnedBillsNftData?: UserBillNft[];
|
|
128
|
-
}
|
|
129
41
|
export interface EarnToken {
|
|
130
42
|
symbol: string;
|
|
131
43
|
address: {
|