@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.
@@ -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 { fetchUserOwnedBillNftData } from './fetchBillsUser';
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(false), isModalOpen = _d[0], setIsModalOpen = _d[1];
124
- var _e = useState(null), selectedBond = _e[0], setSelectedBond = _e[1];
125
- var _f = useState([]), bondData = _f[0], setBondData = _f[1];
126
- var rowClick = function (bond) {
127
- setSelectedBond(bond);
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(bond.billAddress, "&bondChain=").concat(bond.chainId), { replace: true });
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, error_3;
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
- error_3 = _a.sent();
276
- console.error('Error fetching user owned bills data:', error_3);
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.bond); } }, { 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: {
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 fetchUserOwnedBills: (chainId: ChainId, account: string, bills: CleanedBondsState[]) => Promise<UserBill[]>;
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
- export var fetchUserOwnedBills = function (chainId, account, bills) { return __awaiter(void 0, void 0, void 0, function () {
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 = bills.map(function (b) { return ({
107
- address: b.contractAddress,
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: bills[index].contractAddress,
122
- name: bills[index].billVersion !== BillVersion.V1 ? 'getBillInfo' : 'billInfo',
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: bills[index].contractAddress, name: 'billNft' }),
191
+ billDataCalls.push({ address: bonds[index].billAddress, name: 'billNft' }),
126
192
  billsPendingRewardCall.push({
127
- address: bills[index].contractAddress,
128
- name: bills[index].billVersion !== BillVersion.V1 ? 'claimablePayout' : 'pendingPayoutFor',
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(bills[index].billVersion));
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 { fetchUserOwnedBillNftData } from '../YourBonds/fetchBillsUser';
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, error_2;
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
- error_2 = _a.sent();
229
- console.error('Error fetching user owned bills data:', error_2);
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: 1500px;
24
- min-width: 1200px;
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: 450px;
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: 450px;
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: 450px;
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: 450px;
189
+ width: 100%;
189
190
  margin-bottom: 10px;
190
191
  padding-left: 10px;
191
192
  padding-right: 10px;
@@ -1,4 +1,4 @@
1
- import { BillsConfig, BillVersion, Token, ChainId } from '../enum/apeswaplists';
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: {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Ape Bond SDK",
4
4
  "author": "Ape Bond",
5
5
  "license": "MIT",
6
- "version": "1.0.360",
6
+ "version": "1.0.362",
7
7
  "main": "dist/index.js",
8
8
  "module": "dist/index.es.js",
9
9
  "types": "dist/index.d.ts",