diff --git a/.changeset/sweet-lands-mate.md b/.changeset/sweet-lands-mate.md new file mode 100644 index 0000000000..6cada0fbaf --- /dev/null +++ b/.changeset/sweet-lands-mate.md @@ -0,0 +1,5 @@ +--- +"@venusprotocol/evm": minor +--- + +add Ad banner to Pool page diff --git a/apps/evm/package.json b/apps/evm/package.json index 4adeaaa87c..61c73bbdac 100644 --- a/apps/evm/package.json +++ b/apps/evm/package.json @@ -119,6 +119,7 @@ "@venusprotocol/stylelint-config": "*", "@venusprotocol/token-bridge": "2.7.0", "@venusprotocol/typescript-config": "*", + "@venusprotocol/venus-periphery": "^1.1.0", "@venusprotocol/venus-protocol": "10.0.0", "@vitejs/plugin-react": "^4.3.3", "@vitest/coverage-v8": "^2.1.5", @@ -167,4 +168,4 @@ "last 1 safari version" ] } -} \ No newline at end of file +} diff --git a/apps/evm/src/clients/api/queries/getSwapQuote/__ tests__/index.spec.ts b/apps/evm/src/clients/api/queries/getSwapQuote/__ tests__/index.spec.ts index 4d0dd1b70e..2da32733ae 100644 --- a/apps/evm/src/clients/api/queries/getSwapQuote/__ tests__/index.spec.ts +++ b/apps/evm/src/clients/api/queries/getSwapQuote/__ tests__/index.spec.ts @@ -54,7 +54,7 @@ describe('getSwapQuote', () => { expect(restService).toHaveBeenCalledTimes(1); expect((restService as Mock).mock.calls[0][0]).toMatchInlineSnapshot(` { - "endpoint": "/find-swap/pcs", + "endpoint": "/find-swap", "method": "GET", "params": { "chainId": 56, @@ -106,7 +106,7 @@ describe('getSwapQuote', () => { expect(restService).toHaveBeenCalledTimes(1); expect((restService as Mock).mock.calls[0][0]).toMatchInlineSnapshot(` { - "endpoint": "/find-swap/pcs", + "endpoint": "/find-swap", "method": "GET", "params": { "chainId": 56, @@ -158,7 +158,7 @@ describe('getSwapQuote', () => { expect(restService).toHaveBeenCalledTimes(1); expect((restService as Mock).mock.calls[0][0]).toMatchInlineSnapshot(` { - "endpoint": "/find-swap/pcs", + "endpoint": "/find-swap", "method": "GET", "params": { "chainId": 56, diff --git a/apps/evm/src/clients/api/queries/getSwapQuote/index.ts b/apps/evm/src/clients/api/queries/getSwapQuote/index.ts index e999859a67..02f1af379d 100644 --- a/apps/evm/src/clients/api/queries/getSwapQuote/index.ts +++ b/apps/evm/src/clients/api/queries/getSwapQuote/index.ts @@ -45,7 +45,7 @@ export const getSwapQuote = async ({ } const txsResponse = await restService({ - endpoint: '/find-swap/pcs', + endpoint: '/find-swap', method: 'GET', params, }); diff --git a/apps/evm/src/components/Carousel/CarouselItem/index.tsx b/apps/evm/src/components/Carousel/CarouselItem/index.tsx index 352e38775c..6b171e97b9 100644 --- a/apps/evm/src/components/Carousel/CarouselItem/index.tsx +++ b/apps/evm/src/components/Carousel/CarouselItem/index.tsx @@ -7,7 +7,7 @@ export const CarouselItem = forwardRef ), diff --git a/apps/evm/src/components/Carousel/index.tsx b/apps/evm/src/components/Carousel/index.tsx index cc1fcac206..3bf5fec246 100644 --- a/apps/evm/src/components/Carousel/index.tsx +++ b/apps/evm/src/components/Carousel/index.tsx @@ -60,24 +60,24 @@ export const Carousel = forwardRef< return (
-
+
{children}
{slidesCount > 1 && ( -
+
{Array.from({ length: slidesCount }).map((_s, i) => ( " }, + "binanceWalletBanner": { + "binanceLogoAltText": "Binance logo", + "description": "Borrow USDT and share $400,000 in rewards!", + "title": "Venus is live on Binance Wallet Earn." + }, + "boostBanner": { + "description": "One-click leverage to boost your yield up to 5x.", + "rocketAltText": "Rocket illustration", + "title": "Boost is available now!" + }, "breadcrumbs": { "account": "Account", "bridge": "Bridge", diff --git a/apps/evm/src/components/EModeBanner/EModeButton/index.tsx b/apps/evm/src/pages/Market/OperationForm/BorrowForm/EModeBanner/EModeButton/index.tsx similarity index 100% rename from apps/evm/src/components/EModeBanner/EModeButton/index.tsx rename to apps/evm/src/pages/Market/OperationForm/BorrowForm/EModeBanner/EModeButton/index.tsx diff --git a/apps/evm/src/components/EModeBanner/illustration.svg b/apps/evm/src/pages/Market/OperationForm/BorrowForm/EModeBanner/illustration.svg similarity index 100% rename from apps/evm/src/components/EModeBanner/illustration.svg rename to apps/evm/src/pages/Market/OperationForm/BorrowForm/EModeBanner/illustration.svg diff --git a/apps/evm/src/pages/Market/OperationForm/BorrowForm/EModeBanner/index.tsx b/apps/evm/src/pages/Market/OperationForm/BorrowForm/EModeBanner/index.tsx new file mode 100644 index 0000000000..6e60f2cd66 --- /dev/null +++ b/apps/evm/src/pages/Market/OperationForm/BorrowForm/EModeBanner/index.tsx @@ -0,0 +1,90 @@ +import { cn } from '@venusprotocol/ui'; +import type { Address } from 'viem'; + +import { IsolatedEModeGroupTooltip } from 'components'; +import { EModeIcon } from 'components/EModeIcon'; +import { Icon } from 'components/Icon'; +import { useBreakpointUp } from 'hooks/responsive'; +import { useTranslation } from 'libs/translations'; +import type { EModeGroup } from 'types'; +import { EModeButton } from './EModeButton'; +import illustrationSrc from './illustration.svg'; + +export interface EModeBannerProps { + poolComptrollerContractAddress: Address; + enabledEModeGroup?: EModeGroup; + className?: string; +} + +export const EModeBanner: React.FC = ({ + enabledEModeGroup, + poolComptrollerContractAddress, + className, +}) => { + const { t } = useTranslation(); + const isMdOrUp = useBreakpointUp('md'); + + return ( +
+
+ {enabledEModeGroup ? ( +
+
+ + +

{enabledEModeGroup.name}

+ + {enabledEModeGroup.isIsolated && ( + + )} +
+ + + {t('eModeBanner.manageEModeButtonLabel')} + +
+ ) : ( + <> +
+ {t('eModeBanner.illustrationAltText')} + +
+

{t('eModeBanner.title')}

+
+ + + {isMdOrUp ? ( + t('eModeBanner.exploreButtonLabel') + ) : ( + + )} + +
+ + )} +
+
+ ); +}; diff --git a/apps/evm/src/pages/Market/OperationForm/BorrowForm/index.tsx b/apps/evm/src/pages/Market/OperationForm/BorrowForm/index.tsx index dd275850a8..497c0c4f88 100644 --- a/apps/evm/src/pages/Market/OperationForm/BorrowForm/index.tsx +++ b/apps/evm/src/pages/Market/OperationForm/BorrowForm/index.tsx @@ -5,7 +5,6 @@ import { cn } from '@venusprotocol/ui'; import { useBorrow } from 'clients/api'; import { Delimiter, - EModeBanner, LabeledInlineContent, RiskAcknowledgementToggle, Toggle, @@ -36,6 +35,7 @@ import { useAccountAddress } from 'libs/wallet'; import { ApyBreakdown } from '../ApyBreakdown'; import { OperationDetails } from '../OperationDetails'; import { calculateAmountDollars } from '../calculateAmountDollars'; +import { EModeBanner } from './EModeBanner'; import SubmitSection from './SubmitSection'; import TEST_IDS from './testIds'; import useForm, { type FormValues, type UseFormInput } from './useForm'; @@ -274,11 +274,7 @@ export const BorrowFormUi: React.FC = ({
{isEModeFeatureEnabled && pool.eModeGroups.length > 0 && !pool.userEModeGroup && ( - + )} , 'title'> { + title: React.ReactNode; + description: React.ReactNode; + illustration: React.ReactNode; + learnMoreUrl: string; + backgroundIllustration?: React.ReactNode; + contentContainerClassName?: string; +} + +export const Banner: React.FC = ({ + className, + contentContainerClassName, + learnMoreUrl, + title, + description, + illustration, + backgroundIllustration, +}) => { + const { t } = useTranslation(); + const isSmOrUp = useBreakpointUp('sm'); + + const textDom = ( +
+

{title}

+

{description}

+
+ ); + + return ( +
+ {backgroundIllustration} + +
+
+
+ {illustration} + +
{textDom}
+
+ + + + {t('adBanner.learnMore')} + + +
+ +
{textDom}
+
+
+ ); +}; diff --git a/apps/evm/src/pages/Pool/Assets/AdBanner/BinanceWalletBanner/binanceLogo.svg b/apps/evm/src/pages/Pool/Assets/AdBanner/BinanceWalletBanner/binanceLogo.svg new file mode 100644 index 0000000000..32011a9ba7 --- /dev/null +++ b/apps/evm/src/pages/Pool/Assets/AdBanner/BinanceWalletBanner/binanceLogo.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/apps/evm/src/pages/Pool/Assets/AdBanner/BinanceWalletBanner/desktopBgIllustration.png b/apps/evm/src/pages/Pool/Assets/AdBanner/BinanceWalletBanner/desktopBgIllustration.png new file mode 100644 index 0000000000..8b66a9bfd7 Binary files /dev/null and b/apps/evm/src/pages/Pool/Assets/AdBanner/BinanceWalletBanner/desktopBgIllustration.png differ diff --git a/apps/evm/src/pages/Pool/Assets/AdBanner/BinanceWalletBanner/index.tsx b/apps/evm/src/pages/Pool/Assets/AdBanner/BinanceWalletBanner/index.tsx new file mode 100644 index 0000000000..13333d6734 --- /dev/null +++ b/apps/evm/src/pages/Pool/Assets/AdBanner/BinanceWalletBanner/index.tsx @@ -0,0 +1,53 @@ +import { useTranslation } from 'libs/translations'; +import { Banner } from '../Banner'; +import binanceLogoIllustration from './binanceLogo.svg'; +import desktopBgIllustration from './desktopBgIllustration.png'; +import mobileBgIllustration from './mobileBgIllustration.png'; + +const LEARN_MORE_URL = 'https://www.binance.com/en/events/w3e-bnb-defi-fest'; + +export const BinanceWalletBanner: React.FC = () => { + const { t, Trans } = useTranslation(); + + return ( + {t('binanceWalletBanner.title')}} + description={ + + , + }} + /> + + } + illustration={ + {t('binanceWalletBanner.binanceLogoAltText')} + } + backgroundIllustration={ + <> + {/* Mobile illustration */} + {t('binanceWalletBanner.bgIllustrationAltText')} + + {/* Tablet/desktop illustration */} + {t('binanceWalletBanner.bgIllustrationAltText')} + + } + learnMoreUrl={LEARN_MORE_URL} + /> + ); +}; diff --git a/apps/evm/src/pages/Pool/Assets/AdBanner/BinanceWalletBanner/mobileBgIllustration.png b/apps/evm/src/pages/Pool/Assets/AdBanner/BinanceWalletBanner/mobileBgIllustration.png new file mode 100644 index 0000000000..61fb33003b Binary files /dev/null and b/apps/evm/src/pages/Pool/Assets/AdBanner/BinanceWalletBanner/mobileBgIllustration.png differ diff --git a/apps/evm/src/pages/Pool/Assets/AdBanner/BoostBanner/index.tsx b/apps/evm/src/pages/Pool/Assets/AdBanner/BoostBanner/index.tsx new file mode 100644 index 0000000000..0ef4a6b2d5 --- /dev/null +++ b/apps/evm/src/pages/Pool/Assets/AdBanner/BoostBanner/index.tsx @@ -0,0 +1,37 @@ +import { useTranslation } from 'libs/translations'; +import { Banner } from '../Banner'; +import rocketIllustration from './rocket.svg'; + +const LEARN_MORE_URL = 'https://docs-v4.venus.io/guides/leveraged-positions'; + +export const BoostBanner: React.FC = () => { + const { t, Trans } = useTranslation(); + + return ( + {t('boostBanner.title')}} + description={ + + , + }} + /> + + } + illustration={ +
+ {t('boostBanner.rocketAltText')} +
+ } + contentContainerClassName="gap-x-1" + learnMoreUrl={LEARN_MORE_URL} + /> + ); +}; diff --git a/apps/evm/src/pages/Pool/Assets/AdBanner/BoostBanner/rocket.svg b/apps/evm/src/pages/Pool/Assets/AdBanner/BoostBanner/rocket.svg new file mode 100644 index 0000000000..7d38924ebb --- /dev/null +++ b/apps/evm/src/pages/Pool/Assets/AdBanner/BoostBanner/rocket.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/apps/evm/src/pages/Pool/Assets/AdBanner/index.tsx b/apps/evm/src/pages/Pool/Assets/AdBanner/index.tsx new file mode 100644 index 0000000000..cb13d31d9f --- /dev/null +++ b/apps/evm/src/pages/Pool/Assets/AdBanner/index.tsx @@ -0,0 +1,20 @@ +import { Carousel, CarouselItem } from 'components'; +import { BinanceWalletBanner } from './BinanceWalletBanner'; +import { BoostBanner } from './BoostBanner'; + +export const AdBanner: React.FC = () => { + const slides: React.ReactNode[] = [, ]; + + const carouselDom = + slides.length > 1 ? ( + + {slides.map((slide, i) => ( + {slide} + ))} + + ) : ( + slides + ); + + return
{carouselDom}
; +}; diff --git a/apps/evm/src/pages/Pool/Assets/index.tsx b/apps/evm/src/pages/Pool/Assets/index.tsx index 0aa9a78971..5e814f19f2 100644 --- a/apps/evm/src/pages/Pool/Assets/index.tsx +++ b/apps/evm/src/pages/Pool/Assets/index.tsx @@ -1,7 +1,7 @@ -import { EModeBanner } from 'components'; import { MarketTable } from 'containers/MarketTable'; import { PoolStats } from 'containers/PoolStats'; import type { Pool } from 'types'; +import { AdBanner } from './AdBanner'; export interface AssetsProps { pool: Pool; @@ -29,16 +29,7 @@ export const Assets: React.FC = ({ pool }) => ( orderBy: 'labeledSupplyApy', orderDirection: 'desc', }} - header={ - pool.eModeGroups.length > 0 && ( - - ) - } + header={} />
); diff --git a/apps/evm/src/pages/Pool/Tabs/index.tsx b/apps/evm/src/pages/Pool/Tabs/index.tsx index d8562b9b19..28204aaf27 100644 --- a/apps/evm/src/pages/Pool/Tabs/index.tsx +++ b/apps/evm/src/pages/Pool/Tabs/index.tsx @@ -67,10 +67,6 @@ export const Tabs: React.FC = ({ pool }) => {
{tab.title} - - {tab.id === 'e-mode' && activeTabIndex !== index && ( - {t('pool.tabs.eMode.new')} - )}
), diff --git a/apps/evm/src/pages/Pool/__tests__/__snapshots__/index.eMode.spec.tsx.snap b/apps/evm/src/pages/Pool/__tests__/__snapshots__/index.eMode.spec.tsx.snap index d24a98a8d8..d7eb1107b2 100644 --- a/apps/evm/src/pages/Pool/__tests__/__snapshots__/index.eMode.spec.tsx.snap +++ b/apps/evm/src/pages/Pool/__tests__/__snapshots__/index.eMode.spec.tsx.snap @@ -1,6 +1,6 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Pool - Feature flag enabled: E-mode > Assets tab > renders correctly when pool has E-mode groups 1`] = `"AssetsE-modeNewTotal supply$20.99TTotal borrow$8.58TAvailable liquidity$12.4TAssets4StablecoinsManage E-modePaused assetsMy assets onlyE-mode assets onlyAssetTotal supplySupply APY sorted descendingTotal borrowBorrow APY LiquidityUSDT> 100T USDT$10.98T4.02%5.77%232.51M USDT$31.58M-5.50%-6.51%10 USDT$55.34MBUSD> 100T BUSD$10.54B3.56%5.32%142.66M BUSD$839.1M-5.82%10 BUSD$36.54MXVS> 100T XVS$2.78M0.17%1.85M XVS$709.25K-6.48%10 XVS$80.36MSort bySupply APY / LTVUSDTTotal supply> 100T USDT$10.98TSupply APY 4.02%5.77%Total borrow232.51M USDT$31.58MBorrow APY -5.50%-6.51%Liquidity10 USDT$55.34MBUSDTotal supply> 100T BUSD$10.54BSupply APY 3.56%5.32%Total borrow142.66M BUSD$839.1MBorrow APY -5.82%Liquidity10 BUSD$36.54MXVSTotal supply> 100T XVS$2.78MSupply APY 0.17%Total borrow1.85M XVS$709.25KBorrow APY -6.48%Liquidity10 XVS$80.36M"`; +exports[`Pool - Feature flag enabled: E-mode > Assets tab > renders correctly when pool has E-mode groups 1`] = `"AssetsE-modeTotal supply$20.99TTotal borrow$8.58TAvailable liquidity$12.4TAssets4Boost is available now!One-click leverage to boost your yield up to 5x.Learn moreBoost is available now!One-click leverage to boost your yield up to 5x.Venus is live on Binance Wallet Earn.Borrow USDT and share $400,000 in rewards!Learn moreVenus is live on Binance Wallet Earn.Borrow USDT and share $400,000 in rewards!Paused assetsMy assets onlyE-mode assets onlyAssetTotal supplySupply APY sorted descendingTotal borrowBorrow APY LiquidityUSDT> 100T USDT$10.98T4.02%5.77%232.51M USDT$31.58M-5.50%-6.51%10 USDT$55.34MBUSD> 100T BUSD$10.54B3.56%5.32%142.66M BUSD$839.1M-5.82%10 BUSD$36.54MXVS> 100T XVS$2.78M0.17%1.85M XVS$709.25K-6.48%10 XVS$80.36MSort bySupply APY / LTVUSDTTotal supply> 100T USDT$10.98TSupply APY 4.02%5.77%Total borrow232.51M USDT$31.58MBorrow APY -5.50%-6.51%Liquidity10 USDT$55.34MBUSDTotal supply> 100T BUSD$10.54BSupply APY 3.56%5.32%Total borrow142.66M BUSD$839.1MBorrow APY -5.82%Liquidity10 BUSD$36.54MXVSTotal supply> 100T XVS$2.78MSupply APY 0.17%Total borrow1.85M XVS$709.25KBorrow APY -6.48%Liquidity10 XVS$80.36M"`; exports[`Pool - Feature flag enabled: E-mode > E-mode tab > filters assets correctly when using search 1`] = `"AssetsE-modeEnabling E-Mode allows you to maximize your borrowing power, however, borrowing is restricted to assets within the selected group. Learn moreSort by:Max LTVStablecoinsDisableStablecoinsDisableAssetCollateralBorrowableMax LTVsorted descendingThresholdPenaltySort byMax LTVDeFiHealth factor:15.621.66ModerateSwitchHealth factor:15.621.66ModerateBUSDCollateralBorrowableMax LTV90%Liquidation threshold92%Liquidation penalty30%DeFiHealth factor:15.621.66ModerateSwitchHealth factor:15.621.66ModerateAssetCollateralBorrowableMax LTVsorted descendingThresholdPenaltyBUSD90%92%30%Sort byMax LTVBUSDCollateralBorrowableMax LTV90%Threshold92%Penalty30%"`; diff --git a/apps/evm/src/pages/Pool/__tests__/__snapshots__/index.spec.tsx.snap b/apps/evm/src/pages/Pool/__tests__/__snapshots__/index.spec.tsx.snap index c7b3c96ced..c833363d1c 100644 --- a/apps/evm/src/pages/Pool/__tests__/__snapshots__/index.spec.tsx.snap +++ b/apps/evm/src/pages/Pool/__tests__/__snapshots__/index.spec.tsx.snap @@ -1,3 +1,3 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Pool > renders correctly 1`] = `"Total supply$20.99TTotal borrow$8.58TAvailable liquidity$12.4TAssets4Paused assetsMy assets onlyAssetTotal supplySupply APY sorted descendingTotal borrowBorrow APY LiquidityUSDT> 100T USDT$10.98T4.02%5.77%232.51M USDT$31.58M-5.50%-6.51%10 USDT$55.34MBUSD> 100T BUSD$10.54B3.56%5.32%142.66M BUSD$839.1M-5.82%10 BUSD$36.54MXVS> 100T XVS$2.78M0.17%1.85M XVS$709.25K-6.48%10 XVS$80.36MSort bySupply APY / LTVUSDTTotal supply> 100T USDT$10.98TSupply APY 4.02%5.77%Total borrow232.51M USDT$31.58MBorrow APY -5.50%-6.51%Liquidity10 USDT$55.34MBUSDTotal supply> 100T BUSD$10.54BSupply APY 3.56%5.32%Total borrow142.66M BUSD$839.1MBorrow APY -5.82%Liquidity10 BUSD$36.54MXVSTotal supply> 100T XVS$2.78MSupply APY 0.17%Total borrow1.85M XVS$709.25KBorrow APY -6.48%Liquidity10 XVS$80.36M"`; +exports[`Pool > renders correctly 1`] = `"Total supply$20.99TTotal borrow$8.58TAvailable liquidity$12.4TAssets4Boost is available now!One-click leverage to boost your yield up to 5x.Learn moreBoost is available now!One-click leverage to boost your yield up to 5x.Venus is live on Binance Wallet Earn.Borrow USDT and share $400,000 in rewards!Learn moreVenus is live on Binance Wallet Earn.Borrow USDT and share $400,000 in rewards!Paused assetsMy assets onlyAssetTotal supplySupply APY sorted descendingTotal borrowBorrow APY LiquidityUSDT> 100T USDT$10.98T4.02%5.77%232.51M USDT$31.58M-5.50%-6.51%10 USDT$55.34MBUSD> 100T BUSD$10.54B3.56%5.32%142.66M BUSD$839.1M-5.82%10 BUSD$36.54MXVS> 100T XVS$2.78M0.17%1.85M XVS$709.25K-6.48%10 XVS$80.36MSort bySupply APY / LTVUSDTTotal supply> 100T USDT$10.98TSupply APY 4.02%5.77%Total borrow232.51M USDT$31.58MBorrow APY -5.50%-6.51%Liquidity10 USDT$55.34MBUSDTotal supply> 100T BUSD$10.54BSupply APY 3.56%5.32%Total borrow142.66M BUSD$839.1MBorrow APY -5.82%Liquidity10 BUSD$36.54MXVSTotal supply> 100T XVS$2.78MSupply APY 0.17%Total borrow1.85M XVS$709.25KBorrow APY -6.48%Liquidity10 XVS$80.36M"`; diff --git a/apps/evm/src/pages/Pool/poolLensAbi.ts b/apps/evm/src/pages/Pool/poolLensAbi.ts deleted file mode 100644 index 5f09777e57..0000000000 --- a/apps/evm/src/pages/Pool/poolLensAbi.ts +++ /dev/null @@ -1,450 +0,0 @@ -export const abi = [ - { - inputs: [ - { internalType: 'bool', name: 'timeBased_', type: 'bool' }, - { internalType: 'uint256', name: 'blocksPerYear_', type: 'uint256' }, - ], - stateMutability: 'nonpayable', - type: 'constructor', - }, - { inputs: [], name: 'InvalidBlocksPerYear', type: 'error' }, - { inputs: [], name: 'InvalidTimeBasedConfiguration', type: 'error' }, - { - inputs: [], - name: 'blocksOrSecondsPerYear', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: 'poolRegistryAddress', type: 'address' }], - name: 'getAllPools', - outputs: [ - { - components: [ - { internalType: 'string', name: 'name', type: 'string' }, - { internalType: 'address', name: 'creator', type: 'address' }, - { internalType: 'address', name: 'comptroller', type: 'address' }, - { internalType: 'uint256', name: 'blockPosted', type: 'uint256' }, - { internalType: 'uint256', name: 'timestampPosted', type: 'uint256' }, - { internalType: 'string', name: 'category', type: 'string' }, - { internalType: 'string', name: 'logoURL', type: 'string' }, - { internalType: 'string', name: 'description', type: 'string' }, - { internalType: 'address', name: 'priceOracle', type: 'address' }, - { internalType: 'uint256', name: 'closeFactor', type: 'uint256' }, - { internalType: 'uint256', name: 'liquidationIncentive', type: 'uint256' }, - { internalType: 'uint256', name: 'minLiquidatableCollateral', type: 'uint256' }, - { - components: [ - { internalType: 'address', name: 'vToken', type: 'address' }, - { internalType: 'uint256', name: 'exchangeRateCurrent', type: 'uint256' }, - { - internalType: 'uint256', - name: 'supplyRatePerBlockOrTimestamp', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'borrowRatePerBlockOrTimestamp', - type: 'uint256', - }, - { internalType: 'uint256', name: 'reserveFactorMantissa', type: 'uint256' }, - { internalType: 'uint256', name: 'supplyCaps', type: 'uint256' }, - { internalType: 'uint256', name: 'borrowCaps', type: 'uint256' }, - { internalType: 'uint256', name: 'totalBorrows', type: 'uint256' }, - { internalType: 'uint256', name: 'totalReserves', type: 'uint256' }, - { internalType: 'uint256', name: 'totalSupply', type: 'uint256' }, - { internalType: 'uint256', name: 'totalCash', type: 'uint256' }, - { internalType: 'bool', name: 'isListed', type: 'bool' }, - { internalType: 'uint256', name: 'collateralFactorMantissa', type: 'uint256' }, - { internalType: 'address', name: 'underlyingAssetAddress', type: 'address' }, - { internalType: 'uint256', name: 'vTokenDecimals', type: 'uint256' }, - { internalType: 'uint256', name: 'underlyingDecimals', type: 'uint256' }, - { internalType: 'uint256', name: 'pausedActions', type: 'uint256' }, - ], - internalType: 'struct PoolLens.VTokenMetadata[]', - name: 'vTokens', - type: 'tuple[]', - }, - ], - internalType: 'struct PoolLens.PoolData[]', - name: '', - type: 'tuple[]', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'getBlockNumberOrTimestamp', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'account', type: 'address' }, - { internalType: 'address', name: 'comptrollerAddress', type: 'address' }, - ], - name: 'getPendingRewards', - outputs: [ - { - components: [ - { internalType: 'address', name: 'distributorAddress', type: 'address' }, - { internalType: 'address', name: 'rewardTokenAddress', type: 'address' }, - { internalType: 'uint256', name: 'totalRewards', type: 'uint256' }, - { - components: [ - { internalType: 'address', name: 'vTokenAddress', type: 'address' }, - { internalType: 'uint256', name: 'amount', type: 'uint256' }, - ], - internalType: 'struct PoolLens.PendingReward[]', - name: 'pendingRewards', - type: 'tuple[]', - }, - ], - internalType: 'struct PoolLens.RewardSummary[]', - name: '', - type: 'tuple[]', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: 'comptrollerAddress', type: 'address' }], - name: 'getPoolBadDebt', - outputs: [ - { - components: [ - { internalType: 'address', name: 'comptroller', type: 'address' }, - { internalType: 'uint256', name: 'totalBadDebtUsd', type: 'uint256' }, - { - components: [ - { internalType: 'address', name: 'vTokenAddress', type: 'address' }, - { internalType: 'uint256', name: 'badDebtUsd', type: 'uint256' }, - ], - internalType: 'struct PoolLens.BadDebt[]', - name: 'badDebts', - type: 'tuple[]', - }, - ], - internalType: 'struct PoolLens.BadDebtSummary', - name: '', - type: 'tuple', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'poolRegistryAddress', type: 'address' }, - { internalType: 'address', name: 'comptroller', type: 'address' }, - ], - name: 'getPoolByComptroller', - outputs: [ - { - components: [ - { internalType: 'string', name: 'name', type: 'string' }, - { internalType: 'address', name: 'creator', type: 'address' }, - { internalType: 'address', name: 'comptroller', type: 'address' }, - { internalType: 'uint256', name: 'blockPosted', type: 'uint256' }, - { internalType: 'uint256', name: 'timestampPosted', type: 'uint256' }, - { internalType: 'string', name: 'category', type: 'string' }, - { internalType: 'string', name: 'logoURL', type: 'string' }, - { internalType: 'string', name: 'description', type: 'string' }, - { internalType: 'address', name: 'priceOracle', type: 'address' }, - { internalType: 'uint256', name: 'closeFactor', type: 'uint256' }, - { internalType: 'uint256', name: 'liquidationIncentive', type: 'uint256' }, - { internalType: 'uint256', name: 'minLiquidatableCollateral', type: 'uint256' }, - { - components: [ - { internalType: 'address', name: 'vToken', type: 'address' }, - { internalType: 'uint256', name: 'exchangeRateCurrent', type: 'uint256' }, - { - internalType: 'uint256', - name: 'supplyRatePerBlockOrTimestamp', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'borrowRatePerBlockOrTimestamp', - type: 'uint256', - }, - { internalType: 'uint256', name: 'reserveFactorMantissa', type: 'uint256' }, - { internalType: 'uint256', name: 'supplyCaps', type: 'uint256' }, - { internalType: 'uint256', name: 'borrowCaps', type: 'uint256' }, - { internalType: 'uint256', name: 'totalBorrows', type: 'uint256' }, - { internalType: 'uint256', name: 'totalReserves', type: 'uint256' }, - { internalType: 'uint256', name: 'totalSupply', type: 'uint256' }, - { internalType: 'uint256', name: 'totalCash', type: 'uint256' }, - { internalType: 'bool', name: 'isListed', type: 'bool' }, - { internalType: 'uint256', name: 'collateralFactorMantissa', type: 'uint256' }, - { internalType: 'address', name: 'underlyingAssetAddress', type: 'address' }, - { internalType: 'uint256', name: 'vTokenDecimals', type: 'uint256' }, - { internalType: 'uint256', name: 'underlyingDecimals', type: 'uint256' }, - { internalType: 'uint256', name: 'pausedActions', type: 'uint256' }, - ], - internalType: 'struct PoolLens.VTokenMetadata[]', - name: 'vTokens', - type: 'tuple[]', - }, - ], - internalType: 'struct PoolLens.PoolData', - name: '', - type: 'tuple', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'poolRegistryAddress', type: 'address' }, - { - components: [ - { internalType: 'string', name: 'name', type: 'string' }, - { internalType: 'address', name: 'creator', type: 'address' }, - { internalType: 'address', name: 'comptroller', type: 'address' }, - { internalType: 'uint256', name: 'blockPosted', type: 'uint256' }, - { internalType: 'uint256', name: 'timestampPosted', type: 'uint256' }, - ], - internalType: 'struct PoolRegistryInterface.VenusPool', - name: 'venusPool', - type: 'tuple', - }, - ], - name: 'getPoolDataFromVenusPool', - outputs: [ - { - components: [ - { internalType: 'string', name: 'name', type: 'string' }, - { internalType: 'address', name: 'creator', type: 'address' }, - { internalType: 'address', name: 'comptroller', type: 'address' }, - { internalType: 'uint256', name: 'blockPosted', type: 'uint256' }, - { internalType: 'uint256', name: 'timestampPosted', type: 'uint256' }, - { internalType: 'string', name: 'category', type: 'string' }, - { internalType: 'string', name: 'logoURL', type: 'string' }, - { internalType: 'string', name: 'description', type: 'string' }, - { internalType: 'address', name: 'priceOracle', type: 'address' }, - { internalType: 'uint256', name: 'closeFactor', type: 'uint256' }, - { internalType: 'uint256', name: 'liquidationIncentive', type: 'uint256' }, - { internalType: 'uint256', name: 'minLiquidatableCollateral', type: 'uint256' }, - { - components: [ - { internalType: 'address', name: 'vToken', type: 'address' }, - { internalType: 'uint256', name: 'exchangeRateCurrent', type: 'uint256' }, - { - internalType: 'uint256', - name: 'supplyRatePerBlockOrTimestamp', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'borrowRatePerBlockOrTimestamp', - type: 'uint256', - }, - { internalType: 'uint256', name: 'reserveFactorMantissa', type: 'uint256' }, - { internalType: 'uint256', name: 'supplyCaps', type: 'uint256' }, - { internalType: 'uint256', name: 'borrowCaps', type: 'uint256' }, - { internalType: 'uint256', name: 'totalBorrows', type: 'uint256' }, - { internalType: 'uint256', name: 'totalReserves', type: 'uint256' }, - { internalType: 'uint256', name: 'totalSupply', type: 'uint256' }, - { internalType: 'uint256', name: 'totalCash', type: 'uint256' }, - { internalType: 'bool', name: 'isListed', type: 'bool' }, - { internalType: 'uint256', name: 'collateralFactorMantissa', type: 'uint256' }, - { internalType: 'address', name: 'underlyingAssetAddress', type: 'address' }, - { internalType: 'uint256', name: 'vTokenDecimals', type: 'uint256' }, - { internalType: 'uint256', name: 'underlyingDecimals', type: 'uint256' }, - { internalType: 'uint256', name: 'pausedActions', type: 'uint256' }, - ], - internalType: 'struct PoolLens.VTokenMetadata[]', - name: 'vTokens', - type: 'tuple[]', - }, - ], - internalType: 'struct PoolLens.PoolData', - name: '', - type: 'tuple', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'poolRegistryAddress', type: 'address' }, - { internalType: 'address', name: 'asset', type: 'address' }, - ], - name: 'getPoolsSupportedByAsset', - outputs: [{ internalType: 'address[]', name: '', type: 'address[]' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'poolRegistryAddress', type: 'address' }, - { internalType: 'address', name: 'comptroller', type: 'address' }, - { internalType: 'address', name: 'asset', type: 'address' }, - ], - name: 'getVTokenForAsset', - outputs: [{ internalType: 'address', name: '', type: 'address' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'isTimeBased', - outputs: [{ internalType: 'bool', name: '', type: 'bool' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'contract VToken', name: 'vToken', type: 'address' }, - { internalType: 'address', name: 'account', type: 'address' }, - ], - name: 'vTokenBalances', - outputs: [ - { - components: [ - { internalType: 'address', name: 'vToken', type: 'address' }, - { internalType: 'uint256', name: 'balanceOf', type: 'uint256' }, - { internalType: 'uint256', name: 'borrowBalanceCurrent', type: 'uint256' }, - { internalType: 'uint256', name: 'balanceOfUnderlying', type: 'uint256' }, - { internalType: 'uint256', name: 'tokenBalance', type: 'uint256' }, - { internalType: 'uint256', name: 'tokenAllowance', type: 'uint256' }, - ], - internalType: 'struct PoolLens.VTokenBalances', - name: '', - type: 'tuple', - }, - ], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { internalType: 'contract VToken[]', name: 'vTokens', type: 'address[]' }, - { internalType: 'address', name: 'account', type: 'address' }, - ], - name: 'vTokenBalancesAll', - outputs: [ - { - components: [ - { internalType: 'address', name: 'vToken', type: 'address' }, - { internalType: 'uint256', name: 'balanceOf', type: 'uint256' }, - { internalType: 'uint256', name: 'borrowBalanceCurrent', type: 'uint256' }, - { internalType: 'uint256', name: 'balanceOfUnderlying', type: 'uint256' }, - { internalType: 'uint256', name: 'tokenBalance', type: 'uint256' }, - { internalType: 'uint256', name: 'tokenAllowance', type: 'uint256' }, - ], - internalType: 'struct PoolLens.VTokenBalances[]', - name: '', - type: 'tuple[]', - }, - ], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [{ internalType: 'contract VToken', name: 'vToken', type: 'address' }], - name: 'vTokenMetadata', - outputs: [ - { - components: [ - { internalType: 'address', name: 'vToken', type: 'address' }, - { internalType: 'uint256', name: 'exchangeRateCurrent', type: 'uint256' }, - { internalType: 'uint256', name: 'supplyRatePerBlockOrTimestamp', type: 'uint256' }, - { internalType: 'uint256', name: 'borrowRatePerBlockOrTimestamp', type: 'uint256' }, - { internalType: 'uint256', name: 'reserveFactorMantissa', type: 'uint256' }, - { internalType: 'uint256', name: 'supplyCaps', type: 'uint256' }, - { internalType: 'uint256', name: 'borrowCaps', type: 'uint256' }, - { internalType: 'uint256', name: 'totalBorrows', type: 'uint256' }, - { internalType: 'uint256', name: 'totalReserves', type: 'uint256' }, - { internalType: 'uint256', name: 'totalSupply', type: 'uint256' }, - { internalType: 'uint256', name: 'totalCash', type: 'uint256' }, - { internalType: 'bool', name: 'isListed', type: 'bool' }, - { internalType: 'uint256', name: 'collateralFactorMantissa', type: 'uint256' }, - { internalType: 'address', name: 'underlyingAssetAddress', type: 'address' }, - { internalType: 'uint256', name: 'vTokenDecimals', type: 'uint256' }, - { internalType: 'uint256', name: 'underlyingDecimals', type: 'uint256' }, - { internalType: 'uint256', name: 'pausedActions', type: 'uint256' }, - ], - internalType: 'struct PoolLens.VTokenMetadata', - name: '', - type: 'tuple', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'contract VToken[]', name: 'vTokens', type: 'address[]' }], - name: 'vTokenMetadataAll', - outputs: [ - { - components: [ - { internalType: 'address', name: 'vToken', type: 'address' }, - { internalType: 'uint256', name: 'exchangeRateCurrent', type: 'uint256' }, - { internalType: 'uint256', name: 'supplyRatePerBlockOrTimestamp', type: 'uint256' }, - { internalType: 'uint256', name: 'borrowRatePerBlockOrTimestamp', type: 'uint256' }, - { internalType: 'uint256', name: 'reserveFactorMantissa', type: 'uint256' }, - { internalType: 'uint256', name: 'supplyCaps', type: 'uint256' }, - { internalType: 'uint256', name: 'borrowCaps', type: 'uint256' }, - { internalType: 'uint256', name: 'totalBorrows', type: 'uint256' }, - { internalType: 'uint256', name: 'totalReserves', type: 'uint256' }, - { internalType: 'uint256', name: 'totalSupply', type: 'uint256' }, - { internalType: 'uint256', name: 'totalCash', type: 'uint256' }, - { internalType: 'bool', name: 'isListed', type: 'bool' }, - { internalType: 'uint256', name: 'collateralFactorMantissa', type: 'uint256' }, - { internalType: 'address', name: 'underlyingAssetAddress', type: 'address' }, - { internalType: 'uint256', name: 'vTokenDecimals', type: 'uint256' }, - { internalType: 'uint256', name: 'underlyingDecimals', type: 'uint256' }, - { internalType: 'uint256', name: 'pausedActions', type: 'uint256' }, - ], - internalType: 'struct PoolLens.VTokenMetadata[]', - name: '', - type: 'tuple[]', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'contract VToken', name: 'vToken', type: 'address' }], - name: 'vTokenUnderlyingPrice', - outputs: [ - { - components: [ - { internalType: 'address', name: 'vToken', type: 'address' }, - { internalType: 'uint256', name: 'underlyingPrice', type: 'uint256' }, - ], - internalType: 'struct PoolLens.VTokenUnderlyingPrice', - name: '', - type: 'tuple', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'contract VToken[]', name: 'vTokens', type: 'address[]' }], - name: 'vTokenUnderlyingPriceAll', - outputs: [ - { - components: [ - { internalType: 'address', name: 'vToken', type: 'address' }, - { internalType: 'uint256', name: 'underlyingPrice', type: 'uint256' }, - ], - internalType: 'struct PoolLens.VTokenUnderlyingPrice[]', - name: '', - type: 'tuple[]', - }, - ], - stateMutability: 'view', - type: 'function', - }, -] as const; diff --git a/yarn.lock b/yarn.lock index bc70c05b54..be7936c825 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4737,7 +4737,7 @@ dependencies: semver "^7.3.5" -"@openzeppelin-3/contracts@npm:@openzeppelin/contracts@^3.4.2-solc-0.7": +"@openzeppelin-3/contracts@npm:@openzeppelin/contracts@^3.4.2-solc-0.7", "@openzeppelin/contracts-v0.7@npm:@openzeppelin/contracts@v3.4.2": version "3.4.2" resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-3.4.2.tgz#d81f786fda2871d1eb8a8c5a73e455753ba53527" integrity sha512-z0zMCjyhhp4y7XKAcDAi3Vgms4T2PstwBdahiO0+9NaGICQKjynK3wduSRplTgk4LXmoO1yfDGO5RbjKYxtuxA== @@ -4752,11 +4752,6 @@ resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.5.tgz#572b5da102fc9be1d73f34968e0ca56765969812" integrity sha512-f7L1//4sLlflAN7fVzJLoRedrf5Na3Oal5PZfIq55NFcVZ90EpV1q5xOvL4lFvg3MNICSDr2hH0JUBxwlxcoPg== -"@openzeppelin/contracts-v0.7@npm:@openzeppelin/contracts@v3.4.2": - version "3.4.2" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-3.4.2.tgz#d81f786fda2871d1eb8a8c5a73e455753ba53527" - integrity sha512-z0zMCjyhhp4y7XKAcDAi3Vgms4T2PstwBdahiO0+9NaGICQKjynK3wduSRplTgk4LXmoO1yfDGO5RbjKYxtuxA== - "@openzeppelin/contracts@3.4.2-solc-0.7": version "3.4.2-solc-0.7" resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-3.4.2-solc-0.7.tgz#38f4dbab672631034076ccdf2f3201fab1726635" @@ -7000,6 +6995,22 @@ ethers "^5.7.0" module-alias "^2.2.2" +"@venusprotocol/venus-periphery@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@venusprotocol/venus-periphery/-/venus-periphery-1.1.0.tgz#55949db5867d3660382fea85ec6077342d31471f" + integrity sha512-cGuOqOpXjOO5xiaZMSvHwzpa+kZtvxQnAV3aqTzYBXSVtR/xNBJujGVp7D9HDZRyjvfpRpVmctpN/L02IIFfBw== + dependencies: + "@nomiclabs/hardhat-ethers" "^2.2.3" + "@openzeppelin/contracts" "^4.8.3" + "@openzeppelin/contracts-upgradeable" "^4.8.3" + "@openzeppelin/hardhat-upgrades" "^1.21.0" + "@solidity-parser/parser" "^0.13.2" + "@venusprotocol/solidity-utilities" "2.0.3" + ethers "^5.7.0" + hardhat-deploy "^0.11.14" + module-alias "^2.2.2" + patch-package "^8.0.0" + "@venusprotocol/venus-protocol@10.0.0", "@venusprotocol/venus-protocol@^10.0.0": version "10.0.0" resolved "https://registry.yarnpkg.com/@venusprotocol/venus-protocol/-/venus-protocol-10.0.0.tgz#e8be114e6243a08758f462734fddfe8d4ea5315d" @@ -17447,16 +17458,7 @@ string-env-interpolation@^1.0.1: resolved "https://registry.yarnpkg.com/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz#ad4397ae4ac53fe6c91d1402ad6f6a52862c7152" integrity sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg== -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -17538,7 +17540,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -17552,13 +17554,6 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - strip-ansi@^7.0.1, strip-ansi@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -19305,7 +19300,7 @@ workerpool@6.2.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -19323,15 +19318,6 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"