Merge pull request #44 from mars-protocol/v1.7.0

v1.7.0
This commit is contained in:
Linkie Link 2023-10-10 16:14:09 +02:00 committed by GitHub
commit c28c178c4f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
51 changed files with 2177 additions and 1202 deletions

View File

@ -1,12 +1,7 @@
# OSMOSIS-1 # # OSMOSIS-1 #
NEXT_PUBLIC_OSMOSIS_RPC=https://rpc-osmosis.blockapsis.com NEXT_PUBLIC_OSMOSIS_RPC=https://rpc-osmosis.blockapsis.com
NEXT_PUBLIC_OSMOSIS_REST=https://lcd-osmosis.blockapsis.com NEXT_PUBLIC_OSMOSIS_REST=https://lcd-osmosis.blockapsis.com
NEXT_PUBLIC_OSMOSIS_GQL=https://osmosis-node.marsprotocol.io/GGSFGSFGFG34/osmosis-hive-front/graphql NEXT_PUBLIC_OSMOSIS_GQL=https://osmosis.rpc.p2p.world/4dqst8e8Cgd2HMb2HDNkimP7NIkcbjuk/hive/graphql
# OSMO-TEST-5 #
NEXT_PUBLIC_OSMOSIS_TEST_RPC=https://rpc.osmotest5.osmosis.zone
NEXT_PUBLIC_OSMOSIS_TEST_REST=https://lcd.osmotest5.osmosis.zone
NEXT_PUBLIC_OSMOSIS_TEST_GQL=https://testnet-osmosis-node.marsprotocol.io/XF32UOOU55CX/osmosis-hive-front/graphql
# PION-1 # # PION-1 #
NEXT_PUBLIC_NEUTRON_TEST_RPC=https://rpc-palvus.pion-1.ntrn.tech/ NEXT_PUBLIC_NEUTRON_TEST_RPC=https://rpc-palvus.pion-1.ntrn.tech/

View File

@ -6,11 +6,6 @@ NEXT_PUBLIC_OSMOSIS_RPC=APP_NEXT_OSMOSIS_RPC
NEXT_PUBLIC_OSMOSIS_REST=APP_NEXT_OSMOSIS_REST NEXT_PUBLIC_OSMOSIS_REST=APP_NEXT_OSMOSIS_REST
NEXT_PUBLIC_OSMOSIS_GQL=APP_NEXT_OSMOSIS_GQL NEXT_PUBLIC_OSMOSIS_GQL=APP_NEXT_OSMOSIS_GQL
# OSMO-TEST-5 #
NEXT_PUBLIC_OSMOSIS_TEST_RPC=APP_NEXT_OSMOSIS_TEST_RPC
NEXT_PUBLIC_OSMOSIS_TEST_REST=APP_NEXT_OSMOSIS_TEST_REST
NEXT_PUBLIC_OSMOSIS_TEST_GQL=APP_NEXT_OSMOSIS_TEST_GQL
# PION-1 # # PION-1 #
NEXT_PUBLIC_NEUTRON_TEST_RPC=APP_NEXT_NEUTRON_TEST_RPC NEXT_PUBLIC_NEUTRON_TEST_RPC=APP_NEXT_NEUTRON_TEST_RPC
NEXT_PUBLIC_NEUTRON_TEST_REST=APP_NEXT_NEUTRON_TEST_REST NEXT_PUBLIC_NEUTRON_TEST_REST=APP_NEXT_NEUTRON_TEST_REST

View File

@ -30,12 +30,9 @@ We allow the use of environment variables to be passed to the Docker container t
| Variable | Description | Default | | Variable | Description | Default |
| --------------------- | ------------------------------------------------ | ----------------------------------------------------------------------------------------- | | --------------------- | ------------------------------------------------ | ----------------------------------------------------------------------------------------- |
| URL_OSMOSIS_GQL | The Osmosis Hive GraphQL endpoint to use | https://osmosis-node.marsprotocol.io/GGSFGSFGFG34/osmosis-hive-front/graphql | | URL_OSMOSIS_GQL | The Osmosis Hive GraphQL endpoint to use | https://osmosis.rpc.p2p.world/4dqst8e8Cgd2HMb2HDNkimP7NIkcbjuk/hive/graphql |
| URL_OSMOSIS_REST | The Osmosis node REST endpoint to use | https://lcd-osmosis.blockapsis.com | | URL_OSMOSIS_REST | The Osmosis node REST endpoint to use | https://lcd-osmosis.blockapsis.com |
| URL_OSMOSIS_RPC | The Osmosis node RPC endpoint to use | https://rpc-osmosis.blockapsis.com | | URL_OSMOSIS_RPC | The Osmosis node RPC endpoint to use | https://rpc-osmosis.blockapsis.com |
| URL_OSMOSIS_TEST_GQL | The Osmosis Testnet Hive GraphQL endpoint to use | https://testnet-osmosis-node.marsprotocol.io/XF32UOOU55CX/osmosis-hive-front/graphql |
| URL_OSMOSIS_TEST_REST | The Osmosis Testnet node REST endpoint to use | https://lcd.osmotest5.osmosis.zone |
| URL_OSMOSIS_TEST_RPC | The Osmosis Testnet node RPC endpoint to use | https://rpc.osmotest5.osmosis.zone |
| URL_NEUTRON_GQL | The Neutron Hive GraphQL endpoint to use | https://neutron.rpc.p2p.world/qgrnU6PsQZA8F9S5Fb8Fn3tV3kXmMBl2M9bcc9jWLjQy8p/hive/graphql | | URL_NEUTRON_GQL | The Neutron Hive GraphQL endpoint to use | https://neutron.rpc.p2p.world/qgrnU6PsQZA8F9S5Fb8Fn3tV3kXmMBl2M9bcc9jWLjQy8p/hive/graphql |
| URL_NEUTRON_REST | The Neutron node REST endpoint to use | https://rest-kralum.neutron-1.neutron.org | | URL_NEUTRON_REST | The Neutron node REST endpoint to use | https://rest-kralum.neutron-1.neutron.org |
| URL_NEUTRON_RPC | The Neutron node RPC endpoint to use | https://rpc-kralum.neutron-1.neutron.org | | URL_NEUTRON_RPC | The Neutron node RPC endpoint to use | https://rpc-kralum.neutron-1.neutron.org |
@ -52,9 +49,6 @@ docker run -it -p 3000:3000 \
-e URL_OSMOSIS_GQL=https://osmosis-node.marsprotocol.io/GGSFGSFGFG34/osmosis-hive-front/graphql \ -e URL_OSMOSIS_GQL=https://osmosis-node.marsprotocol.io/GGSFGSFGFG34/osmosis-hive-front/graphql \
-e URL_OSMOSIS_REST=https://lcd-osmosis.blockapsis.com \ -e URL_OSMOSIS_REST=https://lcd-osmosis.blockapsis.com \
-e URL_OSMOSIS_RPC=https://rpc-osmosis.blockapsis.com \ -e URL_OSMOSIS_RPC=https://rpc-osmosis.blockapsis.com \
-e URL_OSMOSIS_TEST_GQL=https://testnet-osmosis-node.marsprotocol.io/XF32UOOU55CX/osmosis-hive-front/graphql \
-e URL_OSMOSIS_TEST_REST=https://lcd.osmotest5.osmosis.zone \
-e URL_OSMOSIS_TEST_RPC=https://rpc.osmotest5.osmosis.zone \
-e URL_NEUTRON_GQL=https://neutron.rpc.p2p.world/qgrnU6PsQZA8F9S5Fb8Fn3tV3kXmMBl2M9bcc9jWLjQy8p/hive/graphql \ -e URL_NEUTRON_GQL=https://neutron.rpc.p2p.world/qgrnU6PsQZA8F9S5Fb8Fn3tV3kXmMBl2M9bcc9jWLjQy8p/hive/graphql \
-e URL_NEUTRON_REST=https://rest-kralum.neutron-1.neutron.org \ -e URL_NEUTRON_REST=https://rest-kralum.neutron-1.neutron.org \
-e URL_NEUTRON_RPC=https://rpc-kralum.neutron-1.neutron.org \ -e URL_NEUTRON_RPC=https://rpc-kralum.neutron-1.neutron.org \

View File

@ -7,9 +7,6 @@ envFilename='override.conf'
echo "APP_NEXT_OSMOSIS_RPC=$URL_OSMOSIS_RPC" >> $envFilename echo "APP_NEXT_OSMOSIS_RPC=$URL_OSMOSIS_RPC" >> $envFilename
echo "APP_NEXT_OSMOSIS_REST=$URL_OSMOSIS_REST" >> $envFilename echo "APP_NEXT_OSMOSIS_REST=$URL_OSMOSIS_REST" >> $envFilename
echo "APP_NEXT_OSMOSIS_GQL=$URL_OSMOSIS_GQL" >> $envFilename echo "APP_NEXT_OSMOSIS_GQL=$URL_OSMOSIS_GQL" >> $envFilename
echo "APP_NEXT_OSMOSIS_TEST_RPC=$URL_OSMOSIS_TEST_RPC" >> $envFilename
echo "APP_NEXT_OSMOSIS_TEST_REST=$URL_OSMOSIS_TEST_REST" >> $envFilename
echo "APP_NEXT_OSMOSIS_TEST_GQL=$URL_OSMOSIS_TEST_GQL" >> $envFilename
echo "APP_NEXT_NEUTRON_RPC=$URL_NEUTRON_RPC" >> $envFilename echo "APP_NEXT_NEUTRON_RPC=$URL_NEUTRON_RPC" >> $envFilename
echo "APP_NEXT_NEUTRON_REST=$URL_NEUTRON_REST" >> $envFilename echo "APP_NEXT_NEUTRON_REST=$URL_NEUTRON_REST" >> $envFilename
echo "APP_NEXT_NEUTRON_GQL=$URL_NEUTRON_GQL" >> $envFilename echo "APP_NEXT_NEUTRON_GQL=$URL_NEUTRON_GQL" >> $envFilename

View File

@ -1,7 +1,7 @@
{ {
"name": "mars", "name": "mars",
"homepage": "./", "homepage": "./",
"version": "1.6.5", "version": "1.7.0",
"private": false, "private": false,
"license": "SEE LICENSE IN LICENSE FILE", "license": "SEE LICENSE IN LICENSE FILE",
"scripts": { "scripts": {
@ -22,7 +22,7 @@
"@cosmjs/launchpad": "^0.27.1", "@cosmjs/launchpad": "^0.27.1",
"@cosmjs/proto-signing": "^0.31.1", "@cosmjs/proto-signing": "^0.31.1",
"@cosmjs/stargate": "^0.31.1", "@cosmjs/stargate": "^0.31.1",
"@marsprotocol/wallet-connector": "^2.1.2", "@marsprotocol/wallet-connector": "^2.1.3",
"@material-ui/core": "^4.12.4", "@material-ui/core": "^4.12.4",
"@material-ui/icons": "^4.11.3", "@material-ui/icons": "^4.11.3",
"@ramonak/react-progress-bar": "^5.0.3", "@ramonak/react-progress-bar": "^5.0.3",

View File

@ -17,12 +17,14 @@ import {
useUserDebt, useUserDebt,
useUserIcns, useUserIcns,
} from 'hooks/queries' } from 'hooks/queries'
import { useAssetParams } from 'hooks/queries/useAssetParams'
import { useMarsPrice } from 'hooks/queries/useMarsPrice' import { useMarsPrice } from 'hooks/queries/useMarsPrice'
import { usePythVaa } from 'hooks/queries/usePythVaa' import { usePythVaa } from 'hooks/queries/usePythVaa'
import { useUserCollaterals } from 'hooks/queries/useUserCollaterals' import { useUserCollaterals } from 'hooks/queries/useUserCollaterals'
import { ReactNode, useEffect, useState } from 'react' import { ReactNode, useEffect, useState } from 'react'
import useStore from 'store' import useStore from 'store'
import { State } from 'types/enums' import { State } from 'types/enums'
import { MarsParamsQueryClient } from 'types/generated/mars-params/MarsParams.client'
import { MigrationInProgress } from '../MigrationInProgress/MigrationInProgress' import { MigrationInProgress } from '../MigrationInProgress/MigrationInProgress'
@ -31,6 +33,8 @@ interface CommonContainerProps {
} }
export const CommonContainer = ({ children }: CommonContainerProps) => { export const CommonContainer = ({ children }: CommonContainerProps) => {
useAssetParams()
// ------------------ // ------------------
// EXTERNAL HOOKS // EXTERNAL HOOKS
// --------------- // ---------------
@ -52,6 +56,7 @@ export const CommonContainer = ({ children }: CommonContainerProps) => {
const marketDeposits = useStore((s) => s.marketDeposits) const marketDeposits = useStore((s) => s.marketDeposits)
const marketInfo = useStore((s) => s.marketInfo) const marketInfo = useStore((s) => s.marketInfo)
const migrationInProgress = useStore((s) => s.migrationInProgress) const migrationInProgress = useStore((s) => s.migrationInProgress)
const paramsAddress = useStore((s) => s.networkConfig.contracts.params)
const redBankState = useStore((s) => s.redBankState) const redBankState = useStore((s) => s.redBankState)
const rpc = useStore((s) => s.networkConfig.rpcUrl) const rpc = useStore((s) => s.networkConfig.rpcUrl)
const userBalances = useStore((s) => s.userBalances) const userBalances = useStore((s) => s.userBalances)
@ -76,6 +81,7 @@ export const CommonContainer = ({ children }: CommonContainerProps) => {
client: undefined, client: undefined,
creditManagerClient: undefined, creditManagerClient: undefined,
accountNftClient: undefined, accountNftClient: undefined,
paramsClient: undefined,
userWalletAddress: '', userWalletAddress: '',
}) })
} }
@ -133,6 +139,11 @@ export const CommonContainer = ({ children }: CommonContainerProps) => {
}) })
}, [simulate, sign, connectedWallet, cosmWasmClient, broadcast, networkConfig, chainId]) }, [simulate, sign, connectedWallet, cosmWasmClient, broadcast, networkConfig, chainId])
useEffect(() => {
if (!paramsAddress || !cosmWasmClient) return
useStore.setState({ paramsClient: new MarsParamsQueryClient(cosmWasmClient, paramsAddress) })
}, [cosmWasmClient, paramsAddress])
useEffect(() => { useEffect(() => {
setRedBankAssets() setRedBankAssets()
}, [ }, [

View File

@ -1,3 +1,4 @@
import { useVaultParams } from 'hooks/queries/useVaultParams'
import { ReactNode, useEffect } from 'react' import { ReactNode, useEffect } from 'react'
import useStore from 'store' import useStore from 'store'
import { AccountNftClient, CreditManagerClient } from 'types/classes' import { AccountNftClient, CreditManagerClient } from 'types/classes'
@ -7,6 +8,7 @@ interface FieldsContainerProps {
} }
export const FieldsContainer = ({ children }: FieldsContainerProps) => { export const FieldsContainer = ({ children }: FieldsContainerProps) => {
const { data: vaultParams } = useVaultParams()
const client = useStore((s) => s.client) const client = useStore((s) => s.client)
const currentNetwork = useStore((s) => s.currentNetwork) const currentNetwork = useStore((s) => s.currentNetwork)
const networkConfig = useStore((s) => s.networkConfig) const networkConfig = useStore((s) => s.networkConfig)
@ -20,6 +22,7 @@ export const FieldsContainer = ({ children }: FieldsContainerProps) => {
useEffect(() => { useEffect(() => {
if (!networkConfig.isFieldsEnabled || !creditManagerAddress || !accountNftContractAddress) if (!networkConfig.isFieldsEnabled || !creditManagerAddress || !accountNftContractAddress)
return return
if (!client || client.connectedWallet.network.chainId !== currentNetwork) return if (!client || client.connectedWallet.network.chainId !== currentNetwork) return
useStore.setState({ useStore.setState({
creditManagerClient: new CreditManagerClient(creditManagerAddress, client), creditManagerClient: new CreditManagerClient(creditManagerAddress, client),
@ -35,6 +38,7 @@ export const FieldsContainer = ({ children }: FieldsContainerProps) => {
creditManagerAddress, creditManagerAddress,
currentNetwork, currentNetwork,
getVaults, getVaults,
vaultParams,
]) ])
useEffect(() => { useEffect(() => {

View File

@ -4,7 +4,6 @@
width: 100%; width: 100%;
min-height: rem-calc(48); min-height: rem-calc(48);
display: flex; display: flex;
align-items: center;
@include layoutPopover; @include layoutPopover;
margin-bottom: space(8) !important; margin-bottom: space(8) !important;
@include padding(2, 3); @include padding(2, 3);
@ -22,7 +21,10 @@
} }
.icon { .icon {
@include margin(0, 4); height: 100%;
display: flex;
align-items: flex-start;
@include margin(2.5);
} }
&.info { &.info {
@ -59,7 +61,7 @@
position: absolute; position: absolute;
right: 0; right: 0;
top: 0; top: 0;
@include margin(4, 4, 0, 0); @include margin(3, 3, 0, 0);
border: none; border: none;
background: transparent; background: transparent;
@include padding(0); @include padding(0);
@ -75,3 +77,18 @@
} }
} }
} }
@media only screen and (min-width: $bpMediumHigh) {
.notification {
align-items: center;
.icon {
align-items: center;
@include margin(0, 4);
}
.closeNotification {
@include margin(4, 4, 0, 0);
}
}
}

View File

@ -13,13 +13,11 @@ interface Props {
export const Apy = ({ apyData, leverage, borrowRate }: Props) => { export const Apy = ({ apyData, leverage, borrowRate }: Props) => {
const { t } = useTranslation() const { t } = useTranslation()
const totalApy = useMemo( const totalApy = useMemo(
() => (apyData.total ?? 0) * leverage - borrowRate ?? 0, () => (apyData.total ?? 0) * leverage - borrowRate ?? 0,
[apyData, leverage, borrowRate], [apyData, leverage, borrowRate],
) )
const leveragedApy = useMemo(() => (apyData.total ?? 0) * leverage, [apyData, leverage]) const leveragedApy = useMemo(() => (apyData.total ?? 0) * leverage, [apyData, leverage])
const performanceFee = apyData.fees && apyData.fees[0].value > 0 ? apyData.fees[0] : null
return ( return (
<div className={styles.container}> <div className={styles.container}>
@ -31,16 +29,6 @@ export const Apy = ({ apyData, leverage, borrowRate }: Props) => {
{formatValue(apyData.total ?? 0, 2, 2, true, false, '%', true)} {formatValue(apyData.total ?? 0, 2, 2, true, false, '%', true)}
</span> </span>
</div> </div>
<ul className={styles.list}>
{apyData.apys
?.filter((apy) => apy.value > 0.009)
.map((item, index) => (
<li className={styles.listItem} key={index}>
<span>- {item.type}</span>
<span>{formatValue(item.value, 2, 2, true, false, '%', true)}</span>
</li>
))}
</ul>
</div> </div>
{leverage > 1 && ( {leverage > 1 && (
<> <>
@ -55,21 +43,13 @@ export const Apy = ({ apyData, leverage, borrowRate }: Props) => {
</span> </span>
</div> </div>
{borrowRate > 0 && ( {borrowRate > 0 && (
<div className={classNames(styles.item, !performanceFee && styles.border)}> <div className={classNames(styles.item, styles.border)}>
<span className={styles.label}>{t('fields.borrowRateApy')}</span> <span className={styles.label}>{t('fields.borrowRateApy')}</span>
<span className={styles.value}> <span className={styles.value}>
{formatValue(borrowRate, 2, 2, true, '-', '%', true)} {formatValue(borrowRate, 2, 2, true, '-', '%', true)}
</span> </span>
</div> </div>
)} )}
{performanceFee && (
<div className={classNames(styles.item, styles.border)}>
<span className={styles.label}>{performanceFee.type}</span>
<span className={styles.value}>
{formatValue(performanceFee.value, 2, 2, true, '-', '%', true)}
</span>
</div>
)}
</> </>
)} )}
<div className={classNames(styles.item, styles.total)}> <div className={classNames(styles.item, styles.total)}>

View File

@ -256,9 +256,11 @@ export const useActiveVaultsColumns = () => {
</> </>
) )
case 'active': case 'active':
if (row.original.position.apy?.net !== null) { if (
row.original.position.apy?.net !== null &&
row.original.position.apy?.borrow !== 0
) {
const apy = new BigNumber(row.original.position.apy.net).toNumber() const apy = new BigNumber(row.original.position.apy.net).toNumber()
return ( return (
<> <>
<TextTooltip <TextTooltip

View File

@ -1,6 +1,6 @@
import { Notification } from 'components/common' import { Notification } from 'components/common'
import { produceCountdown } from 'libs/parse' import { produceCountdown } from 'libs/parse'
import React, { useEffect, useState } from 'react' import { useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import useStore from 'store' import useStore from 'store'
import { NotificationType } from 'types/enums' import { NotificationType } from 'types/enums'
@ -69,6 +69,6 @@ export const UnlockingNotification = () => {
content={unlockedContent()} content={unlockedContent()}
showNotification showNotification
hideCloseBtn hideCloseBtn
></Notification> />
) )
} }

282
src/configs/devnet.ts Normal file
View File

@ -0,0 +1,282 @@
import { ChainInfoID } from '@marsprotocol/wallet-connector'
import atom from 'images/atom.svg'
import axl from 'images/axl.svg'
import axlusdc from 'images/axlusdc.svg'
import axlwbtc from 'images/axlwbtc.svg'
import axlweth from 'images/axlweth.svg'
import mars from 'images/mars.svg'
import osmo from 'images/osmo.svg'
import statom from 'images/statom.svg'
import colors from 'styles/_assets.module.scss'
const ASSETS: NetworkAssets = {
osmo: {
symbol: 'OSMO',
name: 'Osmosis',
id: 'OSMO',
denom: 'uosmo',
color: colors.osmo,
logo: osmo,
decimals: 6,
priceFeedId: '5867f5683c757393a0670ef0f701490950fe93fdb006d181c8265a831ac0c5c6',
},
axlusdc: {
symbol: 'USDC.axl',
name: 'Axelar USDC',
id: 'axlUSDC',
denom: 'ibc/D189335C6E4A68B513C10AB227BF1C1D38C746766278BA3EEB4FB14124F1D858',
color: colors.usdc,
decimals: 6,
logo: axlusdc,
priceFeedId: 'eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a',
},
axlwbtc: {
symbol: 'WBTC.axl',
id: 'axlWBTC',
name: 'Axelar Wrapped Bitcoin',
denom: 'ibc/D1542AA8762DB13087D8364F3EA6509FD6F009A34F00426AF9E4F9FA85CBBF1F',
color: colors.wbtc,
logo: axlwbtc,
decimals: 8,
priceFeedId: 'e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43',
},
axlweth: {
symbol: 'WETH.axl',
id: 'axlWETH',
name: 'Axelar Wrapped Ethereum',
denom: 'ibc/EA1D43981D5C9A1C4AAEA9C23BB1D4FA126BA9BC7020A25E0AE4AA841EA25DC5',
color: colors.weth,
logo: axlweth,
decimals: 18,
priceFeedId: 'ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace',
},
atom: {
symbol: 'ATOM',
name: 'Atom',
id: 'ATOM',
denom: 'ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2',
color: colors.atom,
logo: atom,
decimals: 6,
priceFeedId: 'b00b60f88b03a6a625a8d1c048c3f66653edf217439983d037e7222c4e612819',
},
axl: {
symbol: 'AXL',
name: 'Axelar',
id: 'AXL',
denom: 'ibc/903A61A498756EA560B85A85132D3AEE21B5DEDD41213725D22ABF276EA6945E',
color: colors.axl,
logo: axl,
decimals: 6,
priceFeedId: '60144b1d5c9e9851732ad1d9760e3485ef80be39b984f6bf60f82b28a2b7f126',
},
statom: {
symbol: 'stATOM',
name: 'Stride Atom',
id: 'stATOM',
denom: 'ibc/C140AFD542AE77BD7DCC83F13FDD8C5E5BB8C4929785E6EC2F4C636F98F17901',
color: colors.statom,
logo: statom,
decimals: 6,
},
}
const OTHER_ASSETS: { [denom: string]: OtherAsset } = {
mars: {
symbol: 'MARS',
name: 'Mars',
id: 'MARS',
denom: 'ibc/573FCD90FACEE750F55A8864EF7D38265F07E5A9273FA0E8DAFD39951332B580',
color: colors.mars,
logo: mars,
decimals: 6,
},
usd: {
symbol: '',
prefix: '$',
name: 'US Dollar',
denom: 'usd',
color: '',
logo: '',
decimals: 2,
},
}
export const NETWORK_CONFIG: NetworkConfig = {
name: ChainInfoID.OsmosisDevnet,
displayName: 'Osmosis Testnet',
hiveUrl: 'https://devnet-osmosis-gql.marsprotocol.io/graphql',
rpcUrl: 'https://rpc.devnet.osmosis.zone/',
restUrl: 'https://lcd.devnet.osmosis.zone/',
vaultAprUrl: 'https://api.marsprotocol.io/v1/vaults/osmosis',
usdPriceUrl: 'https://xc-mainnet.pyth.network/api/',
chainIcon: osmo,
contracts: {
redBank: 'osmo1c3ljch9dfw5kf52nfwpxd2zmj2ese7agnx0p9tenkrryasrle5sqf3ftpg',
incentives: 'osmo1nkahswfr8shg8rlxqwup0vgahp0dk4x8w6tkv3rra8rratnut36sk22vrm',
oracle: 'osmo1mhznfr60vjdp2gejhyv2gax9nvyyzhd3z0qcwseyetkfustjauzqycsy2g',
creditManager: 'osmo1f2m24wktq0sw3c0lexlg7fv4kngwyttvzws3a3r3al9ld2s2pvds87jqvf',
params: 'osmo1aye5qcer5n52crrkaf35jprsad2807q6kg3eeeu7k79h4slxfausfqhc9y',
accountNft: 'osmo1450hrg6dv2l58c0rvdwx8ec2a0r6dd50hn4frk370tpvqjhy8khqw7sw09',
},
assets: {
base: ASSETS.osmo,
whitelist: [
ASSETS.osmo,
ASSETS.atom,
ASSETS.axl,
ASSETS.axlusdc,
ASSETS.axlwbtc,
ASSETS.axlweth,
ASSETS.statom,
],
other: [OTHER_ASSETS.usd, OTHER_ASSETS.mars],
currencies: [
OTHER_ASSETS.usd,
ASSETS.osmo,
ASSETS.atom,
ASSETS.axl,
ASSETS.axlweth,
ASSETS.axlwbtc,
ASSETS.statom,
OTHER_ASSETS.mars,
],
},
displayCurrency: OTHER_ASSETS.usd,
appUrl: 'https://app.osmosis.zone',
isFieldsEnabled: true,
hasMultiAssetIncentives: true,
}
export const VAULT_CONFIGS: Vault[] = [
{
address: 'osmo1g3kmqpp8608szfp0pdag3r6z85npph7wmccat8lgl3mp407kv73qlj7qwp',
name: { name: 'OSMO-ATOM LP', unlockDuration: 14, unlockTimeframe: 'days' },
denoms: {
primary: 'uosmo',
secondary: 'ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2',
lpToken: 'gamm/pool/1',
},
symbols: {
primary: 'OSMO',
secondary: 'ATOM',
},
color: '#6f7390',
lockup: 86400 * 14,
provider: 'Apollo vault',
description: { maxLeverage: 3.7, lpName: 'OSMO-ATOM' },
ltv: {
max: 0.725,
contract: 0.73,
liq: 0.75,
},
apy: {
total: null,
vaultAddress: '',
},
},
{
address: 'osmo1jfmwayj8jqp9tfy4v4eks5c2jpnqdumn8x8xvfllng0wfes770qqp7jl4j',
name: { name: 'OSMO-USDC.axl LP', unlockDuration: 14, unlockTimeframe: 'days' },
denoms: {
primary: 'uosmo',
secondary: 'ibc/D189335C6E4A68B513C10AB227BF1C1D38C746766278BA3EEB4FB14124F1D858',
lpToken: 'gamm/pool/678',
},
symbols: {
primary: 'OSMO',
secondary: 'USDC.axl',
},
color: '#478edc',
lockup: 86400 * 14,
provider: 'Apollo vault',
description: { maxLeverage: 4, lpName: 'OSMO-USDC.axl' },
ltv: {
max: 0.745,
contract: 0.75,
liq: 0.77,
},
apy: {
total: null,
vaultAddress: '',
},
},
{
address: 'osmo1a6tcf60pyz8qq2n532dzcs7s7sj8klcmra04tvaqympzcvxqg9esn7xz7l',
name: { name: 'stATOM-ATOM', unlockDuration: 14, unlockTimeframe: 'days' },
denoms: {
primary: 'ibc/C140AFD542AE77BD7DCC83F13FDD8C5E5BB8C4929785E6EC2F4C636F98F17901',
secondary: 'ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2',
lpToken: 'gamm/pool/803',
},
symbols: {
primary: 'stATOM',
secondary: 'ATOM',
},
color: '#a446db',
lockup: 86400 * 14,
provider: 'Apollo vault',
description: { maxLeverage: 2.78, lpName: 'stATOM-ATOM' },
ltv: {
max: 0.635,
contract: 0.64,
liq: 0.65,
},
apy: {
total: null,
vaultAddress: '',
},
},
{
address: 'osmo185gqewrlde8vrqw7j8lpad67v8jfrx9u7770k9q87tqqecctp5tq50wt2c',
name: { name: 'OSMO-WBTC.axl', unlockDuration: 14, unlockTimeframe: 'days' },
denoms: {
primary: 'uosmo',
secondary: 'ibc/D1542AA8762DB13087D8364F3EA6509FD6F009A34F00426AF9E4F9FA85CBBF1F',
lpToken: 'gamm/pool/712',
},
symbols: {
primary: 'OSMO',
secondary: 'WBTC.axl',
},
color: colors.wbtc,
lockup: 86400 * 14,
provider: 'Apollo vault',
description: { maxLeverage: 4, lpName: 'OSMO-WBTC.axl' },
ltv: {
max: 0.745,
contract: 0.75,
liq: 0.77,
},
apy: {
total: null,
vaultAddress: '',
},
},
{
address: 'osmo1r235f4tdkwrsnj3mdm9hf647l754y6g6xsmz0nas5r4vr5tda3qsgtftef',
name: { name: 'OSMO-WETH.axl', unlockDuration: 14, unlockTimeframe: 'days' },
denoms: {
primary: 'uosmo',
secondary: 'ibc/EA1D43981D5C9A1C4AAEA9C23BB1D4FA126BA9BC7020A25E0AE4AA841EA25DC5',
lpToken: 'gamm/pool/704',
},
symbols: {
primary: 'OSMO',
secondary: 'WETH.axl',
},
color: colors.weth,
lockup: 86400 * 14,
provider: 'Apollo vault',
description: { maxLeverage: 4, lpName: 'OSMO-WETH.axl' },
ltv: {
max: 0.745,
contract: 0.75,
liq: 0.77,
},
apy: {
total: null,
vaultAddress: '',
},
},
]

View File

@ -1,167 +0,0 @@
import { ChainInfoID } from '@marsprotocol/wallet-connector'
import atom from 'images/atom.svg'
import axl from 'images/axl.svg'
import axlusdc from 'images/axlusdc.svg'
import mars from 'images/mars.svg'
import osmo from 'images/osmo.svg'
import colors from 'styles/_assets.module.scss'
const ASSETS: NetworkAssets = {
osmo: {
symbol: 'OSMO',
name: 'Osmosis',
id: 'OSMO',
denom: 'uosmo',
color: colors.osmo,
logo: osmo,
decimals: 6,
priceFeedId: '5867f5683c757393a0670ef0f701490950fe93fdb006d181c8265a831ac0c5c6',
},
atom: {
symbol: 'ATOM',
name: 'Atom',
id: 'ATOM',
denom: 'ibc/A8C2D23A1E6F95DA4E48BA349667E322BD7A6C996D8A4AAE8BA72E190F3D1477',
color: colors.atom,
logo: atom,
decimals: 6,
priceFeedId: 'b00b60f88b03a6a625a8d1c048c3f66653edf217439983d037e7222c4e612819',
},
axl: {
symbol: 'AXL',
name: 'Axelar',
id: 'AXL',
denom: 'ibc/4DAE26570FD24ABA40E2BE4137E39D946C78B00B248D3F78B0919567C4371156',
color: colors.axl,
logo: axl,
decimals: 6,
priceFeedId: '60144b1d5c9e9851732ad1d9760e3485ef80be39b984f6bf60f82b28a2b7f126',
},
axlusdc: {
symbol: 'USDC.axl',
name: 'Axelar USDC',
id: 'axlUSDC',
denom: 'ibc/6F34E1BD664C36CE49ACC28E60D62559A5F96C4F9A6CCE4FC5A67B2852E24CFE',
color: colors.usdc,
decimals: 6,
logo: axlusdc,
priceFeedId: 'eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a',
},
}
const OTHER_ASSETS: { [denom: string]: OtherAsset } = {
mars: {
symbol: 'MARS',
name: 'Mars',
id: 'MARS',
denom: 'ibc/2E7368A14AC9AB7870F32CFEA687551C5064FA861868EDF7437BC877358A81F9',
color: colors.mars,
logo: mars,
decimals: 6,
},
usd: {
symbol: '',
prefix: '$',
name: 'US Dollar',
denom: 'usd',
color: '',
logo: '',
decimals: 2,
},
}
export const NETWORK_CONFIG: NetworkConfig = {
name: ChainInfoID.OsmosisTestnet,
displayName: 'Osmosis Testnet',
hiveUrl:
process.env.NEXT_PUBLIC_OSMOSIS_TEST_GQL ??
'https://testnet-osmosis-node.marsprotocol.io/XF32UOOU55CX/osmosis-hive-front/graphql',
rpcUrl: process.env.NEXT_PUBLIC_OSMOSIS_TEST_RPC ?? 'https://rpc.osmotest5.osmosis.zone/',
restUrl: process.env.NEXT_PUBLIC_OSMOSIS_TEST_REST ?? 'https://lcd.osmotest5.osmosis.zone/',
apolloAprUrl: 'https://api.apollo.farm/api/vault_infos/v2/osmo-test-5',
usdPriceUrl: 'https://xc-mainnet.pyth.network/api/',
chainIcon: osmo,
contracts: {
redBank: 'osmo1dl4rylasnd7mtfzlkdqn2gr0ss4gvyykpvr6d7t5ylzf6z535n9s5jjt8u',
incentives: 'osmo1zyz57xf82963mcsgqu3hq5y0h9mrltm4ttq2qe5mjth9ezp3375qe0sm7d',
oracle: 'osmo1khe29uw3t85nmmp3mtr8dls7v2qwsfk3tndu5h4w5g2r5tzlz5qqarq2e2',
creditManager: 'osmo15ywk53ck3wp6tnqgedfd8cnfx7fuhz9dr583hw8scp0xjgw46m0sf3kyyp',
accountNft: 'osmo1ye2rntzz9qmxgv7eg09supww6k6xs0y0sekcr3x5clp087fymn4q3y33s4',
pyth: 'osmo12u2vqdecdte84kg6c3d40nwzjsya59hsj048n687m9q3t6wdmqgsq6zrlx',
},
assets: {
base: ASSETS.osmo,
whitelist: [ASSETS.osmo, ASSETS.atom, ASSETS.axl, ASSETS.axlusdc],
other: [OTHER_ASSETS.usd, OTHER_ASSETS.mars],
currencies: [
OTHER_ASSETS.usd,
ASSETS.osmo,
ASSETS.atom,
ASSETS.axl,
ASSETS.axlusdc,
OTHER_ASSETS.mars,
],
},
displayCurrency: OTHER_ASSETS.usd,
appUrl: 'https://testnet.osmosis.zone',
isFieldsEnabled: true,
}
export const VAULT_CONFIGS: Vault[] = [
{
address: 'osmo1m45ap4rq4m2mfjkcqu9ks9mxmyx2hvx0cdca9sjmrg46q7lghzqqhxxup5',
name: { name: 'OSMO-ATOM LP', unlockDuration: 1, unlockTimeframe: 'day' },
denoms: {
primary: 'uosmo',
secondary: 'ibc/A8C2D23A1E6F95DA4E48BA349667E322BD7A6C996D8A4AAE8BA72E190F3D1477',
lpToken: 'gamm/pool/12',
},
symbols: {
primary: 'OSMO',
secondary: 'ATOM',
},
color: colors.usdc,
lockup: 86400 * 1,
provider: 'Apollo vault',
description: { maxLeverage: 1.43, lpName: 'OSMO-ATOM' },
ltv: {
max: 0.295,
contract: 0.3,
liq: 0.4,
},
apy: {
apys: null,
fees: null,
total: null,
vaultAddress: '',
},
},
{
address: 'osmo14lu7m4ganxs20258dazafrjfaulmfxruq9n0r0th90gs46jk3tuqwfkqwn',
name: { name: 'OSMO-USDC.axl LP', unlockDuration: 7, unlockTimeframe: 'days' },
denoms: {
primary: 'uosmo',
secondary: 'ibc/6F34E1BD664C36CE49ACC28E60D62559A5F96C4F9A6CCE4FC5A67B2852E24CFE',
lpToken: 'gamm/pool/5',
},
symbols: {
primary: 'OSMO',
secondary: 'USDC.axl',
},
color: colors.usdc,
lockup: 86400 * 7,
provider: 'Apollo vault',
description: { maxLeverage: 1.43, lpName: 'OSMO-USDC.axl' },
ltv: {
max: 0.295,
contract: 0.3,
liq: 0.4,
},
apy: {
apys: null,
fees: null,
total: null,
vaultAddress: '',
},
},
]

View File

@ -107,10 +107,10 @@ export const NETWORK_CONFIG: NetworkConfig = {
displayName: 'Osmosis', displayName: 'Osmosis',
hiveUrl: hiveUrl:
process.env.NEXT_PUBLIC_OSMOSIS_GQL ?? process.env.NEXT_PUBLIC_OSMOSIS_GQL ??
'https://osmosis-node.marsprotocol.io/GGSFGSFGFG34/osmosis-hive-front/graphql', 'https://osmosis.rpc.p2p.world/4dqst8e8Cgd2HMb2HDNkimP7NIkcbjuk/hive/graphql',
rpcUrl: process.env.NEXT_PUBLIC_OSMOSIS_RPC ?? 'https://rpc-osmosis.blockapsis.com/', rpcUrl: process.env.NEXT_PUBLIC_OSMOSIS_RPC ?? 'https://rpc-osmosis.blockapsis.com/',
restUrl: process.env.NEXT_PUBLIC_OSMOSIS_REST ?? 'https://lcd-osmosis.blockapsis.com/', restUrl: process.env.NEXT_PUBLIC_OSMOSIS_REST ?? 'https://lcd-osmosis.blockapsis.com/',
apolloAprUrl: 'https://api.apollo.farm/api/vault_infos/v2/osmosis-1', vaultAprUrl: 'https://api.marsprotocol.io/v1/vaults/osmosis',
usdPriceUrl: 'https://xc-mainnet.pyth.network/api/', usdPriceUrl: 'https://xc-mainnet.pyth.network/api/',
chainIcon: osmo, chainIcon: osmo,
contracts: { contracts: {
@ -120,6 +120,7 @@ export const NETWORK_CONFIG: NetworkConfig = {
creditManager: 'osmo1f2m24wktq0sw3c0lexlg7fv4kngwyttvzws3a3r3al9ld2s2pvds87jqvf', creditManager: 'osmo1f2m24wktq0sw3c0lexlg7fv4kngwyttvzws3a3r3al9ld2s2pvds87jqvf',
accountNft: 'osmo1450hrg6dv2l58c0rvdwx8ec2a0r6dd50hn4frk370tpvqjhy8khqw7sw09', accountNft: 'osmo1450hrg6dv2l58c0rvdwx8ec2a0r6dd50hn4frk370tpvqjhy8khqw7sw09',
pyth: 'osmo13ge29x4e2s63a8ytz2px8gurtyznmue4a69n5275692v3qn3ks8q7cwck7', pyth: 'osmo13ge29x4e2s63a8ytz2px8gurtyznmue4a69n5275692v3qn3ks8q7cwck7',
params: 'osmo1nlmdxt9ctql2jr47qd4fpgzg84cjswxyw6q99u4y4u4q6c2f5ksq7ysent',
}, },
assets: { assets: {
base: ASSETS.osmo, base: ASSETS.osmo,
@ -147,6 +148,7 @@ export const NETWORK_CONFIG: NetworkConfig = {
displayCurrency: OTHER_ASSETS.usd, displayCurrency: OTHER_ASSETS.usd,
appUrl: 'https://app.osmosis.zone', appUrl: 'https://app.osmosis.zone',
isFieldsEnabled: true, isFieldsEnabled: true,
hasMultiAssetIncentives: true,
} }
export const VAULT_CONFIGS: Vault[] = [ export const VAULT_CONFIGS: Vault[] = [
@ -172,8 +174,6 @@ export const VAULT_CONFIGS: Vault[] = [
liq: 0.75, liq: 0.75,
}, },
apy: { apy: {
apys: null,
fees: null,
total: null, total: null,
vaultAddress: '', vaultAddress: '',
}, },
@ -200,8 +200,6 @@ export const VAULT_CONFIGS: Vault[] = [
liq: 0.77, liq: 0.77,
}, },
apy: { apy: {
apys: null,
fees: null,
total: null, total: null,
vaultAddress: '', vaultAddress: '',
}, },
@ -228,8 +226,6 @@ export const VAULT_CONFIGS: Vault[] = [
liq: 0.65, liq: 0.65,
}, },
apy: { apy: {
apys: null,
fees: null,
total: null, total: null,
vaultAddress: '', vaultAddress: '',
}, },
@ -256,8 +252,6 @@ export const VAULT_CONFIGS: Vault[] = [
liq: 0.77, liq: 0.77,
}, },
apy: { apy: {
apys: null,
fees: null,
total: null, total: null,
vaultAddress: '', vaultAddress: '',
}, },
@ -284,8 +278,6 @@ export const VAULT_CONFIGS: Vault[] = [
liq: 0.77, liq: 0.77,
}, },
apy: { apy: {
apys: null,
fees: null,
total: null, total: null,
vaultAddress: '', vaultAddress: '',
}, },

View File

@ -14,6 +14,8 @@ export const SWAP_THRESHOLD = 10
export const VAULT_DEPOSIT_BUFFER = 0.99 export const VAULT_DEPOSIT_BUFFER = 0.99
export const GAS_ADJUSTMENT = 1.3 export const GAS_ADJUSTMENT = 1.3
export const ITEM_LIMIT_PER_QUERY = 10
/* fields query keys */ /* fields query keys */
export const CONFIG = 'config' export const CONFIG = 'config'
export const STATE = 'state' export const STATE = 'state'
@ -38,6 +40,6 @@ export const TERMS_OF_SERVICE = 'termsOfService'
export const SUPPORTED_CHAINS: { chainId: ChainInfoID; type: 'testnet' | 'mainnet' }[] = [ export const SUPPORTED_CHAINS: { chainId: ChainInfoID; type: 'testnet' | 'mainnet' }[] = [
{ chainId: ChainInfoID.Osmosis1, type: 'mainnet' }, { chainId: ChainInfoID.Osmosis1, type: 'mainnet' },
{ chainId: ChainInfoID.Neutron, type: 'mainnet' }, { chainId: ChainInfoID.Neutron, type: 'mainnet' },
{ chainId: ChainInfoID.OsmosisTestnet, type: 'testnet' }, { chainId: ChainInfoID.OsmosisDevnet, type: 'testnet' },
{ chainId: ChainInfoID.NeutronTestnet, type: 'testnet' }, { chainId: ChainInfoID.NeutronTestnet, type: 'testnet' },
] ]

View File

@ -22,8 +22,6 @@ export const DEFAULT_POSITION: Position = {
net: 0, net: 0,
}, },
apy: { apy: {
apys: null,
fees: null,
total: 19, total: 19,
borrow: 5.2, borrow: 5.2,
net: 13.8, net: 13.8,

View File

@ -7,6 +7,7 @@ export const getClosePositionActions = (
primaryToSecondaryRate: number, primaryToSecondaryRate: number,
slippage: number, slippage: number,
whitelistedAssets: Asset[], whitelistedAssets: Asset[],
isV2: boolean,
): Action[] => { ): Action[] => {
const swapMessage: Action[] = [] const swapMessage: Action[] = []
@ -56,6 +57,40 @@ export const getClosePositionActions = (
}) })
} }
const withdrawLiquidity = isV2
? {
withdraw_liquidity: {
slippage: slippage.toString(),
lp_token: {
amount: 'account_balance' as ActionAmount,
denom: vault.denoms.lpToken,
},
},
}
: {
withdraw_liquidity: {
lp_token: {
amount: 'account_balance' as ActionAmount,
denom: vault.denoms.lpToken,
},
},
}
const repay = isV2
? {
repay: {
coin: {
denom: vault.position.borrowDenom || vault.denoms.secondary,
amount: 'account_balance' as ActionAmount,
},
},
}
: {
repay: {
denom: vault.position.borrowDenom || vault.denoms.secondary,
amount: 'account_balance' as ActionAmount,
},
}
return [ return [
{ {
exit_vault_unlocked: { exit_vault_unlocked: {
@ -65,24 +100,10 @@ export const getClosePositionActions = (
}, },
}, },
}, },
{ withdrawLiquidity,
withdraw_liquidity: {
lp_token: {
amount: 'account_balance',
denom: vault.denoms.lpToken,
},
},
},
...swapMessage, ...swapMessage,
...(Math.max(vault.position.amounts.borrowedPrimary, vault.position.amounts.borrowedSecondary) ...(Math.max(vault.position.amounts.borrowedPrimary, vault.position.amounts.borrowedSecondary)
? [ ? [repay]
{
repay: {
denom: vault.position.borrowDenom || vault.denoms.secondary,
amount: 'account_balance' as ActionAmount,
},
},
]
: []), : []),
{ refund_all_coin_balances: {} }, { refund_all_coin_balances: {} },
] ]

View File

@ -2,18 +2,29 @@ import { Action, Coin } from 'types/generated/mars-credit-manager/MarsCreditMana
import { orderCoinsByDenom } from './orderCoinsByDenom' import { orderCoinsByDenom } from './orderCoinsByDenom'
export const getRepayActionsAndFunds = (coin: Coin): [Action[], Coin[]] => { export const getRepayActionsAndFunds = (coin: Coin, isV2: boolean): [Action[], Coin[]] => {
const repay = isV2
? {
repay: {
coin: {
denom: coin.denom,
amount: { exact: coin.amount },
},
},
}
: {
repay: {
denom: coin.denom,
amount: { exact: coin.amount },
},
}
return [ return [
[ [
{ {
deposit: coin, deposit: coin,
}, },
{ repay,
repay: {
denom: coin.denom,
amount: { exact: coin.amount },
},
},
], ],
orderCoinsByDenom([coin]), orderCoinsByDenom([coin]),
] ]

View File

@ -14,7 +14,7 @@ export const getSwapUrl = (options: Options) => {
if (!chain) return '#' if (!chain) return '#'
if (chain === ChainInfoID.Osmosis1 || chain === ChainInfoID.OsmosisTestnet) { if (chain === ChainInfoID.Osmosis1 || chain === ChainInfoID.OsmosisDevnet) {
fromName = from.id fromName = from.id
toName = to.id toName = to.id

View File

@ -4,6 +4,7 @@ export { findByDenom } from './findByDenom'
export { formatToValueSymbol } from './formatToValueSymbol' export { formatToValueSymbol } from './formatToValueSymbol'
export { getFeeFromResponse } from './getFeeFromResponse' export { getFeeFromResponse } from './getFeeFromResponse'
export { getSwapUrl } from './getSwapUrl' export { getSwapUrl } from './getSwapUrl'
export { iterateContractQuery } from './iterateContractQuery'
export { updateAssetPrices } from './updateAssetPrices' export { updateAssetPrices } from './updateAssetPrices'
export { updateExchangeRate } from './updateExchangeRate' export { updateExchangeRate } from './updateExchangeRate'
// @endindex // @endindex

View File

@ -0,0 +1,36 @@
import { ITEM_LIMIT_PER_QUERY } from 'constants/appConstants'
interface KeyProperties {
denom?: string
addr?: string
}
type Query<T> = ({
limit,
startAfter,
}: {
limit?: number | undefined
startAfter?: string | undefined
}) => Promise<T[]>
export async function iterateContractQuery<T extends KeyProperties>(
query: Query<T>,
keyProperty: keyof KeyProperties = 'denom',
previousResults?: T[],
): Promise<T[]> {
const lastItem = previousResults && previousResults.at(-1)
const lastItemKey = lastItem && lastItem[keyProperty]
const params = {
limit: ITEM_LIMIT_PER_QUERY,
startAfter: lastItemKey,
}
const results = await query(params)
const accumulated = (previousResults ?? []).concat(results)
if (results.length < ITEM_LIMIT_PER_QUERY) {
return accumulated
}
return await iterateContractQuery(query, keyProperty, accumulated)
}

View File

@ -1,4 +1,5 @@
// @index(['./*.tsx'], f => `export { ${f.name} } from '${f.path}'`) // @index(['./*.tsx'], f => `export { ${f.name} } from '${f.path}'`)
export { useAssetParams } from './useAssetParams'
export { useBlockHeight } from './useBlockHeight' export { useBlockHeight } from './useBlockHeight'
export { useClosePosition } from './useClosePosition' export { useClosePosition } from './useClosePosition'
export { useDepositAndDebt } from './useDepositAndDebt' export { useDepositAndDebt } from './useDepositAndDebt'
@ -18,4 +19,5 @@ export { useUserBalance } from './useUserBalance'
export { useUserCollaterals } from './useUserCollaterals' export { useUserCollaterals } from './useUserCollaterals'
export { useUserDebt } from './useUserDebt' export { useUserDebt } from './useUserDebt'
export { useUserIcns } from './useUserIcns' export { useUserIcns } from './useUserIcns'
export { useVaultParams } from './useVaultParams'
// @endindex // @endindex

View File

@ -0,0 +1,23 @@
import { useQuery } from '@tanstack/react-query'
import { iterateContractQuery } from 'functions'
import useStore from 'store'
import { QUERY_KEYS } from 'types/enums/queryKeys'
export const useAssetParams = () => {
const paramsContract = useStore((s) => s.networkConfig.contracts.params)
const paramsClient = useStore((s) => s.paramsClient)
return useQuery(
[QUERY_KEYS.ASSET_PARAMS],
async () => {
if (!paramsClient) return []
const params = await iterateContractQuery(paramsClient.allAssetParams)
useStore.setState({ assetParams: params })
return params
},
{
enabled: (!!paramsContract && !!paramsClient) || !paramsContract,
},
)
}

View File

@ -13,6 +13,8 @@ export const useClosePosition = (props: Props) => {
const getExchangeRate = useStore((s) => s.getExchangeRate) const getExchangeRate = useStore((s) => s.getExchangeRate)
const slippage = useStore((s) => s.slippage) const slippage = useStore((s) => s.slippage)
const whitelistedAssets = useStore((s) => s.whitelistedAssets) const whitelistedAssets = useStore((s) => s.whitelistedAssets)
const networkConfig = useStore((s) => s.networkConfig)
const isV2 = !!networkConfig.contracts?.params
const actions = useMemo(() => { const actions = useMemo(() => {
if (!props.activeVault) return [] if (!props.activeVault) return []
@ -25,8 +27,9 @@ export const useClosePosition = (props: Props) => {
primaryToSecondaryRate, primaryToSecondaryRate,
slippage, slippage,
whitelistedAssets, whitelistedAssets,
isV2,
) )
}, [props.activeVault, getExchangeRate, slippage]) }, [isV2, props.activeVault, getExchangeRate, slippage, whitelistedAssets])
const { data: fee } = useEstimateFarmFee({ const { data: fee } = useEstimateFarmFee({
accountId: props.activeVault?.position.accountId, accountId: props.activeVault?.position.accountId,

View File

@ -1,12 +1,12 @@
import BigNumber from 'bignumber.js' import BigNumber from 'bignumber.js'
import { SWAP_THRESHOLD } from 'constants/appConstants' import { SWAP_THRESHOLD } from 'constants/appConstants'
import { coinsToActionCoins, orderCoinsByDenom } from 'functions/fields' import { coinsToActionCoins, orderCoinsByDenom } from 'functions/fields'
import { useProvideLiquidity } from 'hooks/queries'
import { useMemo } from 'react' import { useMemo } from 'react'
import useStore from 'store' import useStore from 'store'
import { Action, Coin } from 'types/generated/mars-credit-manager/MarsCreditManager.types' import { Action, Coin } from 'types/generated/mars-credit-manager/MarsCreditManager.types'
import { useEstimateFarmFee } from './useEstimateFarmFee' import { useEstimateFarmFee } from './useEstimateFarmFee'
import { useProvideLiquidity } from './useProvideLiquidity'
interface Props { interface Props {
accountId?: null | string accountId?: null | string
@ -18,6 +18,8 @@ interface Props {
} }
export const useEditPosition = (props: Props) => { export const useEditPosition = (props: Props) => {
const networkConfig = useStore((s) => s.networkConfig)
const isV2 = !!networkConfig.contracts?.params
const convertToBaseCurrency = useStore((s) => s.convertToBaseCurrency) const convertToBaseCurrency = useStore((s) => s.convertToBaseCurrency)
const convertValueToAmount = useStore((s) => s.convertValueToAmount) const convertValueToAmount = useStore((s) => s.convertValueToAmount)
const slippage = useStore((s) => s.slippage) const slippage = useStore((s) => s.slippage)
@ -122,7 +124,7 @@ export const useEditPosition = (props: Props) => {
}) })
const { actions, funds } = useMemo<{ actions: Action[]; funds: Coin[] }>(() => { const { actions, funds } = useMemo<{ actions: Action[]; funds: Coin[] }>(() => {
if (!minLpToReceive || props.isReducingPosition) return { actions: [], funds: [] } if ((!isV2 && !minLpToReceive) || props.isReducingPosition) return { actions: [], funds: [] }
const coins: { supply: Coin[]; borrow?: Coin } = { supply: [], borrow: undefined } const coins: { supply: Coin[]; borrow?: Coin } = { supply: [], borrow: undefined }
@ -194,11 +196,27 @@ export const useEditPosition = (props: Props) => {
} }
BigNumber.config({ EXPONENTIAL_AT: [-7, 30] }) BigNumber.config({ EXPONENTIAL_AT: [-7, 30] })
const minimumReceive = new BigNumber(minLpToReceive) const minimumReceive = new BigNumber(isV2 || !minLpToReceive ? 0 : minLpToReceive)
.times(1 - slippage) .times(1 - slippage)
.integerValue(BigNumber.ROUND_CEIL) .integerValue(BigNumber.ROUND_CEIL)
.toString() .toString()
const provideLiquidity = isV2
? {
provide_liquidity: {
coins_in: coinsToActionCoins(coinsAfterSwap),
lp_token_out: props.vault?.denoms.lpToken || '',
slippage: slippage.toString(),
},
}
: {
provide_liquidity: {
coins_in: coinsToActionCoins(coinsAfterSwap),
lp_token_out: props.vault?.denoms.lpToken || '',
minimum_receive: minimumReceive,
},
}
const actions: Action[] = [ const actions: Action[] = [
...(coins.supply[0] ...(coins.supply[0]
? [ ? [
@ -210,13 +228,7 @@ export const useEditPosition = (props: Props) => {
...(coins.supply[1] ? [{ deposit: coins.supply[1] }] : []), ...(coins.supply[1] ? [{ deposit: coins.supply[1] }] : []),
...(coins.borrow ? [{ borrow: coins.borrow }] : []), ...(coins.borrow ? [{ borrow: coins.borrow }] : []),
...swapMessage, ...swapMessage,
{ provideLiquidity,
provide_liquidity: {
coins_in: coinsToActionCoins(coinsAfterSwap),
lp_token_out: props.vault?.denoms.lpToken || '',
minimum_receive: minimumReceive,
},
},
{ {
enter_vault: { enter_vault: {
coin: { coin: {
@ -236,11 +248,12 @@ export const useEditPosition = (props: Props) => {
} }
}, [ }, [
editPosition, editPosition,
minLpToReceive,
props.vault, props.vault,
coinsAfterSwap, coinsAfterSwap,
convertToBaseCurrency, convertToBaseCurrency,
convertValueToAmount, convertValueToAmount,
minLpToReceive,
isV2,
slippage, slippage,
props.isReducingPosition, props.isReducingPosition,
]) ])

View File

@ -1,6 +1,7 @@
import { useQuery } from '@tanstack/react-query' import { useQuery } from '@tanstack/react-query'
import { getRedbankQuery } from 'functions/queries' import { getRedbankQuery } from 'functions/queries'
import { gql, request } from 'graphql-request' import { gql, request } from 'graphql-request'
import { useAssetParams } from 'hooks/queries'
import useStore from 'store' import useStore from 'store'
import { State } from 'types/enums' import { State } from 'types/enums'
import { QUERY_KEYS } from 'types/enums/queryKeys' import { QUERY_KEYS } from 'types/enums/queryKeys'
@ -11,7 +12,7 @@ export const useRedBank = () => {
const whitelistedAssets = useStore((s) => s.whitelistedAssets) const whitelistedAssets = useStore((s) => s.whitelistedAssets)
const processRedBankQuery = useStore((s) => s.processRedBankQuery) const processRedBankQuery = useStore((s) => s.processRedBankQuery)
const setRedBankState = useStore((s) => s.setRedBankState) const setRedBankState = useStore((s) => s.setRedBankState)
const { data: assetParams, isLoading } = useAssetParams()
const hiveUrl = networkConfig.hiveUrl const hiveUrl = networkConfig.hiveUrl
const redbankAddress = networkConfig.contracts.redBank const redbankAddress = networkConfig.contracts.redBank
const incentivesAddress = networkConfig.contracts.incentives const incentivesAddress = networkConfig.contracts.incentives
@ -19,8 +20,8 @@ export const useRedBank = () => {
useQuery<RedBankData>( useQuery<RedBankData>(
[QUERY_KEYS.REDBANK], [QUERY_KEYS.REDBANK],
async () => async () => {
await request( return await request(
hiveUrl!, hiveUrl!,
gql` gql`
${getRedbankQuery( ${getRedbankQuery(
@ -31,14 +32,15 @@ export const useRedBank = () => {
whitelistedAssets, whitelistedAssets,
)} )}
`, `,
), )
},
{ {
enabled: !!userWalletAddress && !!whitelistedAssets?.length, enabled: !!userWalletAddress && !!whitelistedAssets?.length && !!assetParams && !isLoading,
staleTime: 30000, staleTime: 30000,
refetchInterval: 30000, refetchInterval: 30000,
onError: () => setRedBankState(State.ERROR), onError: () => setRedBankState(State.ERROR),
onSuccess: (data) => { onSuccess: (data) => {
processRedBankQuery(data, whitelistedAssets!) processRedBankQuery(data, whitelistedAssets!, assetParams || [])
}, },
}, },
) )

View File

@ -1,5 +1,6 @@
import { getRepayActionsAndFunds, orderCoinsByDenom } from 'functions/fields' import { getRepayActionsAndFunds, orderCoinsByDenom } from 'functions/fields'
import { useEffect, useMemo, useState } from 'react' import { useEffect, useMemo, useState } from 'react'
import useStore from 'store'
import { useEstimateFarmFee } from './useEstimateFarmFee' import { useEstimateFarmFee } from './useEstimateFarmFee'
@ -12,6 +13,8 @@ interface Props {
export const useRepayPosition = (props: Props) => { export const useRepayPosition = (props: Props) => {
const [amount, setAmount] = useState(0) const [amount, setAmount] = useState(0)
const networkConfig = useStore((s) => s.networkConfig)
const isV2 = !!networkConfig.contracts?.params
useEffect(() => { useEffect(() => {
const borrowKey = const borrowKey =
@ -32,11 +35,14 @@ export const useRepayPosition = (props: Props) => {
const [actions, funds] = useMemo(() => { const [actions, funds] = useMemo(() => {
if (!amount) return [[], []] if (!amount) return [[], []]
return getRepayActionsAndFunds({ return getRepayActionsAndFunds(
{
denom: props.activeVault.position.borrowDenom || props.activeVault.denoms.secondary, denom: props.activeVault.position.borrowDenom || props.activeVault.denoms.secondary,
amount: amount.toString(), amount: amount.toString(),
}) },
}, [amount, props.activeVault.denoms.secondary, props.activeVault.position.borrowDenom]) isV2,
)
}, [isV2, amount, props.activeVault.denoms.secondary, props.activeVault.position.borrowDenom])
const { data: fee } = useEstimateFarmFee({ const { data: fee } = useEstimateFarmFee({
accountId: props.prevPosition.accountId, accountId: props.prevPosition.accountId,

View File

@ -0,0 +1,20 @@
import { useQuery } from '@tanstack/react-query'
import { iterateContractQuery } from 'functions'
import useStore from 'store'
import { QUERY_KEYS } from 'types/enums/queryKeys'
export const useVaultParams = () => {
const paramsClient = useStore((s) => s.paramsClient)
return useQuery(
[QUERY_KEYS.VAULT_PARAMS],
async () => {
if (!paramsClient) return []
return await iterateContractQuery(paramsClient.allVaultConfigs)
},
{
enabled: !!paramsClient,
initialData: [],
},
)
}

View File

@ -17,7 +17,7 @@ export const getCurrentChainId = () => {
break break
case 'testnet-osmosis': case 'testnet-osmosis':
chainId = ChainInfoID.OsmosisTestnet chainId = ChainInfoID.OsmosisDevnet
break break
case 'testnet-neutron': case 'testnet-neutron':

View File

@ -1,11 +1,11 @@
import {
NETWORK_CONFIG as osmosisDevnetConfig,
VAULT_CONFIGS as osmosisDevnetVaultConfig,
} from '../configs/devnet'
import { import {
NETWORK_CONFIG as neutronMainnetConfig, NETWORK_CONFIG as neutronMainnetConfig,
VAULT_CONFIGS as neutronMainnetVaultConfig, VAULT_CONFIGS as neutronMainnetVaultConfig,
} from '../configs/neutron-1' } from '../configs/neutron-1'
import {
NETWORK_CONFIG as osmosisTestnetConfig,
VAULT_CONFIGS as osmosisTestnetVaultConfig,
} from '../configs/osmo-test-5'
import { import {
NETWORK_CONFIG as osmosisMainnetConfig, NETWORK_CONFIG as osmosisMainnetConfig,
VAULT_CONFIGS as osmosisMainnetVaultConfig, VAULT_CONFIGS as osmosisMainnetVaultConfig,
@ -23,8 +23,8 @@ export const getNetworkConfig = (network: string): NetworkConfig => {
networkConfig = neutronMainnetConfig networkConfig = neutronMainnetConfig
break break
case 'osmo-test-5': case 'devnet':
networkConfig = osmosisTestnetConfig networkConfig = osmosisDevnetConfig
break break
case 'pion-1': case 'pion-1':
@ -46,8 +46,8 @@ export const getNetworkVaultConfig = (network: string): Vault[] => {
vaultConfig = neutronMainnetVaultConfig vaultConfig = neutronMainnetVaultConfig
break break
case 'osmo-test-5': case 'devnet':
vaultConfig = osmosisTestnetVaultConfig vaultConfig = osmosisDevnetVaultConfig
break break
case 'pion-1': case 'pion-1':

View File

@ -22,8 +22,6 @@ export const position: Position = {
net: 0, net: 0,
}, },
apy: { apy: {
apys: null,
fees: null,
total: 19, total: 19,
borrow: 5.2, borrow: 5.2,
net: 13.8, net: 13.8,

View File

@ -1,8 +1,6 @@
export const vault: Vault = { export const vault: Vault = {
address: 'test', address: 'test',
apy: { apy: {
apys: null,
fees: null,
total: null, total: null,
vaultAddress: '', vaultAddress: '',
}, },

View File

@ -10,6 +10,8 @@ import { BlockHeightData } from 'hooks/queries/useBlockHeight'
import { DepositAndDebtData } from 'hooks/queries/useDepositAndDebt' import { DepositAndDebtData } from 'hooks/queries/useDepositAndDebt'
import { UserBalanceData } from 'hooks/queries/useUserBalance' import { UserBalanceData } from 'hooks/queries/useUserBalance'
import { UserIcnsData } from 'hooks/queries/useUserIcns' import { UserIcnsData } from 'hooks/queries/useUserIcns'
import { MarsParamsQueryClient } from 'types/generated/mars-params/MarsParams.client'
import { AssetParamsBaseForAddr } from 'types/generated/mars-params/MarsParams.types'
import { ContractMsg } from 'types/types' import { ContractMsg } from 'types/types'
export interface CommonSlice { export interface CommonSlice {
@ -17,6 +19,7 @@ export interface CommonSlice {
// VARIABLES // VARIABLES
// ------------------ // ------------------
addressProviderConfig?: AddressProviderConfig addressProviderConfig?: AddressProviderConfig
assetParams: AssetParamsBaseForAddr[]
baseAsset?: Asset baseAsset?: Asset
basecampConfig?: BasecampConfig basecampConfig?: BasecampConfig
baseCurrency: { baseCurrency: {
@ -41,6 +44,7 @@ export interface CommonSlice {
marketDeposits: Coin[] marketDeposits: Coin[]
networkConfig: NetworkConfig networkConfig: NetworkConfig
otherAssets: OtherAsset[] otherAssets: OtherAsset[]
paramsClient?: MarsParamsQueryClient
queryErrors: string[] queryErrors: string[]
acceptedTermsOfService: boolean acceptedTermsOfService: boolean
slippage: number slippage: number
@ -64,7 +68,6 @@ export interface CommonSlice {
fee: StdFee fee: StdFee
sender?: string sender?: string
}) => Promise<TxBroadcastResult | undefined> }) => Promise<TxBroadcastResult | undefined>
getAdditionalDecimals(denom: string): number
loadNetworkConfig: () => void loadNetworkConfig: () => void
queryContract: <T>( queryContract: <T>(
contractAddress: string, contractAddress: string,
@ -73,9 +76,9 @@ export interface CommonSlice {
ignoreFailures?: boolean, ignoreFailures?: boolean,
) => Promise<T | undefined> ) => Promise<T | undefined>
// ------------------ // ------------------
// SETTERS
// ------------------
setChainInfo: (chainInfo: SimplifiedChainInfo) => void setChainInfo: (chainInfo: SimplifiedChainInfo) => void
// ------------------
// SETTERS
setCurrentNetwork: (network: ChainInfoID) => void setCurrentNetwork: (network: ChainInfoID) => void
setTutorialStep: (type: 'fields' | 'redbank', step?: number) => void setTutorialStep: (type: 'fields' | 'redbank', step?: number) => void
setLcdClient: (rpc: string, chainId: string) => void setLcdClient: (rpc: string, chainId: string) => void
@ -83,13 +86,15 @@ export interface CommonSlice {
setQueryError: (name: string, isError: boolean) => void setQueryError: (name: string, isError: boolean) => void
setServerError: (isError: boolean) => void setServerError: (isError: boolean) => void
// ------------------ // ------------------
// QUERY RELATED
// ------------------
previousBlockHeightQueryData?: BlockHeightData previousBlockHeightQueryData?: BlockHeightData
// ------------------
// QUERY RELATED
previousUserBalanceQueryData?: UserBalanceData previousUserBalanceQueryData?: UserBalanceData
previousUserIcnsQueryData?: UserIcnsData previousUserIcnsQueryData?: UserIcnsData
previousUserUnclaimedBalanceQueryData?: number previousUserUnclaimedBalanceQueryData?: number
processDepositAndDebtQuery: (data: DepositAndDebtData) => void processDepositAndDebtQuery: (data: DepositAndDebtData) => void
processUserBalanceQuery: (data: UserBalanceData) => void processUserBalanceQuery: (data: UserBalanceData) => void
processBlockHeightQuery: (data: BlockHeightData) => void processBlockHeightQuery: (data: BlockHeightData) => void
getAdditionalDecimals(denom: string): number
} }

View File

@ -1,5 +1,6 @@
import { Coin } from '@cosmjs/stargate' import { Coin } from '@cosmjs/stargate'
import { State } from 'types/enums' import { State } from 'types/enums'
import { AssetParamsBaseForAddr } from 'types/generated/mars-params/MarsParams.types'
export interface RedBankSlice { export interface RedBankSlice {
// ------------------ // ------------------
@ -35,5 +36,9 @@ export interface RedBankSlice {
// QUERY RELATED // QUERY RELATED
// ------------------ // ------------------
previousRedBankQueryData?: RedBankData previousRedBankQueryData?: RedBankData
processRedBankQuery: (data: RedBankData, whitelistedAssets: Asset[]) => void processRedBankQuery: (
data: RedBankData,
whitelistedAssets: Asset[],
assetParams: AssetParamsBaseForAddr[],
) => void
} }

View File

@ -28,6 +28,7 @@ const commonSlice = (
// ------------------ // ------------------
// VARIABLES // VARIABLES
// ------------------ // ------------------
assetParams: [],
baseCurrency: { baseCurrency: {
denom: 'uosmo', denom: 'uosmo',
symbol: 'OSMO', symbol: 'OSMO',
@ -198,8 +199,7 @@ const commonSlice = (
const lcdClient = get().lcdClient const lcdClient = get().lcdClient
if (!lcdClient) return if (!lcdClient) return
try { try {
const res = await lcdClient.get(contractAddress, queryMsg) return await lcdClient.get(contractAddress, queryMsg)
return res
} catch (exception: any) { } catch (exception: any) {
} finally { } finally {
attempts += 1 attempts += 1

View File

@ -9,6 +9,7 @@ import { RedBankSlice } from 'store/interfaces/redBank.interface'
import { Store } from 'store/interfaces/store.interface' import { Store } from 'store/interfaces/store.interface'
import colors from 'styles/_assets.module.scss' import colors from 'styles/_assets.module.scss'
import { State } from 'types/enums' import { State } from 'types/enums'
import { AssetParamsBaseForAddr } from 'types/generated/mars-params/MarsParams.types'
import { GetState } from 'zustand' import { GetState } from 'zustand'
import { NamedSet } from 'zustand/middleware' import { NamedSet } from 'zustand/middleware'
@ -30,7 +31,7 @@ const redBankSlice = (set: NamedSet<Store>, get: GetState<Store>): RedBankSlice
const convertToBaseCurrency = get().convertToBaseCurrency const convertToBaseCurrency = get().convertToBaseCurrency
if (!incentives?.length || !marketTotalLiquidity || !assets || !convertToBaseCurrency) return if (!incentives?.length || !marketTotalLiquidity || !assets || !convertToBaseCurrency) return
const incentiveAssetsInfo = incentives.map((incentive: MarketIncentive) => { return incentives.map((incentive: MarketIncentive) => {
const incentiveAsset = findAssetByDenom(incentive.denom, assets) const incentiveAsset = findAssetByDenom(incentive.denom, assets)
if (!incentiveAsset) if (!incentiveAsset)
return { return {
@ -61,8 +62,6 @@ const redBankSlice = (set: NamedSet<Store>, get: GetState<Store>): RedBankSlice
apy: incentiveApr * 100, apy: incentiveApr * 100,
} }
}) })
return incentiveAssetsInfo
}, },
computeMarketLiquidity: (denom: string) => { computeMarketLiquidity: (denom: string) => {
return Number(get().marketAssetLiquidity.find((asset) => asset.denom === denom)?.amount) || 0 return Number(get().marketAssetLiquidity.find((asset) => asset.denom === denom)?.amount) || 0
@ -128,8 +127,8 @@ const redBankSlice = (set: NamedSet<Store>, get: GetState<Store>): RedBankSlice
incentiveInfo, incentiveInfo,
isCollateral: true, isCollateral: true,
depositCap: depositCap, depositCap: depositCap,
borrowEnabled: marketInfo?.borrow_enabled ?? false, borrowEnabled: !!marketInfo?.borrow_enabled,
depositEnabled: marketInfo?.deposit_enabled ?? false, depositEnabled: !!marketInfo?.deposit_enabled,
} }
redBankAsset.subRows = [{ ...redBankAsset }] redBankAsset.subRows = [{ ...redBankAsset }]
redBankAssets.push(redBankAsset) redBankAssets.push(redBankAsset)
@ -147,7 +146,11 @@ const redBankSlice = (set: NamedSet<Store>, get: GetState<Store>): RedBankSlice
// ------------------ // ------------------
// QUERY RELATED // QUERY RELATED
// ------------------ // ------------------
processRedBankQuery: (data: RedBankData, whitelistedAssets: Asset[]) => { processRedBankQuery: (
data: RedBankData,
whitelistedAssets: Asset[],
assetParams: AssetParamsBaseForAddr[],
) => {
if (isEqual(data, get().previousRedBankQueryData) && get().marketInfo.length) return if (isEqual(data, get().previousRedBankQueryData) && get().marketInfo.length) return
const marketInfo: Market[] = [] const marketInfo: Market[] = []
@ -158,16 +161,26 @@ const redBankSlice = (set: NamedSet<Store>, get: GetState<Store>): RedBankSlice
const denom = asset.denom const denom = asset.denom
const id = asset.id const id = asset.id
const queryResult = data.rbwasmkey const queryResult = data.rbwasmkey
const marketData: Market = { const marketData: Market = {
...queryResult[`${id}Market`], ...queryResult[`${id}Market`],
denom: denom, denom: denom,
incentives: [], incentives: [],
} }
const assetParam = assetParams.find((param) => param.denom === denom)
if (assetParam) {
marketData.borrow_enabled = assetParam.red_bank.borrow_enabled
marketData.deposit_enabled = assetParam.red_bank.deposit_enabled
marketData.max_loan_to_value = assetParam.max_loan_to_value
marketData.liquidation_threshold = assetParam.liquidation_threshold
marketData.deposit_cap = assetParam.deposit_cap
}
if (hasMultiAssetIncentives) { if (hasMultiAssetIncentives) {
const marketIncentiveData = queryResult[ const marketIncentiveData =
`${id}MarketIncentive` (queryResult[`${id}MarketIncentive`] as MultiAssetMarketIncentive[]) ?? []
] as MultiAssetMarketIncentive[]
marketIncentiveData.forEach((incentive) => { marketIncentiveData.forEach((incentive) => {
marketData.incentives.push({ marketData.incentives.push({
denom: incentive.denom, denom: incentive.denom,

View File

@ -1,5 +1,5 @@
import BigNumber from 'bignumber.js' import BigNumber from 'bignumber.js'
import { findByDenom } from 'functions' import { findByDenom, iterateContractQuery } from 'functions'
import { getAmountsFromActiveVault, getLeverageFromValues } from 'functions/fields' import { getAmountsFromActiveVault, getLeverageFromValues } from 'functions/fields'
import { convertAprToApy, demagnify, leverageToLtv, magnify } from 'libs/parse' import { convertAprToApy, demagnify, leverageToLtv, magnify } from 'libs/parse'
import moment from 'moment' import moment from 'moment'
@ -7,11 +7,12 @@ import { Store } from 'store/interfaces/store.interface'
import { Options, VaultsSlice } from 'store/interfaces/vaults.interface.' import { Options, VaultsSlice } from 'store/interfaces/vaults.interface.'
import { VaultClient } from 'types/classes' import { VaultClient } from 'types/classes'
import { import {
ArrayOfVaultInfoResponse,
LockingVaultAmount, LockingVaultAmount,
Positions, Positions,
VaultBaseForString,
VaultUtilizationResponse,
} from 'types/generated/mars-credit-manager/MarsCreditManager.types' } from 'types/generated/mars-credit-manager/MarsCreditManager.types'
import { VaultBaseForString } from 'types/generated/mars-mock-credit-manager/MarsMockCreditManager.types' import { ArrayOfVaultInfoResponse } from 'types/generated/mars-mock-credit-manager/MarsMockCreditManager.types'
import { GetState } from 'zustand' import { GetState } from 'zustand'
import { NamedSet } from 'zustand/middleware' import { NamedSet } from 'zustand/middleware'
@ -163,39 +164,25 @@ export const vaultsSlice = (set: NamedSet<Store>, get: GetState<Store>): VaultsS
const vaultAddresses = get().vaultConfigs.map((vault) => vault.address) const vaultAddresses = get().vaultConfigs.map((vault) => vault.address)
const networkConfig = get().networkConfig const networkConfig = get().networkConfig
if (!networkConfig.apolloAprUrl) return null if (!networkConfig.vaultAprUrl) return null
try { try {
const response = await fetch(networkConfig.apolloAprUrl) const response = await fetch(networkConfig.vaultAprUrl)
if (response.ok) { if (response.ok) {
const data: ApolloAprResponse[] = await response.json() const data: AprResponse = await response.json()
const filteredData = data.filter((aprData) => const filteredData = data.vaults.filter((aprData) =>
vaultAddresses.includes(aprData.contract_address), vaultAddresses.includes(aprData.address),
) )
const newApys: ApyBreakdown[] = filteredData.map((aprData) => { const newApys: ApyBreakdown[] = filteredData.map((aprData) => {
const aprTotal = aprData.apr.aprs.reduce((prev, curr) => Number(curr.value) + prev, 0) const aprTotal = aprData.apr.projected_apr * 100
const feeTotal = aprData.apr.fees.reduce((prev, curr) => Number(curr.value) + prev, 0) const finalApy = convertAprToApy(aprTotal, 365)
const finalApr = (aprTotal - feeTotal) * 100
const finalApy = convertAprToApy(finalApr, 365)
const apys = aprData.apr.aprs.map((apr) => ({
type: apr.type,
value: new BigNumber(apr.value).dividedBy(aprTotal).multipliedBy(finalApy).toNumber(),
}))
const fees = aprData.apr.fees.map((fee) => ({
type: fee.type,
value: new BigNumber(fee.value).dividedBy(feeTotal).multipliedBy(finalApy).toNumber(),
}))
return { return {
vaultAddress: aprData.contract_address, vaultAddress: aprData.address,
total: finalApy, total: finalApy,
apys,
fees,
} }
}) })
@ -213,13 +200,44 @@ export const vaultsSlice = (set: NamedSet<Store>, get: GetState<Store>): VaultsS
getCaps: async (options?: Options) => { getCaps: async (options?: Options) => {
const caps = get().caps const caps = get().caps
if (caps && !options?.refetch) return caps if (caps && !options?.refetch) return caps
const networkConfig = get().networkConfig
const creditManagerClient = get().creditManagerClient const creditManagerClient = get().creditManagerClient
const paramsClient = get().paramsClient
if (!creditManagerClient) return [] if (!creditManagerClient) return []
let data: VaultCapData[] = [] if (networkConfig.contracts?.params) {
if (!paramsClient) return []
const utilizationPromises = Promise.all(
get().vaultConfigs.map<Promise<VaultUtilizationResponse>>((vaultConfig) =>
creditManagerClient.query({
vault_utilization: { vault: { address: vaultConfig.address } },
}),
),
)
const depositCapPromises = iterateContractQuery(paramsClient.allVaultConfigs)
return Promise.all([utilizationPromises, depositCapPromises]).then(
([vaultUtilizations, depositCaps]) => {
return vaultUtilizations.map((utilization) => {
const depositCap = depositCaps.find(
(depositCap) => depositCap.addr === utilization.vault.address,
)
return {
address: utilization.vault.address,
vaultCap: {
denom: utilization.utilization.denom,
used: Number(utilization.utilization.amount),
max: Number(depositCap?.deposit_cap.amount || 0),
},
}
})
},
)
} else {
let data: VaultCapData[] = []
const getBatch = async (startAfter?: VaultBaseForString): Promise<void> => { const getBatch = async (startAfter?: VaultBaseForString): Promise<void> => {
const batch: ArrayOfVaultInfoResponse = await creditManagerClient.query({ const batch: ArrayOfVaultInfoResponse = await creditManagerClient.query({
vaults_info: { limit: 5, start_after: startAfter }, vaults_info: { limit: 5, start_after: startAfter },
@ -249,6 +267,7 @@ export const vaultsSlice = (set: NamedSet<Store>, get: GetState<Store>): VaultsS
await getBatch() await getBatch()
return data return data
}
}, },
getLpTokens: async (options?: Options) => { getLpTokens: async (options?: Options) => {
const lpTokens = get().lpTokens const lpTokens = get().lpTokens
@ -289,6 +308,7 @@ export const vaultsSlice = (set: NamedSet<Store>, get: GetState<Store>): VaultsS
if (get().isLoading) return if (get().isLoading) return
set({ isLoading: true }) set({ isLoading: true })
const vaultAssets = get().getVaultAssets(options) const vaultAssets = get().getVaultAssets(options)
const unlockTimes = get().getUnlockTimes(options) const unlockTimes = get().getUnlockTimes(options)
const caps = get().getCaps(options) const caps = get().getCaps(options)
@ -305,8 +325,6 @@ export const vaultsSlice = (set: NamedSet<Store>, get: GetState<Store>): VaultsS
) )
vaultConfig.apy = { vaultConfig.apy = {
apys: null,
fees: null,
total: null, total: null,
vaultAddress: vaultConfig.address, vaultAddress: vaultConfig.address,
} }
@ -509,8 +527,6 @@ export const vaultsSlice = (set: NamedSet<Store>, get: GetState<Store>): VaultsS
borrow: trueBorrowRate, borrow: trueBorrowRate,
total: null, total: null,
net: null, net: null,
apys: null,
fees: null,
}, },
currentLeverage: leverage, currentLeverage: leverage,
ltv: leverageToLtv(leverage), ltv: leverageToLtv(leverage),

View File

@ -18,4 +18,6 @@ export enum QUERY_KEYS {
USD_PRICE = 'usdPrice', USD_PRICE = 'usdPrice',
USER_COLLATERAL = 'userCollateral', USER_COLLATERAL = 'userCollateral',
PYTH_VAA = 'pythVaa', PYTH_VAA = 'pythVaa',
ASSET_PARAMS = 'assetParams',
VAULT_PARAMS = 'vaultParams',
} }

View File

@ -1,6 +1,6 @@
// @ts-nocheck // @ts-nocheck
/** /**
* This file was automatically generated by @cosmwasm/ts-codegen@0.24.0. * This file was automatically generated by @cosmwasm/ts-codegen@0.33.0.
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
* and run the @cosmwasm/ts-codegen generate command to regenerate this file. * and run the @cosmwasm/ts-codegen generate command to regenerate this file.
*/ */
@ -9,29 +9,40 @@ import { StdFee } from '@cosmjs/amino'
import { CosmWasmClient, ExecuteResult, SigningCosmWasmClient } from '@cosmjs/cosmwasm-stargate' import { CosmWasmClient, ExecuteResult, SigningCosmWasmClient } from '@cosmjs/cosmwasm-stargate'
import { import {
AccountKind,
Action, Action,
ArrayOfAccount,
ArrayOfCoin, ArrayOfCoin,
ArrayOfCoinBalanceResponseItem, ArrayOfCoinBalanceResponseItem,
ArrayOfDebtShares, ArrayOfDebtShares,
ArrayOfLentShares,
ArrayOfSharesResponseItem, ArrayOfSharesResponseItem,
ArrayOfString,
ArrayOfVaultInfoResponse,
ArrayOfVaultPositionResponseItem, ArrayOfVaultPositionResponseItem,
ArrayOfVaultWithBalance, CallbackMsg,
Coin, Coin,
ConfigResponse, ConfigResponse,
ConfigUpdates, ConfigUpdates,
DebtShares, DebtShares,
HealthResponse,
LentShares,
NftConfigUpdates, NftConfigUpdates,
OwnerUpdate,
Positions, Positions,
Uint128, Uint128,
VaultBaseForString, VaultBaseForString,
VaultPosition,
VaultPositionValue,
VaultUtilizationResponse,
} from './MarsCreditManager.types' } from './MarsCreditManager.types'
export interface MarsCreditManagerReadOnlyInterface { export interface MarsCreditManagerReadOnlyInterface {
contractAddress: string contractAddress: string
accountKind: ({ accountId }: { accountId: string }) => Promise<AccountKind>
accounts: ({
limit,
owner,
startAfter,
}: {
limit?: number
owner: string
startAfter?: string
}) => Promise<ArrayOfAccount>
config: () => Promise<ConfigResponse> config: () => Promise<ConfigResponse>
vaultsInfo: ({ vaultsInfo: ({
limit, limit,
@ -40,15 +51,8 @@ export interface MarsCreditManagerReadOnlyInterface {
limit?: number limit?: number
startAfter?: VaultBaseForString startAfter?: VaultBaseForString
}) => Promise<ArrayOfVaultInfoResponse> }) => Promise<ArrayOfVaultInfoResponse>
allowedCoins: ({ vaultUtilization: ({ vault }: { vault: VaultBaseForString }) => Promise<VaultUtilizationResponse>
limit,
startAfter,
}: {
limit?: number
startAfter?: string
}) => Promise<ArrayOfString>
positions: ({ accountId }: { accountId: string }) => Promise<Positions> positions: ({ accountId }: { accountId: string }) => Promise<Positions>
health: ({ accountId }: { accountId: string }) => Promise<HealthResponse>
allCoinBalances: ({ allCoinBalances: ({
limit, limit,
startAfter, startAfter,
@ -71,21 +75,6 @@ export interface MarsCreditManagerReadOnlyInterface {
limit?: number limit?: number
startAfter?: string startAfter?: string
}) => Promise<ArrayOfDebtShares> }) => Promise<ArrayOfDebtShares>
allLentShares: ({
limit,
startAfter,
}: {
limit?: number
startAfter?: string[][]
}) => Promise<ArrayOfSharesResponseItem>
totalLentShares: () => Promise<LentShares>
allTotalLentShares: ({
limit,
startAfter,
}: {
limit?: number
startAfter?: string
}) => Promise<ArrayOfLentShares>
allVaultPositions: ({ allVaultPositions: ({
limit, limit,
startAfter, startAfter,
@ -93,14 +82,6 @@ export interface MarsCreditManagerReadOnlyInterface {
limit?: number limit?: number
startAfter?: string[][] startAfter?: string[][]
}) => Promise<ArrayOfVaultPositionResponseItem> }) => Promise<ArrayOfVaultPositionResponseItem>
totalVaultCoinBalance: ({ vault }: { vault: VaultBaseForString }) => Promise<Uint128>
allTotalVaultCoinBalances: ({
limit,
startAfter,
}: {
limit?: number
startAfter?: VaultBaseForString
}) => Promise<ArrayOfVaultWithBalance>
estimateProvideLiquidity: ({ estimateProvideLiquidity: ({
coinsIn, coinsIn,
lpTokenOut, lpTokenOut,
@ -109,6 +90,11 @@ export interface MarsCreditManagerReadOnlyInterface {
lpTokenOut: string lpTokenOut: string
}) => Promise<Uint128> }) => Promise<Uint128>
estimateWithdrawLiquidity: ({ lpToken }: { lpToken: Coin }) => Promise<ArrayOfCoin> estimateWithdrawLiquidity: ({ lpToken }: { lpToken: Coin }) => Promise<ArrayOfCoin>
vaultPositionValue: ({
vaultPosition,
}: {
vaultPosition: VaultPosition
}) => Promise<VaultPositionValue>
} }
export class MarsCreditManagerQueryClient implements MarsCreditManagerReadOnlyInterface { export class MarsCreditManagerQueryClient implements MarsCreditManagerReadOnlyInterface {
client: CosmWasmClient client: CosmWasmClient
@ -117,28 +103,44 @@ export class MarsCreditManagerQueryClient implements MarsCreditManagerReadOnlyIn
constructor(client: CosmWasmClient, contractAddress: string) { constructor(client: CosmWasmClient, contractAddress: string) {
this.client = client this.client = client
this.contractAddress = contractAddress this.contractAddress = contractAddress
this.accountKind = this.accountKind.bind(this)
this.accounts = this.accounts.bind(this)
this.config = this.config.bind(this) this.config = this.config.bind(this)
this.vaultsInfo = this.vaultsInfo.bind(this) this.vaultsInfo = this.vaultsInfo.bind(this)
this.allowedCoins = this.allowedCoins.bind(this) this.vaultUtilization = this.vaultUtilization.bind(this)
this.positions = this.positions.bind(this) this.positions = this.positions.bind(this)
this.health = this.health.bind(this)
this.allCoinBalances = this.allCoinBalances.bind(this) this.allCoinBalances = this.allCoinBalances.bind(this)
this.allDebtShares = this.allDebtShares.bind(this) this.allDebtShares = this.allDebtShares.bind(this)
this.totalDebtShares = this.totalDebtShares.bind(this) this.totalDebtShares = this.totalDebtShares.bind(this)
this.allTotalDebtShares = this.allTotalDebtShares.bind(this) this.allTotalDebtShares = this.allTotalDebtShares.bind(this)
this.allLentShares = this.allLentShares.bind(this)
this.totalLentShares = this.totalLentShares.bind(this)
this.allTotalLentShares = this.allTotalLentShares.bind(this)
this.allVaultPositions = this.allVaultPositions.bind(this) this.allVaultPositions = this.allVaultPositions.bind(this)
this.totalVaultCoinBalance = this.totalVaultCoinBalance.bind(this)
this.allTotalVaultCoinBalances = this.allTotalVaultCoinBalances.bind(this)
this.estimateProvideLiquidity = this.estimateProvideLiquidity.bind(this) this.estimateProvideLiquidity = this.estimateProvideLiquidity.bind(this)
this.estimateWithdrawLiquidity = this.estimateWithdrawLiquidity.bind(this) this.estimateWithdrawLiquidity = this.estimateWithdrawLiquidity.bind(this)
this.vaultPositionValue = this.vaultPositionValue.bind(this)
} }
config = async (): Promise<ConfigResponse> => { accountKind = async ({ accountId }: { accountId: string }): Promise<AccountKind> => {
return this.client.queryContractSmart(this.contractAddress, { return this.client.queryContractSmart(this.contractAddress, {
config: {}, account_kind: {
account_id: accountId,
},
})
}
accounts = async ({
limit,
owner,
startAfter,
}: {
limit?: number
owner: string
startAfter?: string
}): Promise<ArrayOfAccount> => {
return this.client.queryContractSmart(this.contractAddress, {
accounts: {
limit,
owner,
start_after: startAfter,
},
}) })
} }
vaultsInfo = async ({ vaultsInfo = async ({
@ -146,6 +148,7 @@ export class MarsCreditManagerQueryClient implements MarsCreditManagerReadOnlyIn
startAfter, startAfter,
}: { }: {
limit?: number limit?: number
owner: string
startAfter?: VaultBaseForString startAfter?: VaultBaseForString
}): Promise<ArrayOfVaultInfoResponse> => { }): Promise<ArrayOfVaultInfoResponse> => {
return this.client.queryContractSmart(this.contractAddress, { return this.client.queryContractSmart(this.contractAddress, {
@ -155,17 +158,19 @@ export class MarsCreditManagerQueryClient implements MarsCreditManagerReadOnlyIn
}, },
}) })
} }
allowedCoins = async ({ config = async (): Promise<ConfigResponse> => {
limit,
startAfter,
}: {
limit?: number
startAfter?: string
}): Promise<ArrayOfString> => {
return this.client.queryContractSmart(this.contractAddress, { return this.client.queryContractSmart(this.contractAddress, {
allowed_coins: { config: {},
limit, })
start_after: startAfter, }
vaultUtilization = async ({
vault,
}: {
vault: VaultBaseForString
}): Promise<VaultUtilizationResponse> => {
return this.client.queryContractSmart(this.contractAddress, {
vault_utilization: {
vault,
}, },
}) })
} }
@ -176,13 +181,6 @@ export class MarsCreditManagerQueryClient implements MarsCreditManagerReadOnlyIn
}, },
}) })
} }
health = async ({ accountId }: { accountId: string }): Promise<HealthResponse> => {
return this.client.queryContractSmart(this.contractAddress, {
health: {
account_id: accountId,
},
})
}
allCoinBalances = async ({ allCoinBalances = async ({
limit, limit,
startAfter, startAfter,
@ -230,39 +228,6 @@ export class MarsCreditManagerQueryClient implements MarsCreditManagerReadOnlyIn
}, },
}) })
} }
allLentShares = async ({
limit,
startAfter,
}: {
limit?: number
startAfter?: string[][]
}): Promise<ArrayOfSharesResponseItem> => {
return this.client.queryContractSmart(this.contractAddress, {
all_lent_shares: {
limit,
start_after: startAfter,
},
})
}
totalLentShares = async (): Promise<LentShares> => {
return this.client.queryContractSmart(this.contractAddress, {
total_lent_shares: {},
})
}
allTotalLentShares = async ({
limit,
startAfter,
}: {
limit?: number
startAfter?: string
}): Promise<ArrayOfLentShares> => {
return this.client.queryContractSmart(this.contractAddress, {
all_total_lent_shares: {
limit,
start_after: startAfter,
},
})
}
allVaultPositions = async ({ allVaultPositions = async ({
limit, limit,
startAfter, startAfter,
@ -277,27 +242,6 @@ export class MarsCreditManagerQueryClient implements MarsCreditManagerReadOnlyIn
}, },
}) })
} }
totalVaultCoinBalance = async ({ vault }: { vault: VaultBaseForString }): Promise<Uint128> => {
return this.client.queryContractSmart(this.contractAddress, {
total_vault_coin_balance: {
vault,
},
})
}
allTotalVaultCoinBalances = async ({
limit,
startAfter,
}: {
limit?: number
startAfter?: VaultBaseForString
}): Promise<ArrayOfVaultWithBalance> => {
return this.client.queryContractSmart(this.contractAddress, {
all_total_vault_coin_balances: {
limit,
start_after: startAfter,
},
})
}
estimateProvideLiquidity = async ({ estimateProvideLiquidity = async ({
coinsIn, coinsIn,
lpTokenOut, lpTokenOut,
@ -319,6 +263,17 @@ export class MarsCreditManagerQueryClient implements MarsCreditManagerReadOnlyIn
}, },
}) })
} }
vaultPositionValue = async ({
vaultPosition,
}: {
vaultPosition: VaultPosition
}): Promise<VaultPositionValue> => {
return this.client.queryContractSmart(this.contractAddress, {
vault_position_value: {
vault_position: vaultPosition,
},
})
}
} }
export interface MarsCreditManagerInterface extends MarsCreditManagerReadOnlyInterface { export interface MarsCreditManagerInterface extends MarsCreditManagerReadOnlyInterface {
contractAddress: string contractAddress: string
@ -326,7 +281,7 @@ export interface MarsCreditManagerInterface extends MarsCreditManagerReadOnlyInt
createCreditAccount: ( createCreditAccount: (
fee?: number | StdFee | 'auto', fee?: number | StdFee | 'auto',
memo?: string, memo?: string,
funds?: Coin[], _funds?: Coin[],
) => Promise<ExecuteResult> ) => Promise<ExecuteResult>
updateCreditAccount: ( updateCreditAccount: (
{ {
@ -338,7 +293,17 @@ export interface MarsCreditManagerInterface extends MarsCreditManagerReadOnlyInt
}, },
fee?: number | StdFee | 'auto', fee?: number | StdFee | 'auto',
memo?: string, memo?: string,
funds?: Coin[], _funds?: Coin[],
) => Promise<ExecuteResult>
repayFromWallet: (
{
accountId,
}: {
accountId: string
},
fee?: number | StdFee | 'auto',
memo?: string,
_funds?: Coin[],
) => Promise<ExecuteResult> ) => Promise<ExecuteResult>
updateConfig: ( updateConfig: (
{ {
@ -348,27 +313,31 @@ export interface MarsCreditManagerInterface extends MarsCreditManagerReadOnlyInt
}, },
fee?: number | StdFee | 'auto', fee?: number | StdFee | 'auto',
memo?: string, memo?: string,
funds?: Coin[], _funds?: Coin[],
) => Promise<ExecuteResult> ) => Promise<ExecuteResult>
updateOwner: ( updateOwner: (
ownerUpdate: OwnerUpdate,
fee?: number | StdFee | 'auto', fee?: number | StdFee | 'auto',
memo?: string, memo?: string,
funds?: Coin[], _funds?: Coin[],
) => Promise<ExecuteResult> ) => Promise<ExecuteResult>
updateNftConfig: ( updateNftConfig: (
{ {
updates, config,
ownership,
}: { }: {
updates: NftConfigUpdates config?: NftConfigUpdates
ownership?: Action
}, },
fee?: number | StdFee | 'auto', fee?: number | StdFee | 'auto',
memo?: string, memo?: string,
funds?: Coin[], _funds?: Coin[],
) => Promise<ExecuteResult> ) => Promise<ExecuteResult>
callback: ( callback: (
callbackMsg: CallbackMsg,
fee?: number | StdFee | 'auto', fee?: number | StdFee | 'auto',
memo?: string, memo?: string,
funds?: Coin[], _funds?: Coin[],
) => Promise<ExecuteResult> ) => Promise<ExecuteResult>
} }
export class MarsCreditManagerClient export class MarsCreditManagerClient
@ -386,6 +355,7 @@ export class MarsCreditManagerClient
this.contractAddress = contractAddress this.contractAddress = contractAddress
this.createCreditAccount = this.createCreditAccount.bind(this) this.createCreditAccount = this.createCreditAccount.bind(this)
this.updateCreditAccount = this.updateCreditAccount.bind(this) this.updateCreditAccount = this.updateCreditAccount.bind(this)
this.repayFromWallet = this.repayFromWallet.bind(this)
this.updateConfig = this.updateConfig.bind(this) this.updateConfig = this.updateConfig.bind(this)
this.updateOwner = this.updateOwner.bind(this) this.updateOwner = this.updateOwner.bind(this)
this.updateNftConfig = this.updateNftConfig.bind(this) this.updateNftConfig = this.updateNftConfig.bind(this)
@ -395,7 +365,7 @@ export class MarsCreditManagerClient
createCreditAccount = async ( createCreditAccount = async (
fee: number | StdFee | 'auto' = 'auto', fee: number | StdFee | 'auto' = 'auto',
memo?: string, memo?: string,
funds?: Coin[], _funds?: Coin[],
): Promise<ExecuteResult> => { ): Promise<ExecuteResult> => {
return await this.client.execute( return await this.client.execute(
this.sender, this.sender,
@ -405,7 +375,7 @@ export class MarsCreditManagerClient
}, },
fee, fee,
memo, memo,
funds, _funds,
) )
} }
updateCreditAccount = async ( updateCreditAccount = async (
@ -418,7 +388,7 @@ export class MarsCreditManagerClient
}, },
fee: number | StdFee | 'auto' = 'auto', fee: number | StdFee | 'auto' = 'auto',
memo?: string, memo?: string,
funds?: Coin[], _funds?: Coin[],
): Promise<ExecuteResult> => { ): Promise<ExecuteResult> => {
return await this.client.execute( return await this.client.execute(
this.sender, this.sender,
@ -431,7 +401,30 @@ export class MarsCreditManagerClient
}, },
fee, fee,
memo, memo,
funds, _funds,
)
}
repayFromWallet = async (
{
accountId,
}: {
accountId: string
},
fee: number | StdFee | 'auto' = 'auto',
memo?: string,
_funds?: Coin[],
): Promise<ExecuteResult> => {
return await this.client.execute(
this.sender,
this.contractAddress,
{
repay_from_wallet: {
account_id: accountId,
},
},
fee,
memo,
_funds,
) )
} }
updateConfig = async ( updateConfig = async (
@ -442,7 +435,7 @@ export class MarsCreditManagerClient
}, },
fee: number | StdFee | 'auto' = 'auto', fee: number | StdFee | 'auto' = 'auto',
memo?: string, memo?: string,
funds?: Coin[], _funds?: Coin[],
): Promise<ExecuteResult> => { ): Promise<ExecuteResult> => {
return await this.client.execute( return await this.client.execute(
this.sender, this.sender,
@ -454,62 +447,67 @@ export class MarsCreditManagerClient
}, },
fee, fee,
memo, memo,
funds, _funds,
) )
} }
updateOwner = async ( updateOwner = async (
ownerUpdate: OwnerUpdate,
fee: number | StdFee | 'auto' = 'auto', fee: number | StdFee | 'auto' = 'auto',
memo?: string, memo?: string,
funds?: Coin[], _funds?: Coin[],
): Promise<ExecuteResult> => { ): Promise<ExecuteResult> => {
return await this.client.execute( return await this.client.execute(
this.sender, this.sender,
this.contractAddress, this.contractAddress,
{ {
update_owner: {}, update_owner: ownerUpdate,
}, },
fee, fee,
memo, memo,
funds, _funds,
) )
} }
updateNftConfig = async ( updateNftConfig = async (
{ {
updates, config,
ownership,
}: { }: {
updates: NftConfigUpdates config?: NftConfigUpdates
ownership?: Action
}, },
fee: number | StdFee | 'auto' = 'auto', fee: number | StdFee | 'auto' = 'auto',
memo?: string, memo?: string,
funds?: Coin[], _funds?: Coin[],
): Promise<ExecuteResult> => { ): Promise<ExecuteResult> => {
return await this.client.execute( return await this.client.execute(
this.sender, this.sender,
this.contractAddress, this.contractAddress,
{ {
update_nft_config: { update_nft_config: {
updates, config,
ownership,
}, },
}, },
fee, fee,
memo, memo,
funds, _funds,
) )
} }
callback = async ( callback = async (
callbackMsg: CallbackMsg,
fee: number | StdFee | 'auto' = 'auto', fee: number | StdFee | 'auto' = 'auto',
memo?: string, memo?: string,
funds?: Coin[], _funds?: Coin[],
): Promise<ExecuteResult> => { ): Promise<ExecuteResult> => {
return await this.client.execute( return await this.client.execute(
this.sender, this.sender,
this.contractAddress, this.contractAddress,
{ {
callback: {}, callback: callbackMsg,
}, },
fee, fee,
memo, memo,
funds, _funds,
) )
} }
} }

View File

@ -1,19 +1,26 @@
// @ts-nocheck // @ts-nocheck
/** /**
* This file was automatically generated by @cosmwasm/ts-codegen@0.24.0. * This file was automatically generated by @cosmwasm/ts-codegen@0.33.0.
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
* and run the @cosmwasm/ts-codegen generate command to regenerate this file. * and run the @cosmwasm/ts-codegen generate command to regenerate this file.
*/ */
import { MsgExecuteContractEncodeObject } from '@cosmjs/cosmwasm-stargate'
import { toUtf8 } from '@cosmjs/encoding' import { toUtf8 } from '@cosmjs/encoding'
import { MsgExecuteContract } from 'cosmjs-types/cosmwasm/wasm/v1/tx' import { MsgExecuteContract } from 'cosmjs-types/cosmwasm/wasm/v1/tx'
import { MsgExecuteContractEncodeObject } from 'cosmwasm'
import { Action, Coin, ConfigUpdates, NftConfigUpdates } from './MarsCreditManager.types' import {
Action,
CallbackMsg,
Coin,
ConfigUpdates,
NftConfigUpdates,
OwnerUpdate,
} from './MarsCreditManager.types'
export interface MarsCreditManagerMessage { export interface MarsCreditManagerMessage {
contractAddress: string contractAddress: string
sender: string sender: string
createCreditAccount: (funds?: Coin[]) => MsgExecuteContractEncodeObject createCreditAccount: (_funds?: Coin[]) => MsgExecuteContractEncodeObject
updateCreditAccount: ( updateCreditAccount: (
{ {
accountId, accountId,
@ -22,7 +29,15 @@ export interface MarsCreditManagerMessage {
accountId: string accountId: string
actions: Action[] actions: Action[]
}, },
funds?: Coin[], _funds?: Coin[],
) => MsgExecuteContractEncodeObject
repayFromWallet: (
{
accountId,
}: {
accountId: string
},
_funds?: Coin[],
) => MsgExecuteContractEncodeObject ) => MsgExecuteContractEncodeObject
updateConfig: ( updateConfig: (
{ {
@ -30,18 +45,20 @@ export interface MarsCreditManagerMessage {
}: { }: {
updates: ConfigUpdates updates: ConfigUpdates
}, },
funds?: Coin[], _funds?: Coin[],
) => MsgExecuteContractEncodeObject ) => MsgExecuteContractEncodeObject
updateOwner: (funds?: Coin[]) => MsgExecuteContractEncodeObject updateOwner: (ownerUpdate: OwnerUpdate, _funds?: Coin[]) => MsgExecuteContractEncodeObject
updateNftConfig: ( updateNftConfig: (
{ {
updates, config,
ownership,
}: { }: {
updates: NftConfigUpdates config?: NftConfigUpdates
ownership?: Action
}, },
funds?: Coin[], _funds?: Coin[],
) => MsgExecuteContractEncodeObject ) => MsgExecuteContractEncodeObject
callback: (funds?: Coin[]) => MsgExecuteContractEncodeObject callback: (callbackMsg: CallbackMsg, _funds?: Coin[]) => MsgExecuteContractEncodeObject
} }
export class MarsCreditManagerMessageComposer implements MarsCreditManagerMessage { export class MarsCreditManagerMessageComposer implements MarsCreditManagerMessage {
sender: string sender: string
@ -52,13 +69,14 @@ export class MarsCreditManagerMessageComposer implements MarsCreditManagerMessag
this.contractAddress = contractAddress this.contractAddress = contractAddress
this.createCreditAccount = this.createCreditAccount.bind(this) this.createCreditAccount = this.createCreditAccount.bind(this)
this.updateCreditAccount = this.updateCreditAccount.bind(this) this.updateCreditAccount = this.updateCreditAccount.bind(this)
this.repayFromWallet = this.repayFromWallet.bind(this)
this.updateConfig = this.updateConfig.bind(this) this.updateConfig = this.updateConfig.bind(this)
this.updateOwner = this.updateOwner.bind(this) this.updateOwner = this.updateOwner.bind(this)
this.updateNftConfig = this.updateNftConfig.bind(this) this.updateNftConfig = this.updateNftConfig.bind(this)
this.callback = this.callback.bind(this) this.callback = this.callback.bind(this)
} }
createCreditAccount = (funds?: Coin[]): MsgExecuteContractEncodeObject => { createCreditAccount = (_funds?: Coin[]): MsgExecuteContractEncodeObject => {
return { return {
typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract', typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract',
value: MsgExecuteContract.fromPartial({ value: MsgExecuteContract.fromPartial({
@ -69,7 +87,7 @@ export class MarsCreditManagerMessageComposer implements MarsCreditManagerMessag
create_credit_account: {}, create_credit_account: {},
}), }),
), ),
funds, funds: _funds,
}), }),
} }
} }
@ -81,7 +99,7 @@ export class MarsCreditManagerMessageComposer implements MarsCreditManagerMessag
accountId: string accountId: string
actions: Action[] actions: Action[]
}, },
funds?: Coin[], _funds?: Coin[],
): MsgExecuteContractEncodeObject => { ): MsgExecuteContractEncodeObject => {
return { return {
typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract', typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract',
@ -96,7 +114,31 @@ export class MarsCreditManagerMessageComposer implements MarsCreditManagerMessag
}, },
}), }),
), ),
funds, funds: _funds,
}),
}
}
repayFromWallet = (
{
accountId,
}: {
accountId: string
},
_funds?: Coin[],
): MsgExecuteContractEncodeObject => {
return {
typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract',
value: MsgExecuteContract.fromPartial({
sender: this.sender,
contract: this.contractAddress,
msg: toUtf8(
JSON.stringify({
repay_from_wallet: {
account_id: accountId,
},
}),
),
funds: _funds,
}), }),
} }
} }
@ -106,7 +148,7 @@ export class MarsCreditManagerMessageComposer implements MarsCreditManagerMessag
}: { }: {
updates: ConfigUpdates updates: ConfigUpdates
}, },
funds?: Coin[], _funds?: Coin[],
): MsgExecuteContractEncodeObject => { ): MsgExecuteContractEncodeObject => {
return { return {
typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract', typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract',
@ -120,11 +162,11 @@ export class MarsCreditManagerMessageComposer implements MarsCreditManagerMessag
}, },
}), }),
), ),
funds, funds: _funds,
}), }),
} }
} }
updateOwner = (funds?: Coin[]): MsgExecuteContractEncodeObject => { updateOwner = (ownerUpdate: OwnerUpdate, _funds?: Coin[]): MsgExecuteContractEncodeObject => {
return { return {
typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract', typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract',
value: MsgExecuteContract.fromPartial({ value: MsgExecuteContract.fromPartial({
@ -132,20 +174,22 @@ export class MarsCreditManagerMessageComposer implements MarsCreditManagerMessag
contract: this.contractAddress, contract: this.contractAddress,
msg: toUtf8( msg: toUtf8(
JSON.stringify({ JSON.stringify({
update_owner: {}, update_owner: ownerUpdate,
}), }),
), ),
funds, funds: _funds,
}), }),
} }
} }
updateNftConfig = ( updateNftConfig = (
{ {
updates, config,
ownership,
}: { }: {
updates: NftConfigUpdates config?: NftConfigUpdates
ownership?: Action
}, },
funds?: Coin[], _funds?: Coin[],
): MsgExecuteContractEncodeObject => { ): MsgExecuteContractEncodeObject => {
return { return {
typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract', typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract',
@ -155,15 +199,16 @@ export class MarsCreditManagerMessageComposer implements MarsCreditManagerMessag
msg: toUtf8( msg: toUtf8(
JSON.stringify({ JSON.stringify({
update_nft_config: { update_nft_config: {
updates, config,
ownership,
}, },
}), }),
), ),
funds, funds: _funds,
}), }),
} }
} }
callback = (funds?: Coin[]): MsgExecuteContractEncodeObject => { callback = (callbackMsg: CallbackMsg, _funds?: Coin[]): MsgExecuteContractEncodeObject => {
return { return {
typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract', typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract',
value: MsgExecuteContract.fromPartial({ value: MsgExecuteContract.fromPartial({
@ -171,10 +216,10 @@ export class MarsCreditManagerMessageComposer implements MarsCreditManagerMessag
contract: this.contractAddress, contract: this.contractAddress,
msg: toUtf8( msg: toUtf8(
JSON.stringify({ JSON.stringify({
callback: {}, callback: callbackMsg,
}), }),
), ),
funds, funds: _funds,
}), }),
} }
} }

View File

@ -1,6 +1,6 @@
// @ts-nocheck // @ts-nocheck
/** /**
* This file was automatically generated by @cosmwasm/ts-codegen@0.24.0. * This file was automatically generated by @cosmwasm/ts-codegen@0.33.0.
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
* and run the @cosmwasm/ts-codegen generate command to regenerate this file. * and run the @cosmwasm/ts-codegen generate command to regenerate this file.
*/ */
@ -11,26 +11,27 @@ import { useMutation, UseMutationOptions, useQuery, UseQueryOptions } from '@tan
import { MarsCreditManagerClient, MarsCreditManagerQueryClient } from './MarsCreditManager.client' import { MarsCreditManagerClient, MarsCreditManagerQueryClient } from './MarsCreditManager.client'
import { import {
AccountKind,
Action, Action,
ArrayOfAccount,
ArrayOfCoin, ArrayOfCoin,
ArrayOfCoinBalanceResponseItem, ArrayOfCoinBalanceResponseItem,
ArrayOfDebtShares, ArrayOfDebtShares,
ArrayOfLentShares,
ArrayOfSharesResponseItem, ArrayOfSharesResponseItem,
ArrayOfString,
ArrayOfVaultInfoResponse,
ArrayOfVaultPositionResponseItem, ArrayOfVaultPositionResponseItem,
ArrayOfVaultWithBalance, CallbackMsg,
Coin, Coin,
ConfigResponse, ConfigResponse,
ConfigUpdates, ConfigUpdates,
DebtShares, DebtShares,
HealthResponse,
LentShares,
NftConfigUpdates, NftConfigUpdates,
OwnerUpdate,
Positions, Positions,
Uint128, Uint128,
VaultBaseForString, VaultBaseForString,
VaultPosition,
VaultPositionValue,
VaultUtilizationResponse,
} from './MarsCreditManager.types' } from './MarsCreditManager.types'
export const marsCreditManagerQueryKeys = { export const marsCreditManagerQueryKeys = {
contract: [ contract: [
@ -40,26 +41,30 @@ export const marsCreditManagerQueryKeys = {
] as const, ] as const,
address: (contractAddress: string | undefined) => address: (contractAddress: string | undefined) =>
[{ ...marsCreditManagerQueryKeys.contract[0], address: contractAddress }] as const, [{ ...marsCreditManagerQueryKeys.contract[0], address: contractAddress }] as const,
accountKind: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[
{ ...marsCreditManagerQueryKeys.address(contractAddress)[0], method: 'account_kind', args },
] as const,
accounts: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[
{ ...marsCreditManagerQueryKeys.address(contractAddress)[0], method: 'accounts', args },
] as const,
config: (contractAddress: string | undefined, args?: Record<string, unknown>) => config: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[ [
{ ...marsCreditManagerQueryKeys.address(contractAddress)[0], method: 'config', args }, { ...marsCreditManagerQueryKeys.address(contractAddress)[0], method: 'config', args },
] as const, ] as const,
vaultsInfo: (contractAddress: string | undefined, args?: Record<string, unknown>) => vaultUtilization: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[ [
{ ...marsCreditManagerQueryKeys.address(contractAddress)[0], method: 'vaults_info', args }, {
] as const, ...marsCreditManagerQueryKeys.address(contractAddress)[0],
allowedCoins: (contractAddress: string | undefined, args?: Record<string, unknown>) => method: 'vault_utilization',
[ args,
{ ...marsCreditManagerQueryKeys.address(contractAddress)[0], method: 'allowed_coins', args }, },
] as const, ] as const,
positions: (contractAddress: string | undefined, args?: Record<string, unknown>) => positions: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[ [
{ ...marsCreditManagerQueryKeys.address(contractAddress)[0], method: 'positions', args }, { ...marsCreditManagerQueryKeys.address(contractAddress)[0], method: 'positions', args },
] as const, ] as const,
health: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[
{ ...marsCreditManagerQueryKeys.address(contractAddress)[0], method: 'health', args },
] as const,
allCoinBalances: (contractAddress: string | undefined, args?: Record<string, unknown>) => allCoinBalances: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[ [
{ {
@ -92,30 +97,6 @@ export const marsCreditManagerQueryKeys = {
args, args,
}, },
] as const, ] as const,
allLentShares: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[
{
...marsCreditManagerQueryKeys.address(contractAddress)[0],
method: 'all_lent_shares',
args,
},
] as const,
totalLentShares: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[
{
...marsCreditManagerQueryKeys.address(contractAddress)[0],
method: 'total_lent_shares',
args,
},
] as const,
allTotalLentShares: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[
{
...marsCreditManagerQueryKeys.address(contractAddress)[0],
method: 'all_total_lent_shares',
args,
},
] as const,
allVaultPositions: (contractAddress: string | undefined, args?: Record<string, unknown>) => allVaultPositions: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[ [
{ {
@ -124,25 +105,6 @@ export const marsCreditManagerQueryKeys = {
args, args,
}, },
] as const, ] as const,
totalVaultCoinBalance: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[
{
...marsCreditManagerQueryKeys.address(contractAddress)[0],
method: 'total_vault_coin_balance',
args,
},
] as const,
allTotalVaultCoinBalances: (
contractAddress: string | undefined,
args?: Record<string, unknown>,
) =>
[
{
...marsCreditManagerQueryKeys.address(contractAddress)[0],
method: 'all_total_vault_coin_balances',
args,
},
] as const,
estimateProvideLiquidity: (contractAddress: string | undefined, args?: Record<string, unknown>) => estimateProvideLiquidity: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[ [
{ {
@ -162,6 +124,14 @@ export const marsCreditManagerQueryKeys = {
args, args,
}, },
] as const, ] as const,
vaultPositionValue: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[
{
...marsCreditManagerQueryKeys.address(contractAddress)[0],
method: 'vault_position_value',
args,
},
] as const,
} }
export interface MarsCreditManagerReactQuery<TResponse, TData = TResponse> { export interface MarsCreditManagerReactQuery<TResponse, TData = TResponse> {
client: MarsCreditManagerQueryClient | undefined client: MarsCreditManagerQueryClient | undefined
@ -172,6 +142,28 @@ export interface MarsCreditManagerReactQuery<TResponse, TData = TResponse> {
initialData?: undefined initialData?: undefined
} }
} }
export interface MarsCreditManagerVaultPositionValueQuery<TData>
extends MarsCreditManagerReactQuery<VaultPositionValue, TData> {
args: {
vaultPosition: VaultPosition
}
}
export function useMarsCreditManagerVaultPositionValueQuery<TData = VaultPositionValue>({
client,
args,
options,
}: MarsCreditManagerVaultPositionValueQuery<TData>) {
return useQuery<VaultPositionValue, Error, TData>(
marsCreditManagerQueryKeys.vaultPositionValue(client?.contractAddress, args),
() =>
client
? client.vaultPositionValue({
vaultPosition: args.vaultPosition,
})
: Promise.reject(new Error('Invalid client')),
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
)
}
export interface MarsCreditManagerEstimateWithdrawLiquidityQuery<TData> export interface MarsCreditManagerEstimateWithdrawLiquidityQuery<TData>
extends MarsCreditManagerReactQuery<ArrayOfCoin, TData> { extends MarsCreditManagerReactQuery<ArrayOfCoin, TData> {
args: { args: {
@ -218,50 +210,6 @@ export function useMarsCreditManagerEstimateProvideLiquidityQuery<TData = Uint12
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) }, { ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
) )
} }
export interface MarsCreditManagerAllTotalVaultCoinBalancesQuery<TData>
extends MarsCreditManagerReactQuery<ArrayOfVaultWithBalance, TData> {
args: {
limit?: number
startAfter?: VaultBaseForString
}
}
export function useMarsCreditManagerAllTotalVaultCoinBalancesQuery<
TData = ArrayOfVaultWithBalance,
>({ client, args, options }: MarsCreditManagerAllTotalVaultCoinBalancesQuery<TData>) {
return useQuery<ArrayOfVaultWithBalance, Error, TData>(
marsCreditManagerQueryKeys.allTotalVaultCoinBalances(client?.contractAddress, args),
() =>
client
? client.allTotalVaultCoinBalances({
limit: args.limit,
startAfter: args.startAfter,
})
: Promise.reject(new Error('Invalid client')),
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
)
}
export interface MarsCreditManagerTotalVaultCoinBalanceQuery<TData>
extends MarsCreditManagerReactQuery<Uint128, TData> {
args: {
vault: VaultBaseForString
}
}
export function useMarsCreditManagerTotalVaultCoinBalanceQuery<TData = Uint128>({
client,
args,
options,
}: MarsCreditManagerTotalVaultCoinBalanceQuery<TData>) {
return useQuery<Uint128, Error, TData>(
marsCreditManagerQueryKeys.totalVaultCoinBalance(client?.contractAddress, args),
() =>
client
? client.totalVaultCoinBalance({
vault: args.vault,
})
: Promise.reject(new Error('Invalid client')),
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
)
}
export interface MarsCreditManagerAllVaultPositionsQuery<TData> export interface MarsCreditManagerAllVaultPositionsQuery<TData>
extends MarsCreditManagerReactQuery<ArrayOfVaultPositionResponseItem, TData> { extends MarsCreditManagerReactQuery<ArrayOfVaultPositionResponseItem, TData> {
args: { args: {
@ -284,66 +232,6 @@ export function useMarsCreditManagerAllVaultPositionsQuery<
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) }, { ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
) )
} }
export interface MarsCreditManagerAllTotalLentSharesQuery<TData>
extends MarsCreditManagerReactQuery<ArrayOfLentShares, TData> {
args: {
limit?: number
startAfter?: string
}
}
export function useMarsCreditManagerAllTotalLentSharesQuery<TData = ArrayOfLentShares>({
client,
args,
options,
}: MarsCreditManagerAllTotalLentSharesQuery<TData>) {
return useQuery<ArrayOfLentShares, Error, TData>(
marsCreditManagerQueryKeys.allTotalLentShares(client?.contractAddress, args),
() =>
client
? client.allTotalLentShares({
limit: args.limit,
startAfter: args.startAfter,
})
: Promise.reject(new Error('Invalid client')),
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
)
}
export interface MarsCreditManagerTotalLentSharesQuery<TData>
extends MarsCreditManagerReactQuery<LentShares, TData> {}
export function useMarsCreditManagerTotalLentSharesQuery<TData = LentShares>({
client,
options,
}: MarsCreditManagerTotalLentSharesQuery<TData>) {
return useQuery<LentShares, Error, TData>(
marsCreditManagerQueryKeys.totalLentShares(client?.contractAddress),
() => (client ? client.totalLentShares() : Promise.reject(new Error('Invalid client'))),
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
)
}
export interface MarsCreditManagerAllLentSharesQuery<TData>
extends MarsCreditManagerReactQuery<ArrayOfSharesResponseItem, TData> {
args: {
limit?: number
startAfter?: string[][]
}
}
export function useMarsCreditManagerAllLentSharesQuery<TData = ArrayOfSharesResponseItem>({
client,
args,
options,
}: MarsCreditManagerAllLentSharesQuery<TData>) {
return useQuery<ArrayOfSharesResponseItem, Error, TData>(
marsCreditManagerQueryKeys.allLentShares(client?.contractAddress, args),
() =>
client
? client.allLentShares({
limit: args.limit,
startAfter: args.startAfter,
})
: Promise.reject(new Error('Invalid client')),
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
)
}
export interface MarsCreditManagerAllTotalDebtSharesQuery<TData> export interface MarsCreditManagerAllTotalDebtSharesQuery<TData>
extends MarsCreditManagerReactQuery<ArrayOfDebtShares, TData> { extends MarsCreditManagerReactQuery<ArrayOfDebtShares, TData> {
args: { args: {
@ -428,28 +316,6 @@ export function useMarsCreditManagerAllCoinBalancesQuery<TData = ArrayOfCoinBala
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) }, { ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
) )
} }
export interface MarsCreditManagerHealthQuery<TData>
extends MarsCreditManagerReactQuery<HealthResponse, TData> {
args: {
accountId: string
}
}
export function useMarsCreditManagerHealthQuery<TData = HealthResponse>({
client,
args,
options,
}: MarsCreditManagerHealthQuery<TData>) {
return useQuery<HealthResponse, Error, TData>(
marsCreditManagerQueryKeys.health(client?.contractAddress, args),
() =>
client
? client.health({
accountId: args.accountId,
})
: Promise.reject(new Error('Invalid client')),
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
)
}
export interface MarsCreditManagerPositionsQuery<TData> export interface MarsCreditManagerPositionsQuery<TData>
extends MarsCreditManagerReactQuery<Positions, TData> { extends MarsCreditManagerReactQuery<Positions, TData> {
args: { args: {
@ -472,49 +338,23 @@ export function useMarsCreditManagerPositionsQuery<TData = Positions>({
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) }, { ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
) )
} }
export interface MarsCreditManagerAllowedCoinsQuery<TData> export interface MarsCreditManagerVaultUtilizationQuery<TData>
extends MarsCreditManagerReactQuery<ArrayOfString, TData> { extends MarsCreditManagerReactQuery<VaultUtilizationResponse, TData> {
args: { args: {
limit?: number vault: VaultBaseForString
startAfter?: string
} }
} }
export function useMarsCreditManagerAllowedCoinsQuery<TData = ArrayOfString>({ export function useMarsCreditManagerVaultUtilizationQuery<TData = VaultUtilizationResponse>({
client, client,
args, args,
options, options,
}: MarsCreditManagerAllowedCoinsQuery<TData>) { }: MarsCreditManagerVaultUtilizationQuery<TData>) {
return useQuery<ArrayOfString, Error, TData>( return useQuery<VaultUtilizationResponse, Error, TData>(
marsCreditManagerQueryKeys.allowedCoins(client?.contractAddress, args), marsCreditManagerQueryKeys.vaultUtilization(client?.contractAddress, args),
() => () =>
client client
? client.allowedCoins({ ? client.vaultUtilization({
limit: args.limit, vault: args.vault,
startAfter: args.startAfter,
})
: Promise.reject(new Error('Invalid client')),
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
)
}
export interface MarsCreditManagerVaultsInfoQuery<TData>
extends MarsCreditManagerReactQuery<ArrayOfVaultInfoResponse, TData> {
args: {
limit?: number
startAfter?: VaultBaseForString
}
}
export function useMarsCreditManagerVaultsInfoQuery<TData = ArrayOfVaultInfoResponse>({
client,
args,
options,
}: MarsCreditManagerVaultsInfoQuery<TData>) {
return useQuery<ArrayOfVaultInfoResponse, Error, TData>(
marsCreditManagerQueryKeys.vaultsInfo(client?.contractAddress, args),
() =>
client
? client.vaultsInfo({
limit: args.limit,
startAfter: args.startAfter,
}) })
: Promise.reject(new Error('Invalid client')), : Promise.reject(new Error('Invalid client')),
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) }, { ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
@ -532,8 +372,57 @@ export function useMarsCreditManagerConfigQuery<TData = ConfigResponse>({
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) }, { ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
) )
} }
export interface MarsCreditManagerAccountsQuery<TData>
extends MarsCreditManagerReactQuery<ArrayOfAccount, TData> {
args: {
limit?: number
owner: string
startAfter?: string
}
}
export function useMarsCreditManagerAccountsQuery<TData = ArrayOfAccount>({
client,
args,
options,
}: MarsCreditManagerAccountsQuery<TData>) {
return useQuery<ArrayOfAccount, Error, TData>(
marsCreditManagerQueryKeys.accounts(client?.contractAddress, args),
() =>
client
? client.accounts({
limit: args.limit,
owner: args.owner,
startAfter: args.startAfter,
})
: Promise.reject(new Error('Invalid client')),
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
)
}
export interface MarsCreditManagerAccountKindQuery<TData>
extends MarsCreditManagerReactQuery<AccountKind, TData> {
args: {
accountId: string
}
}
export function useMarsCreditManagerAccountKindQuery<TData = AccountKind>({
client,
args,
options,
}: MarsCreditManagerAccountKindQuery<TData>) {
return useQuery<AccountKind, Error, TData>(
marsCreditManagerQueryKeys.accountKind(client?.contractAddress, args),
() =>
client
? client.accountKind({
accountId: args.accountId,
})
: Promise.reject(new Error('Invalid client')),
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
)
}
export interface MarsCreditManagerCallbackMutation { export interface MarsCreditManagerCallbackMutation {
client: MarsCreditManagerClient client: MarsCreditManagerClient
msg: CallbackMsg
args?: { args?: {
fee?: number | StdFee | 'auto' fee?: number | StdFee | 'auto'
memo?: string memo?: string
@ -554,7 +443,8 @@ export function useMarsCreditManagerCallbackMutation(
export interface MarsCreditManagerUpdateNftConfigMutation { export interface MarsCreditManagerUpdateNftConfigMutation {
client: MarsCreditManagerClient client: MarsCreditManagerClient
msg: { msg: {
updates: NftConfigUpdates config?: NftConfigUpdates
ownership?: Action
} }
args?: { args?: {
fee?: number | StdFee | 'auto' fee?: number | StdFee | 'auto'
@ -576,6 +466,7 @@ export function useMarsCreditManagerUpdateNftConfigMutation(
} }
export interface MarsCreditManagerUpdateOwnerMutation { export interface MarsCreditManagerUpdateOwnerMutation {
client: MarsCreditManagerClient client: MarsCreditManagerClient
msg: OwnerUpdate
args?: { args?: {
fee?: number | StdFee | 'auto' fee?: number | StdFee | 'auto'
memo?: string memo?: string
@ -616,6 +507,29 @@ export function useMarsCreditManagerUpdateConfigMutation(
options, options,
) )
} }
export interface MarsCreditManagerRepayFromWalletMutation {
client: MarsCreditManagerClient
msg: {
accountId: string
}
args?: {
fee?: number | StdFee | 'auto'
memo?: string
funds?: Coin[]
}
}
export function useMarsCreditManagerRepayFromWalletMutation(
options?: Omit<
UseMutationOptions<ExecuteResult, Error, MarsCreditManagerRepayFromWalletMutation>,
'mutationFn'
>,
) {
return useMutation<ExecuteResult, Error, MarsCreditManagerRepayFromWalletMutation>(
({ client, msg, args: { fee, memo, funds } = {} }) =>
client.repayFromWallet(msg, fee, memo, funds),
options,
)
}
export interface MarsCreditManagerUpdateCreditAccountMutation { export interface MarsCreditManagerUpdateCreditAccountMutation {
client: MarsCreditManagerClient client: MarsCreditManagerClient
msg: { msg: {
@ -655,7 +569,8 @@ export function useMarsCreditManagerCreateCreditAccountMutation(
>, >,
) { ) {
return useMutation<ExecuteResult, Error, MarsCreditManagerCreateCreditAccountMutation>( return useMutation<ExecuteResult, Error, MarsCreditManagerCreateCreditAccountMutation>(
({ client, args: { fee, memo, funds } = {} }) => client.createCreditAccount(fee, memo, funds), ({ client, msg, args: { fee, memo, funds } = {} }) =>
client.createCreditAccount(msg, fee, memo, funds),
options, options,
) )
} }

View File

@ -1,48 +1,35 @@
// @ts-nocheck // @ts-nocheck
/** /**
* This file was automatically generated by @cosmwasm/ts-codegen@0.24.0. * This file was automatically generated by @cosmwasm/ts-codegen@0.33.0.
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
* and run the @cosmwasm/ts-codegen generate command to regenerate this file. * and run the @cosmwasm/ts-codegen generate command to regenerate this file.
*/ */
export type HealthContractBaseForString = string
export type IncentivesUnchecked = string
export type Decimal = string export type Decimal = string
export type Uint128 = string export type Uint128 = string
export type OracleBaseForString = string export type OracleBaseForString = string
export type RedBankBaseForString = string export type ParamsBaseForString = string
export type RedBankUnchecked = string
export type SwapperBaseForString = string export type SwapperBaseForString = string
export type ZapperBaseForString = string export type ZapperBaseForString = string
export interface InstantiateMsg { export interface InstantiateMsg {
allowed_coins: string[] health_contract: HealthContractBaseForString
max_close_factor: Decimal incentives: IncentivesUnchecked
max_slippage: Decimal
max_unlocking_positions: Uint128 max_unlocking_positions: Uint128
oracle: OracleBaseForString oracle: OracleBaseForString
owner: string owner: string
red_bank: RedBankBaseForString params: ParamsBaseForString
red_bank: RedBankUnchecked
swapper: SwapperBaseForString swapper: SwapperBaseForString
vault_configs: VaultInstantiateConfig[] vault_configs: VaultInstantiateConfig[]
zapper: ZapperBaseForString zapper: ZapperBaseForString
} }
export interface VaultInstantiateConfig {
config: VaultConfig
vault: VaultBaseForString
}
export interface VaultConfig {
deposit_cap: Coin
liquidation_threshold: Decimal
max_ltv: Decimal
whitelisted: boolean
}
export interface Coin {
amount: Uint128
denom: string
[k: string]: unknown
}
export interface VaultBaseForString {
address: string
}
export type ExecuteMsg = export type ExecuteMsg =
| { | {
create_credit_account: {} create_credit_account: AccountKind
} }
| { | {
update_credit_account: { update_credit_account: {
@ -50,6 +37,11 @@ export type ExecuteMsg =
actions: Action[] actions: Action[]
} }
} }
| {
repay_from_wallet: {
account_id: string
}
}
| { | {
update_config: { update_config: {
updates: ConfigUpdates updates: ConfigUpdates
@ -60,27 +52,40 @@ export type ExecuteMsg =
} }
| { | {
update_nft_config: { update_nft_config: {
updates: NftConfigUpdates config?: NftConfigUpdates | null
ownership?: Action | null
} }
} }
| { | {
callback: CallbackMsg callback: CallbackMsg
} }
export type AccountKind = 'default' | 'high_levered_strategy'
export type Action = export type Action =
| { | {
deposit: Coin deposit: Coin
} }
| { | {
withdraw: Coin withdraw: ActionCoin
} }
| { | {
borrow: Coin borrow: Coin
} }
| { | {
lend: Coin lend: ActionCoin
} }
| { | {
repay: ActionCoin reclaim: ActionCoin
}
| {
claim_rewards: {}
}
| {
repay: {
coin?: ActionCoin
amount?: ActionAmount
denom?: string
recipient_account_id?: string | null
}
} }
| { | {
enter_vault: { enter_vault: {
@ -107,18 +112,10 @@ export type Action =
} }
} }
| { | {
liquidate_coin: { liquidate: {
debt_coin: Coin debt_coin: Coin
liquidatee_account_id: string liquidatee_account_id: string
request_coin_denom: string request: LiquidateRequestForVaultBaseForString
}
}
| {
liquidate_vault: {
debt_coin: Coin
liquidatee_account_id: string
position_type: VaultPositionType
request_vault: VaultBaseForString
} }
} }
| { | {
@ -132,12 +129,14 @@ export type Action =
provide_liquidity: { provide_liquidity: {
coins_in: ActionCoin[] coins_in: ActionCoin[]
lp_token_out: string lp_token_out: string
minimum_receive: Uint128 slippage?: Decimal
minimum_receive?: Uint128
} }
} }
| { | {
withdraw_liquidity: { withdraw_liquidity: {
lp_token: ActionCoin lp_token: ActionCoin
slippage?: Decimal
} }
} }
| { | {
@ -148,7 +147,21 @@ export type ActionAmount =
| { | {
exact: Uint128 exact: Uint128
} }
export type LiquidateRequestForVaultBaseForString =
| {
deposit: string
}
| {
lend: string
}
| {
vault: {
position_type: VaultPositionType
request_vault: VaultBaseForString
}
}
export type VaultPositionType = 'u_n_l_o_c_k_e_d' | 'l_o_c_k_e_d' | 'u_n_l_o_c_k_i_n_g' export type VaultPositionType = 'u_n_l_o_c_k_e_d' | 'l_o_c_k_e_d' | 'u_n_l_o_c_k_i_n_g'
export type AccountNftBaseForString = string
export type OwnerUpdate = export type OwnerUpdate =
| { | {
propose_new_owner: { propose_new_owner: {
@ -158,11 +171,17 @@ export type OwnerUpdate =
| 'clear_proposed' | 'clear_proposed'
| 'accept_proposed' | 'accept_proposed'
| 'abolish_owner_role' | 'abolish_owner_role'
| {
set_emergency_owner: {
emergency_owner: string
}
}
| 'clear_emergency_owner'
export type CallbackMsg = export type CallbackMsg =
| { | {
withdraw: { withdraw: {
account_id: string account_id: string
coin: Coin coin: ActionCoin
recipient: Addr recipient: Addr
} }
} }
@ -175,19 +194,44 @@ export type CallbackMsg =
| { | {
repay: { repay: {
account_id: string account_id: string
coin?: ActionCoin
denom?: string
amount?: ActionAmount
}
}
| {
repay_for_recipient: {
benefactor_account_id: string
coin: ActionCoin coin: ActionCoin
recipient_account_id: string
} }
} }
| { | {
lend: { lend: {
account_id: string account_id: string
coin: Coin coin: ActionCoin
}
}
| {
reclaim: {
account_id: string
coin: ActionCoin
}
}
| {
claim_rewards: {
account_id: string
} }
} }
| { | {
assert_max_ltv: { assert_max_ltv: {
account_id: string account_id: string
prev_health: Health prev_health_state: HealthState
}
}
| {
assert_deposit_caps: {
denoms: string[]
} }
} }
| { | {
@ -226,20 +270,11 @@ export type CallbackMsg =
} }
} }
| { | {
liquidate_coin: { liquidate: {
debt_coin: Coin debt_coin: Coin
liquidatee_account_id: string liquidatee_account_id: string
liquidator_account_id: string liquidator_account_id: string
request_coin_denom: string request: LiquidateRequestForVaultBaseForAddr
}
}
| {
liquidate_vault: {
debt_coin: Coin
liquidatee_account_id: string
liquidator_account_id: string
position_type: VaultPositionType
request_vault: VaultBaseForAddr
} }
} }
| { | {
@ -253,15 +288,31 @@ export type CallbackMsg =
| { | {
update_coin_balance: { update_coin_balance: {
account_id: string account_id: string
change: ChangeExpected
previous_balance: Coin previous_balance: Coin
} }
} }
| {
update_coin_balance_after_vault_liquidation: {
account_id: string
previous_balance: Coin
protocol_fee: Decimal
}
}
| { | {
provide_liquidity: { provide_liquidity: {
account_id: string account_id: string
coins_in: ActionCoin[] coins_in: ActionCoin[]
lp_token_out: string lp_token_out: string
minimum_receive: Uint128 slippage?: Decimal
minimum_receive?: Uint128
}
}
| {
withdraw_liquidity: {
account_id: string
lp_token: ActionCoin
slippage: Decimal
} }
} }
| { | {
@ -275,39 +326,74 @@ export type CallbackMsg =
account_id: string account_id: string
} }
} }
| {
assert_hls_rules: {
account_id: string
}
}
| {
remove_reentrancy_guard: {}
}
export type Addr = string export type Addr = string
export type HealthState =
| 'healthy'
| {
unhealthy: {
max_ltv_health_factor: Decimal
}
}
export type LiquidateRequestForVaultBaseForAddr =
| {
deposit: string
}
| {
lend: string
}
| {
vault: {
position_type: VaultPositionType
request_vault: VaultBaseForAddr
}
}
export type ChangeExpected = 'increase' | 'decrease'
export interface Coin {
amount: Uint128
denom: string
[k: string]: unknown
}
export interface ActionCoin { export interface ActionCoin {
amount: ActionAmount amount: ActionAmount
denom: string denom: string
} }
export interface VaultBaseForString {
address: string
}
export interface ConfigUpdates { export interface ConfigUpdates {
account_nft?: string | null account_nft?: AccountNftBaseForString | null
allowed_coins?: string[] | null health_contract?: HealthContractBaseForString | null
max_close_factor?: Decimal | null incentives?: IncentivesUnchecked | null
max_slippage?: Decimal | null
max_unlocking_positions?: Uint128 | null max_unlocking_positions?: Uint128 | null
oracle?: OracleBaseForString | null oracle?: OracleBaseForString | null
red_bank?: RedBankUnchecked | null
rewards_collector?: string | null
swapper?: SwapperBaseForString | null swapper?: SwapperBaseForString | null
vault_configs?: VaultInstantiateConfig[] | null vault_configs?: VaultInstantiateConfig[] | null
zapper?: ZapperBaseForString | null zapper?: ZapperBaseForString | null
} }
export interface NftConfigUpdates { export interface NftConfigUpdates {
credit_manager_contract_addr?: string | null
health_contract_addr?: string | null
max_value_for_burn?: Uint128 | null max_value_for_burn?: Uint128 | null
proposed_new_minter?: string | null
}
export interface Health {
liquidation_health_factor?: Decimal | null
liquidation_threshold_adjusted_collateral: Uint128
max_ltv_adjusted_collateral: Uint128
max_ltv_health_factor?: Decimal | null
total_collateral_value: Uint128
total_debt_value: Uint128
} }
export interface VaultBaseForAddr { export interface VaultBaseForAddr {
address: Addr address: Addr
} }
export type QueryMsg = export type QueryMsg =
| { | {
config: {} account_kind: {
account_id: string
}
} }
| { | {
vaults_info: { vaults_info: {
@ -316,18 +402,22 @@ export type QueryMsg =
} }
} }
| { | {
allowed_coins: { accounts: {
limit?: number | null limit?: number | null
owner: string
start_after?: string | null start_after?: string | null
} }
} }
| { | {
positions: { config: {}
account_id: string }
| {
vault_utilization: {
vault: VaultBaseForString
} }
} }
| { | {
health: { positions: {
account_id: string account_id: string
} }
} }
@ -352,38 +442,12 @@ export type QueryMsg =
start_after?: string | null start_after?: string | null
} }
} }
| {
all_lent_shares: {
limit?: number | null
start_after?: [string, string] | null
}
}
| {
total_lent_shares: string
}
| {
all_total_lent_shares: {
limit?: number | null
start_after?: string | null
}
}
| { | {
all_vault_positions: { all_vault_positions: {
limit?: number | null limit?: number | null
start_after?: [string, string] | null start_after?: [string, string] | null
} }
} }
| {
total_vault_coin_balance: {
vault: VaultBaseForString
}
}
| {
all_total_vault_coin_balances: {
limit?: number | null
start_after?: VaultBaseForString | null
}
}
| { | {
estimate_provide_liquidity: { estimate_provide_liquidity: {
coins_in: Coin[] coins_in: Coin[]
@ -395,6 +459,38 @@ export type QueryMsg =
lp_token: Coin lp_token: Coin
} }
} }
| {
vault_position_value: {
vault_position: VaultPosition
}
}
export type VaultPositionAmount =
| {
unlocked: VaultAmount
}
| {
locking: LockingVaultAmount
}
export type VaultAmount = string
export type VaultAmount1 = string
export type UnlockingPositions = VaultUnlockingPosition[]
export interface VaultPosition {
amount: VaultPositionAmount
vault: VaultBaseForAddr
}
export interface LockingVaultAmount {
locked: VaultAmount1
unlocking: UnlockingPositions
}
export interface VaultUnlockingPosition {
coin: Coin
id: number
}
export type ArrayOfAccount = Account[]
export interface Account {
id: string
kind: AccountKind
}
export type ArrayOfCoinBalanceResponseItem = CoinBalanceResponseItem[] export type ArrayOfCoinBalanceResponseItem = CoinBalanceResponseItem[]
export interface CoinBalanceResponseItem { export interface CoinBalanceResponseItem {
account_id: string account_id: string
@ -412,71 +508,42 @@ export interface DebtShares {
denom: string denom: string
shares: Uint128 shares: Uint128
} }
export type ArrayOfLentShares = LentShares[]
export interface LentShares {
denom: string
shares: Uint128
}
export type ArrayOfVaultWithBalance = VaultWithBalance[]
export interface VaultWithBalance {
balance: Uint128
vault: VaultBaseForAddr
}
export type VaultPositionAmount =
| {
unlocked: VaultAmount
}
| {
locking: LockingVaultAmount
}
export type VaultAmount = string
export type VaultAmount1 = string
export type UnlockingPositions = VaultUnlockingPosition[]
export type ArrayOfVaultPositionResponseItem = VaultPositionResponseItem[] export type ArrayOfVaultPositionResponseItem = VaultPositionResponseItem[]
export interface VaultPositionResponseItem { export interface VaultPositionResponseItem {
account_id: string account_id: string
position: VaultPosition position: VaultPosition
} }
export interface VaultPosition {
amount: VaultPositionAmount
vault: VaultBaseForAddr
}
export interface LockingVaultAmount {
locked: VaultAmount1
unlocking: UnlockingPositions
}
export interface VaultUnlockingPosition {
coin: Coin
id: number
}
export type ArrayOfString = string[]
export interface ConfigResponse { export interface ConfigResponse {
account_nft?: string | null account_nft?: string | null
max_close_factor: Decimal health_contract: string
incentives: string
max_slippage: Decimal
max_unlocking_positions: Uint128 max_unlocking_positions: Uint128
oracle: string oracle: string
owner?: string | null ownership: OwnerResponse
proposed_new_owner?: string | null params: string
red_bank: string red_bank: string
rewards_collector?: RewardsCollector | null
swapper: string swapper: string
zapper: string zapper: string
} }
export type ArrayOfCoin = Coin[] export interface OwnerResponse {
export interface HealthResponse { abolished: boolean
above_max_ltv: boolean emergency_owner?: string | null
liquidatable: boolean initialized: boolean
liquidation_health_factor?: Decimal | null owner?: string | null
liquidation_threshold_adjusted_collateral: Uint128 proposed?: string | null
max_ltv_adjusted_collateral: Uint128
max_ltv_health_factor?: Decimal | null
total_collateral_value: Uint128
total_debt_value: Uint128
} }
export interface RewardsCollector {
account_id: string
address: string
}
export type ArrayOfCoin = Coin[]
export interface Positions { export interface Positions {
account_id: string account_id: string
debts: DebtAmount[] debts: DebtAmount[]
deposits: Coin[] deposits: Coin[]
lends: LentAmount[] lends: Coin[]
vaults: VaultPosition[] vaults: VaultPosition[]
} }
export interface DebtAmount { export interface DebtAmount {
@ -484,14 +551,16 @@ export interface DebtAmount {
denom: string denom: string
shares: Uint128 shares: Uint128
} }
export interface LentAmount { export interface VaultPositionValue {
base_coin: CoinValue
vault_coin: CoinValue
}
export interface CoinValue {
amount: Uint128 amount: Uint128
denom: string denom: string
shares: Uint128 value: Uint128
} }
export type ArrayOfVaultInfoResponse = VaultInfoResponse[] export interface VaultUtilizationResponse {
export interface VaultInfoResponse {
config: VaultConfig
utilization: Coin utilization: Coin
vault: VaultBaseForString vault: VaultBaseForString
} }

View File

@ -1,6 +1,6 @@
// @ts-nocheck // @ts-nocheck
/** /**
* This file was automatically generated by @cosmwasm/ts-codegen@0.24.0. * This file was automatically generated by @cosmwasm/ts-codegen@0.33.0.
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
* and run the @cosmwasm/ts-codegen generate command to regenerate this file. * and run the @cosmwasm/ts-codegen generate command to regenerate this file.
*/ */

View File

@ -0,0 +1,257 @@
// @ts-nocheck
/**
* This file was automatically generated by @cosmwasm/ts-codegen@0.33.0.
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
* and run the @cosmwasm/ts-codegen generate command to regenerate this file.
*/
import { StdFee } from '@cosmjs/amino'
import { CosmWasmClient, ExecuteResult, SigningCosmWasmClient } from '@cosmjs/cosmwasm-stargate'
import {
ArrayOfAssetParamsBaseForAddr,
ArrayOfVaultConfigBaseForAddr,
AssetParamsBaseForAddr,
AssetParamsUpdate,
Coin,
Decimal,
EmergencyUpdate,
OwnerResponse,
OwnerUpdate,
TotalDepositResponse,
VaultConfigBaseForAddr,
VaultConfigUpdate,
} from './MarsParams.types'
export interface MarsParamsReadOnlyInterface {
contractAddress: string
owner: () => Promise<OwnerResponse>
assetParams: ({ denom }: { denom: string }) => Promise<AssetParamsBaseForAddr>
allAssetParams: ({
limit,
startAfter,
}: {
limit?: number
startAfter?: string
}) => Promise<ArrayOfAssetParamsBaseForAddr>
vaultConfig: ({ address }: { address: string }) => Promise<VaultConfigBaseForAddr>
allVaultConfigs: ({
limit,
startAfter,
}: {
limit?: number
startAfter?: string
}) => Promise<ArrayOfVaultConfigBaseForAddr>
targetHealthFactor: () => Promise<Decimal>
totalDeposit: ({ denom }: { denom: string }) => Promise<TotalDepositResponse>
}
export class MarsParamsQueryClient implements MarsParamsReadOnlyInterface {
client: CosmWasmClient
contractAddress: string
constructor(client: CosmWasmClient, contractAddress: string) {
this.client = client
this.contractAddress = contractAddress
this.owner = this.owner.bind(this)
this.assetParams = this.assetParams.bind(this)
this.allAssetParams = this.allAssetParams.bind(this)
this.vaultConfig = this.vaultConfig.bind(this)
this.allVaultConfigs = this.allVaultConfigs.bind(this)
this.targetHealthFactor = this.targetHealthFactor.bind(this)
this.totalDeposit = this.totalDeposit.bind(this)
}
owner = async (): Promise<OwnerResponse> => {
return this.client.queryContractSmart(this.contractAddress, {
owner: {},
})
}
assetParams = async ({ denom }: { denom: string }): Promise<AssetParamsBaseForAddr> => {
return this.client.queryContractSmart(this.contractAddress, {
asset_params: {
denom,
},
})
}
allAssetParams = async ({
limit,
startAfter,
}: {
limit?: number
startAfter?: string
}): Promise<ArrayOfAssetParamsBaseForAddr> => {
return this.client.queryContractSmart(this.contractAddress, {
all_asset_params: {
limit,
start_after: startAfter,
},
})
}
vaultConfig = async ({ address }: { address: string }): Promise<VaultConfigBaseForAddr> => {
return this.client.queryContractSmart(this.contractAddress, {
vault_config: {
address,
},
})
}
allVaultConfigs = async ({
limit,
startAfter,
}: {
limit?: number
startAfter?: string
}): Promise<ArrayOfVaultConfigBaseForAddr> => {
return this.client.queryContractSmart(this.contractAddress, {
all_vault_configs: {
limit,
start_after: startAfter,
},
})
}
targetHealthFactor = async (): Promise<Decimal> => {
return this.client.queryContractSmart(this.contractAddress, {
target_health_factor: {},
})
}
totalDeposit = async ({ denom }: { denom: string }): Promise<TotalDepositResponse> => {
return this.client.queryContractSmart(this.contractAddress, {
total_deposit: {
denom,
},
})
}
}
export interface MarsParamsInterface extends MarsParamsReadOnlyInterface {
contractAddress: string
sender: string
updateOwner: (
ownerUpdate: OwnerUpdate,
fee?: number | StdFee | 'auto',
memo?: string,
_funds?: Coin[],
) => Promise<ExecuteResult>
updateTargetHealthFactor: (
fee?: number | StdFee | 'auto',
memo?: string,
_funds?: Coin[],
) => Promise<ExecuteResult>
updateAssetParams: (
assetParamsUpdate: AssetParamsUpdate,
fee?: number | StdFee | 'auto',
memo?: string,
_funds?: Coin[],
) => Promise<ExecuteResult>
updateVaultConfig: (
vaultConfigUpdate: VaultConfigUpdate,
fee?: number | StdFee | 'auto',
memo?: string,
_funds?: Coin[],
) => Promise<ExecuteResult>
emergencyUpdate: (
emergencyUpdate: EmergencyUpdate,
fee?: number | StdFee | 'auto',
memo?: string,
_funds?: Coin[],
) => Promise<ExecuteResult>
}
export class MarsParamsClient extends MarsParamsQueryClient implements MarsParamsInterface {
client: SigningCosmWasmClient
sender: string
contractAddress: string
constructor(client: SigningCosmWasmClient, sender: string, contractAddress: string) {
super(client, contractAddress)
this.client = client
this.sender = sender
this.contractAddress = contractAddress
this.updateOwner = this.updateOwner.bind(this)
this.updateTargetHealthFactor = this.updateTargetHealthFactor.bind(this)
this.updateAssetParams = this.updateAssetParams.bind(this)
this.updateVaultConfig = this.updateVaultConfig.bind(this)
this.emergencyUpdate = this.emergencyUpdate.bind(this)
}
updateOwner = async (
ownerUpdate: OwnerUpdate,
fee: number | StdFee | 'auto' = 'auto',
memo?: string,
_funds?: Coin[],
): Promise<ExecuteResult> => {
return await this.client.execute(
this.sender,
this.contractAddress,
{
update_owner: ownerUpdate,
},
fee,
memo,
_funds,
)
}
updateTargetHealthFactor = async (
fee: number | StdFee | 'auto' = 'auto',
memo?: string,
_funds?: Coin[],
): Promise<ExecuteResult> => {
return await this.client.execute(
this.sender,
this.contractAddress,
{
update_target_health_factor: {},
},
fee,
memo,
_funds,
)
}
updateAssetParams = async (
assetParamsUpdate: AssetParamsUpdate,
fee: number | StdFee | 'auto' = 'auto',
memo?: string,
_funds?: Coin[],
): Promise<ExecuteResult> => {
return await this.client.execute(
this.sender,
this.contractAddress,
{
update_asset_params: assetParamsUpdate,
},
fee,
memo,
_funds,
)
}
updateVaultConfig = async (
vaultConfigUpdate: VaultConfigUpdate,
fee: number | StdFee | 'auto' = 'auto',
memo?: string,
_funds?: Coin[],
): Promise<ExecuteResult> => {
return await this.client.execute(
this.sender,
this.contractAddress,
{
update_vault_config: vaultConfigUpdate,
},
fee,
memo,
_funds,
)
}
emergencyUpdate = async (
emergencyUpdate: EmergencyUpdate,
fee: number | StdFee | 'auto' = 'auto',
memo?: string,
_funds?: Coin[],
): Promise<ExecuteResult> => {
return await this.client.execute(
this.sender,
this.contractAddress,
{
emergency_update: emergencyUpdate,
},
fee,
memo,
_funds,
)
}
}

View File

@ -0,0 +1,135 @@
// @ts-nocheck
/**
* This file was automatically generated by @cosmwasm/ts-codegen@0.33.0.
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
* and run the @cosmwasm/ts-codegen generate command to regenerate this file.
*/
import { MsgExecuteContractEncodeObject } from '@cosmjs/cosmwasm-stargate'
import { toUtf8 } from '@cosmjs/encoding'
import { MsgExecuteContract } from 'cosmjs-types/cosmwasm/wasm/v1/tx'
import {
AssetParamsUpdate,
Coin,
EmergencyUpdate,
OwnerUpdate,
VaultConfigUpdate,
} from './MarsParams.types'
export interface MarsParamsMessage {
contractAddress: string
sender: string
updateOwner: (ownerUpdate: OwnerUpdate, _funds?: Coin[]) => MsgExecuteContractEncodeObject
updateTargetHealthFactor: (_funds?: Coin[]) => MsgExecuteContractEncodeObject
updateAssetParams: (
assetParamsUpdate: AssetParamsUpdate,
_funds?: Coin[],
) => MsgExecuteContractEncodeObject
updateVaultConfig: (
vaultConfigUpdate: VaultConfigUpdate,
_funds?: Coin[],
) => MsgExecuteContractEncodeObject
emergencyUpdate: (
emergencyUpdate: EmergencyUpdate,
_funds?: Coin[],
) => MsgExecuteContractEncodeObject
}
export class MarsParamsMessageComposer implements MarsParamsMessage {
sender: string
contractAddress: string
constructor(sender: string, contractAddress: string) {
this.sender = sender
this.contractAddress = contractAddress
this.updateOwner = this.updateOwner.bind(this)
this.updateTargetHealthFactor = this.updateTargetHealthFactor.bind(this)
this.updateAssetParams = this.updateAssetParams.bind(this)
this.updateVaultConfig = this.updateVaultConfig.bind(this)
this.emergencyUpdate = this.emergencyUpdate.bind(this)
}
updateOwner = (ownerUpdate: OwnerUpdate, _funds?: Coin[]): MsgExecuteContractEncodeObject => {
return {
typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract',
value: MsgExecuteContract.fromPartial({
sender: this.sender,
contract: this.contractAddress,
msg: toUtf8(
JSON.stringify({
update_owner: ownerUpdate,
}),
),
funds: _funds,
}),
}
}
updateTargetHealthFactor = (_funds?: Coin[]): MsgExecuteContractEncodeObject => {
return {
typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract',
value: MsgExecuteContract.fromPartial({
sender: this.sender,
contract: this.contractAddress,
msg: toUtf8(
JSON.stringify({
update_target_health_factor: {},
}),
),
funds: _funds,
}),
}
}
updateAssetParams = (
assetParamsUpdate: AssetParamsUpdate,
_funds?: Coin[],
): MsgExecuteContractEncodeObject => {
return {
typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract',
value: MsgExecuteContract.fromPartial({
sender: this.sender,
contract: this.contractAddress,
msg: toUtf8(
JSON.stringify({
update_asset_params: assetParamsUpdate,
}),
),
funds: _funds,
}),
}
}
updateVaultConfig = (
vaultConfigUpdate: VaultConfigUpdate,
_funds?: Coin[],
): MsgExecuteContractEncodeObject => {
return {
typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract',
value: MsgExecuteContract.fromPartial({
sender: this.sender,
contract: this.contractAddress,
msg: toUtf8(
JSON.stringify({
update_vault_config: vaultConfigUpdate,
}),
),
funds: _funds,
}),
}
}
emergencyUpdate = (
emergencyUpdate: EmergencyUpdate,
_funds?: Coin[],
): MsgExecuteContractEncodeObject => {
return {
typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract',
value: MsgExecuteContract.fromPartial({
sender: this.sender,
contract: this.contractAddress,
msg: toUtf8(
JSON.stringify({
emergency_update: emergencyUpdate,
}),
),
funds: _funds,
}),
}
}
}

View File

@ -0,0 +1,306 @@
// @ts-nocheck
/**
* This file was automatically generated by @cosmwasm/ts-codegen@0.33.0.
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
* and run the @cosmwasm/ts-codegen generate command to regenerate this file.
*/
import { StdFee } from '@cosmjs/amino'
import { ExecuteResult } from '@cosmjs/cosmwasm-stargate'
import { useMutation, UseMutationOptions, useQuery, UseQueryOptions } from '@tanstack/react-query'
import { MarsParamsClient, MarsParamsQueryClient } from './MarsParams.client'
import {
ArrayOfAssetParamsBaseForAddr,
ArrayOfVaultConfigBaseForAddr,
AssetParamsBaseForAddr,
AssetParamsUpdate,
Coin,
Decimal,
EmergencyUpdate,
OwnerResponse,
OwnerUpdate,
TotalDepositResponse,
VaultConfigBaseForAddr,
VaultConfigUpdate,
} from './MarsParams.types'
export const marsParamsQueryKeys = {
contract: [
{
contract: 'marsParams',
},
] as const,
address: (contractAddress: string | undefined) =>
[{ ...marsParamsQueryKeys.contract[0], address: contractAddress }] as const,
owner: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[{ ...marsParamsQueryKeys.address(contractAddress)[0], method: 'owner', args }] as const,
assetParams: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[{ ...marsParamsQueryKeys.address(contractAddress)[0], method: 'asset_params', args }] as const,
allAssetParams: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[
{ ...marsParamsQueryKeys.address(contractAddress)[0], method: 'all_asset_params', args },
] as const,
vaultConfig: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[{ ...marsParamsQueryKeys.address(contractAddress)[0], method: 'vault_config', args }] as const,
allVaultConfigs: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[
{ ...marsParamsQueryKeys.address(contractAddress)[0], method: 'all_vault_configs', args },
] as const,
targetHealthFactor: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[
{ ...marsParamsQueryKeys.address(contractAddress)[0], method: 'target_health_factor', args },
] as const,
totalDeposit: (contractAddress: string | undefined, args?: Record<string, unknown>) =>
[
{ ...marsParamsQueryKeys.address(contractAddress)[0], method: 'total_deposit', args },
] as const,
}
export interface MarsParamsReactQuery<TResponse, TData = TResponse> {
client: MarsParamsQueryClient | undefined
options?: Omit<
UseQueryOptions<TResponse, Error, TData>,
"'queryKey' | 'queryFn' | 'initialData'"
> & {
initialData?: undefined
}
}
export interface MarsParamsTotalDepositQuery<TData>
extends MarsParamsReactQuery<TotalDepositResponse, TData> {
args: {
denom: string
}
}
export function useMarsParamsTotalDepositQuery<TData = TotalDepositResponse>({
client,
args,
options,
}: MarsParamsTotalDepositQuery<TData>) {
return useQuery<TotalDepositResponse, Error, TData>(
marsParamsQueryKeys.totalDeposit(client?.contractAddress, args),
() =>
client
? client.totalDeposit({
denom: args.denom,
})
: Promise.reject(new Error('Invalid client')),
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
)
}
export interface MarsParamsTargetHealthFactorQuery<TData>
extends MarsParamsReactQuery<Decimal, TData> {}
export function useMarsParamsTargetHealthFactorQuery<TData = Decimal>({
client,
options,
}: MarsParamsTargetHealthFactorQuery<TData>) {
return useQuery<Decimal, Error, TData>(
marsParamsQueryKeys.targetHealthFactor(client?.contractAddress),
() => (client ? client.targetHealthFactor() : Promise.reject(new Error('Invalid client'))),
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
)
}
export interface MarsParamsAllVaultConfigsQuery<TData>
extends MarsParamsReactQuery<ArrayOfVaultConfigBaseForAddr, TData> {
args: {
limit?: number
startAfter?: string
}
}
export function useMarsParamsAllVaultConfigsQuery<TData = ArrayOfVaultConfigBaseForAddr>({
client,
args,
options,
}: MarsParamsAllVaultConfigsQuery<TData>) {
return useQuery<ArrayOfVaultConfigBaseForAddr, Error, TData>(
marsParamsQueryKeys.allVaultConfigs(client?.contractAddress, args),
() =>
client
? client.allVaultConfigs({
limit: args.limit,
startAfter: args.startAfter,
})
: Promise.reject(new Error('Invalid client')),
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
)
}
export interface MarsParamsVaultConfigQuery<TData>
extends MarsParamsReactQuery<VaultConfigBaseForAddr, TData> {
args: {
address: string
}
}
export function useMarsParamsVaultConfigQuery<TData = VaultConfigBaseForAddr>({
client,
args,
options,
}: MarsParamsVaultConfigQuery<TData>) {
return useQuery<VaultConfigBaseForAddr, Error, TData>(
marsParamsQueryKeys.vaultConfig(client?.contractAddress, args),
() =>
client
? client.vaultConfig({
address: args.address,
})
: Promise.reject(new Error('Invalid client')),
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
)
}
export interface MarsParamsAllAssetParamsQuery<TData>
extends MarsParamsReactQuery<ArrayOfAssetParamsBaseForAddr, TData> {
args: {
limit?: number
startAfter?: string
}
}
export function useMarsParamsAllAssetParamsQuery<TData = ArrayOfAssetParamsBaseForAddr>({
client,
args,
options,
}: MarsParamsAllAssetParamsQuery<TData>) {
return useQuery<ArrayOfAssetParamsBaseForAddr, Error, TData>(
marsParamsQueryKeys.allAssetParams(client?.contractAddress, args),
() =>
client
? client.allAssetParams({
limit: args.limit,
startAfter: args.startAfter,
})
: Promise.reject(new Error('Invalid client')),
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
)
}
export interface MarsParamsAssetParamsQuery<TData>
extends MarsParamsReactQuery<AssetParamsBaseForAddr, TData> {
args: {
denom: string
}
}
export function useMarsParamsAssetParamsQuery<TData = AssetParamsBaseForAddr>({
client,
args,
options,
}: MarsParamsAssetParamsQuery<TData>) {
return useQuery<AssetParamsBaseForAddr, Error, TData>(
marsParamsQueryKeys.assetParams(client?.contractAddress, args),
() =>
client
? client.assetParams({
denom: args.denom,
})
: Promise.reject(new Error('Invalid client')),
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
)
}
export interface MarsParamsOwnerQuery<TData> extends MarsParamsReactQuery<OwnerResponse, TData> {}
export function useMarsParamsOwnerQuery<TData = OwnerResponse>({
client,
options,
}: MarsParamsOwnerQuery<TData>) {
return useQuery<OwnerResponse, Error, TData>(
marsParamsQueryKeys.owner(client?.contractAddress),
() => (client ? client.owner() : Promise.reject(new Error('Invalid client'))),
{ ...options, enabled: !!client && (options?.enabled != undefined ? options.enabled : true) },
)
}
export interface MarsParamsEmergencyUpdateMutation {
client: MarsParamsClient
msg: EmergencyUpdate
args?: {
fee?: number | StdFee | 'auto'
memo?: string
funds?: Coin[]
}
}
export function useMarsParamsEmergencyUpdateMutation(
options?: Omit<
UseMutationOptions<ExecuteResult, Error, MarsParamsEmergencyUpdateMutation>,
'mutationFn'
>,
) {
return useMutation<ExecuteResult, Error, MarsParamsEmergencyUpdateMutation>(
({ client, msg, args: { fee, memo, funds } = {} }) =>
client.emergencyUpdate(msg, fee, memo, funds),
options,
)
}
export interface MarsParamsUpdateVaultConfigMutation {
client: MarsParamsClient
msg: VaultConfigUpdate
args?: {
fee?: number | StdFee | 'auto'
memo?: string
funds?: Coin[]
}
}
export function useMarsParamsUpdateVaultConfigMutation(
options?: Omit<
UseMutationOptions<ExecuteResult, Error, MarsParamsUpdateVaultConfigMutation>,
'mutationFn'
>,
) {
return useMutation<ExecuteResult, Error, MarsParamsUpdateVaultConfigMutation>(
({ client, msg, args: { fee, memo, funds } = {} }) =>
client.updateVaultConfig(msg, fee, memo, funds),
options,
)
}
export interface MarsParamsUpdateAssetParamsMutation {
client: MarsParamsClient
msg: AssetParamsUpdate
args?: {
fee?: number | StdFee | 'auto'
memo?: string
funds?: Coin[]
}
}
export function useMarsParamsUpdateAssetParamsMutation(
options?: Omit<
UseMutationOptions<ExecuteResult, Error, MarsParamsUpdateAssetParamsMutation>,
'mutationFn'
>,
) {
return useMutation<ExecuteResult, Error, MarsParamsUpdateAssetParamsMutation>(
({ client, msg, args: { fee, memo, funds } = {} }) =>
client.updateAssetParams(msg, fee, memo, funds),
options,
)
}
export interface MarsParamsUpdateTargetHealthFactorMutation {
client: MarsParamsClient
args?: {
fee?: number | StdFee | 'auto'
memo?: string
funds?: Coin[]
}
}
export function useMarsParamsUpdateTargetHealthFactorMutation(
options?: Omit<
UseMutationOptions<ExecuteResult, Error, MarsParamsUpdateTargetHealthFactorMutation>,
'mutationFn'
>,
) {
return useMutation<ExecuteResult, Error, MarsParamsUpdateTargetHealthFactorMutation>(
({ client, msg, args: { fee, memo, funds } = {} }) =>
client.updateTargetHealthFactor(msg, fee, memo, funds),
options,
)
}
export interface MarsParamsUpdateOwnerMutation {
client: MarsParamsClient
msg: OwnerUpdate
args?: {
fee?: number | StdFee | 'auto'
memo?: string
funds?: Coin[]
}
}
export function useMarsParamsUpdateOwnerMutation(
options?: Omit<
UseMutationOptions<ExecuteResult, Error, MarsParamsUpdateOwnerMutation>,
'mutationFn'
>,
) {
return useMutation<ExecuteResult, Error, MarsParamsUpdateOwnerMutation>(
({ client, msg, args: { fee, memo, funds } = {} }) => client.updateOwner(msg, fee, memo, funds),
options,
)
}

View File

@ -0,0 +1,215 @@
// @ts-nocheck
/**
* This file was automatically generated by @cosmwasm/ts-codegen@0.33.0.
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
* and run the @cosmwasm/ts-codegen generate command to regenerate this file.
*/
export type Decimal = string
export interface InstantiateMsg {
address_provider: string
owner: string
target_health_factor: Decimal
}
export type ExecuteMsg =
| {
update_owner: OwnerUpdate
}
| {
update_target_health_factor: Decimal
}
| {
update_asset_params: AssetParamsUpdate
}
| {
update_vault_config: VaultConfigUpdate
}
| {
emergency_update: EmergencyUpdate
}
export type OwnerUpdate =
| {
propose_new_owner: {
proposed: string
}
}
| 'clear_proposed'
| 'accept_proposed'
| 'abolish_owner_role'
| {
set_emergency_owner: {
emergency_owner: string
}
}
| 'clear_emergency_owner'
export type AssetParamsUpdate = {
add_or_update: {
params: AssetParamsBaseForString
}
}
export type HlsAssetTypeForString =
| {
coin: {
denom: string
}
}
| {
vault: {
addr: string
}
}
export type Uint128 = string
export type VaultConfigUpdate = {
add_or_update: {
config: VaultConfigBaseForString
}
}
export type EmergencyUpdate =
| {
credit_manager: CmEmergencyUpdate
}
| {
red_bank: RedBankEmergencyUpdate
}
export type CmEmergencyUpdate =
| {
set_zero_max_ltv_on_vault: string
}
| {
set_zero_deposit_cap_on_vault: string
}
| {
disallow_coin: string
}
export type RedBankEmergencyUpdate = {
disable_borrowing: string
}
export interface AssetParamsBaseForString {
credit_manager: CmSettingsForString
denom: string
deposit_cap: Uint128
liquidation_bonus: LiquidationBonus
liquidation_threshold: Decimal
max_loan_to_value: Decimal
protocol_liquidation_fee: Decimal
red_bank: RedBankSettings
}
export interface CmSettingsForString {
hls?: HlsParamsBaseForString | null
whitelisted: boolean
}
export interface HlsParamsBaseForString {
correlations: HlsAssetTypeForString[]
liquidation_threshold: Decimal
max_loan_to_value: Decimal
}
export interface LiquidationBonus {
max_lb: Decimal
min_lb: Decimal
slope: Decimal
starting_lb: Decimal
}
export interface RedBankSettings {
borrow_enabled: boolean
deposit_enabled: boolean
}
export interface VaultConfigBaseForString {
addr: string
deposit_cap: Coin
hls?: HlsParamsBaseForString | null
liquidation_threshold: Decimal
max_loan_to_value: Decimal
whitelisted: boolean
}
export interface Coin {
amount: Uint128
denom: string
[k: string]: unknown
}
export type QueryMsg =
| {
owner: {}
}
| {
asset_params: {
denom: string
}
}
| {
all_asset_params: {
limit?: number | null
start_after?: string | null
}
}
| {
vault_config: {
address: string
}
}
| {
all_vault_configs: {
limit?: number | null
start_after?: string | null
}
}
| {
target_health_factor: {}
}
| {
total_deposit: {
denom: string
}
}
export type HlsAssetTypeForAddr =
| {
coin: {
denom: string
}
}
| {
vault: {
addr: Addr
}
}
export type Addr = string
export type ArrayOfAssetParamsBaseForAddr = AssetParamsBaseForAddr[]
export interface AssetParamsBaseForAddr {
credit_manager: CmSettingsForAddr
denom: string
deposit_cap: Uint128
liquidation_bonus: LiquidationBonus
liquidation_threshold: Decimal
max_loan_to_value: Decimal
protocol_liquidation_fee: Decimal
red_bank: RedBankSettings
}
export interface CmSettingsForAddr {
hls?: HlsParamsBaseForAddr | null
whitelisted: boolean
}
export interface HlsParamsBaseForAddr {
correlations: HlsAssetTypeForAddr[]
liquidation_threshold: Decimal
max_loan_to_value: Decimal
}
export type ArrayOfVaultConfigBaseForAddr = VaultConfigBaseForAddr[]
export interface VaultConfigBaseForAddr {
addr: Addr
deposit_cap: Coin
hls?: HlsParamsBaseForAddr | null
liquidation_threshold: Decimal
max_loan_to_value: Decimal
whitelisted: boolean
}
export interface OwnerResponse {
abolished: boolean
emergency_owner?: string | null
initialized: boolean
owner?: string | null
proposed?: string | null
}
export interface TotalDepositResponse {
amount: Uint128
cap: Uint128
denom: string
}

View File

@ -0,0 +1,14 @@
// @ts-nocheck
/**
* This file was automatically generated by @cosmwasm/ts-codegen@0.33.0.
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
* and run the @cosmwasm/ts-codegen generate command to regenerate this file.
*/
import * as _25 from './MarsParams.client'
import * as _26 from './MarsParams.message-composer'
import * as _27 from './MarsParams.react-query'
import * as _24 from './MarsParams.types'
export namespace contracts {
export const MarsParams = { ..._24, ..._25, ..._26, ..._27 }
}

View File

@ -109,21 +109,30 @@ interface PositionApyBreakdown extends ApyBreakdown {
net: number | null net: number | null
} }
interface ApyBreakdown { interface AprResponse {
vaultAddress: string vaults: AprVault[]
apys: { type: string; value: number }[] | null
fees: { type: string; value: number }[] | null
total: number | null
} }
interface ApolloAprResponse { interface AprVault {
contract_address: string chain: string
address: string
apr: AprBreakdown apr: AprBreakdown
} }
interface AprBreakdown { interface AprBreakdown {
aprs: { type: string; value: number }[] start_timestamp: number
fees: { type: string; value: string | number }[] end_timestamp: number
period_diff: number
start_vault_token_price: number
end_vault_token_price: number
period_yield: number
period_daily_return: number
projected_apr: number
}
interface ApyBreakdown {
vaultAddress: string
total: number | null
} }
interface VaultCapData { interface VaultCapData {

View File

@ -4,7 +4,7 @@ interface NetworkConfig {
hiveUrl: string hiveUrl: string
rpcUrl: string rpcUrl: string
restUrl: string restUrl: string
apolloAprUrl?: string vaultAprUrl?: string
usdPriceUrl?: string usdPriceUrl?: string
chainIcon: string chainIcon: string
contracts: { contracts: {
@ -14,6 +14,7 @@ interface NetworkConfig {
accountNft?: string accountNft?: string
creditManager?: string creditManager?: string
pyth?: string pyth?: string
params?: string
} }
assets: { assets: {
base: Asset base: Asset

300
yarn.lock
View File

@ -1782,7 +1782,7 @@
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13": "@jridgewell/sourcemap-codec@^1.4.10":
version "1.4.15" version "1.4.15"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
@ -1871,10 +1871,10 @@
resolved "https://registry.yarnpkg.com/@kurkle/color/-/color-0.3.2.tgz#5acd38242e8bde4f9986e7913c8fdf49d3aa199f" resolved "https://registry.yarnpkg.com/@kurkle/color/-/color-0.3.2.tgz#5acd38242e8bde4f9986e7913c8fdf49d3aa199f"
integrity sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw== integrity sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==
"@marsprotocol/wallet-connector@^2.1.2": "@marsprotocol/wallet-connector@^2.1.3":
version "2.1.2" version "2.1.3"
resolved "https://registry.yarnpkg.com/@marsprotocol/wallet-connector/-/wallet-connector-2.1.2.tgz#9d5d56fa379706630d09f3008226527055b997ef" resolved "https://registry.yarnpkg.com/@marsprotocol/wallet-connector/-/wallet-connector-2.1.3.tgz#eb30f9fd80ce54fca975c8de71a0514a40483b15"
integrity sha512-aHFjgbMo2x3kg3kA9g6Y24vATd5FWwUPcTeuQbk8dwPE8BcKfGhALp37iTMKFC1vdweC+pMn6TCjDtkJ7QhK3Q== integrity sha512-LVLUZsWpVl0zB4xxWlt/oFzPTLXrWsBw1VdiqOrIKXrCShyqckHM0QtBLfIBc5u4UXOnS0FAqWrc7PHjymGgPQ==
dependencies: dependencies:
"@cosmjs/cosmwasm-stargate" "^0.31.1" "@cosmjs/cosmwasm-stargate" "^0.31.1"
"@delphi-labs/shuttle-react" "^3.9.0" "@delphi-labs/shuttle-react" "^3.9.0"
@ -2229,27 +2229,6 @@
"@react-spring/shared" "~9.7.3" "@react-spring/shared" "~9.7.3"
"@react-spring/types" "~9.7.3" "@react-spring/types" "~9.7.3"
"@rollup/plugin-commonjs@24.0.0":
version "24.0.0"
resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.0.tgz#fb7cf4a6029f07ec42b25daa535c75b05a43f75c"
integrity sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g==
dependencies:
"@rollup/pluginutils" "^5.0.1"
commondir "^1.0.1"
estree-walker "^2.0.2"
glob "^8.0.3"
is-reference "1.2.1"
magic-string "^0.27.0"
"@rollup/pluginutils@^5.0.1":
version "5.0.2"
resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33"
integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==
dependencies:
"@types/estree" "^1.0.0"
estree-walker "^2.0.2"
picomatch "^2.3.1"
"@rushstack/eslint-patch@^1.1.3": "@rushstack/eslint-patch@^1.1.3":
version "1.3.2" version "1.3.2"
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.3.2.tgz#31b9c510d8cada9683549e1dbb4284cca5001faf" resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.3.2.tgz#31b9c510d8cada9683549e1dbb4284cca5001faf"
@ -2277,132 +2256,6 @@
"@noble/hashes" "~1.3.0" "@noble/hashes" "~1.3.0"
"@scure/base" "~1.1.0" "@scure/base" "~1.1.0"
"@sentry-internal/tracing@7.57.0":
version "7.57.0"
resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.57.0.tgz#cb761931b635f8f24c84be0eecfacb8516b20551"
integrity sha512-tpViyDd8AhQGYYhI94xi2aaDopXOPfL2Apwrtb3qirWkomIQ2K86W1mPmkce+B0cFOnW2Dxv/ZTFKz6ghjK75A==
dependencies:
"@sentry/core" "7.57.0"
"@sentry/types" "7.57.0"
"@sentry/utils" "7.57.0"
tslib "^2.4.1 || ^1.9.3"
"@sentry/browser@7.57.0":
version "7.57.0"
resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.57.0.tgz#6e724c9eac680dba99ced0fdf81be8d1e3b3bceb"
integrity sha512-E0HaYYlaqHFiIRZXxcvOO8Odvlt+TR1vFFXzqUWXPOvDRxURglTOCQ3EN/u6bxtAGJ6y/Zc2obgihTtypuel/w==
dependencies:
"@sentry-internal/tracing" "7.57.0"
"@sentry/core" "7.57.0"
"@sentry/replay" "7.57.0"
"@sentry/types" "7.57.0"
"@sentry/utils" "7.57.0"
tslib "^2.4.1 || ^1.9.3"
"@sentry/cli@^1.74.6":
version "1.75.2"
resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-1.75.2.tgz#2c38647b38300e52c9839612d42b7c23f8d6455b"
integrity sha512-CG0CKH4VCKWzEaegouWfCLQt9SFN+AieFESCatJ7zSuJmzF05ywpMusjxqRul6lMwfUhRKjGKOzcRJ1jLsfTBw==
dependencies:
https-proxy-agent "^5.0.0"
mkdirp "^0.5.5"
node-fetch "^2.6.7"
progress "^2.0.3"
proxy-from-env "^1.1.0"
which "^2.0.2"
"@sentry/core@7.57.0":
version "7.57.0"
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.57.0.tgz#65093d739c04f320a54395a21be955fcbe326acb"
integrity sha512-l014NudPH0vQlzybtXajPxYFfs9w762NoarjObC3gu76D1jzBBFzhdRelkGpDbSLNTIsKhEDDRpgAjBWJ9icfw==
dependencies:
"@sentry/types" "7.57.0"
"@sentry/utils" "7.57.0"
tslib "^2.4.1 || ^1.9.3"
"@sentry/integrations@7.57.0":
version "7.57.0"
resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.57.0.tgz#298085b3a2fe862cc70bc7f2143aa0fbc617322c"
integrity sha512-C3WZo5AGI2L0dj+mIjeZpdAwDEG2nDYvZbTzq5J9hVoHFdP3t7fOWBHSPkSFVtTdMaJrv+82aKnUefVCeAjxGg==
dependencies:
"@sentry/types" "7.57.0"
"@sentry/utils" "7.57.0"
localforage "^1.8.1"
tslib "^2.4.1 || ^1.9.3"
"@sentry/nextjs@^7.36.0":
version "7.57.0"
resolved "https://registry.yarnpkg.com/@sentry/nextjs/-/nextjs-7.57.0.tgz#a6fc7cb827eb28124e06baf10d160b619208129d"
integrity sha512-TH7Hhs833j1k2rM5K3AqiQ7+bxrTzANZazBLEK1YVec02PpnqflVuBHSdFxT6dG7ypxOpMkN36BN5INY5HHT0Q==
dependencies:
"@rollup/plugin-commonjs" "24.0.0"
"@sentry/core" "7.57.0"
"@sentry/integrations" "7.57.0"
"@sentry/node" "7.57.0"
"@sentry/react" "7.57.0"
"@sentry/types" "7.57.0"
"@sentry/utils" "7.57.0"
"@sentry/webpack-plugin" "1.20.0"
chalk "3.0.0"
rollup "2.78.0"
stacktrace-parser "^0.1.10"
tslib "^2.4.1 || ^1.9.3"
"@sentry/node@7.57.0":
version "7.57.0"
resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.57.0.tgz#31052f5988ed4496d7f3ff925240cf9b02d09941"
integrity sha512-63mjyUVM6sfJFVQ5TGVRVGUsoEfESl5ABzIW1W0s9gUiQPaG8SOdaQJglb2VNrkMYxnRHgD8Q9LUh/qcmUyPGw==
dependencies:
"@sentry-internal/tracing" "7.57.0"
"@sentry/core" "7.57.0"
"@sentry/types" "7.57.0"
"@sentry/utils" "7.57.0"
cookie "^0.4.1"
https-proxy-agent "^5.0.0"
lru_map "^0.3.3"
tslib "^2.4.1 || ^1.9.3"
"@sentry/react@7.57.0":
version "7.57.0"
resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.57.0.tgz#cf91f0115bcd2a8306d6c8a39d8e8b53d4b21814"
integrity sha512-XGNTjIoCG3naSmCU8qObd+y+CqAB6NQkGWOp2yyBwp2inyKF2ehJvDh6bIQloBYq2TmOJDa4NfXdMrkilxaLFQ==
dependencies:
"@sentry/browser" "7.57.0"
"@sentry/types" "7.57.0"
"@sentry/utils" "7.57.0"
hoist-non-react-statics "^3.3.2"
tslib "^2.4.1 || ^1.9.3"
"@sentry/replay@7.57.0":
version "7.57.0"
resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.57.0.tgz#c8f7eae7b7edc9d32c3d2955b337f3b3c76dff39"
integrity sha512-pN4ryNS3J5EYbkXvR+O/+hseAJha7XDl8mPFtK0OGTHG10JzCi4tQJazblHQdpb5QBaMMPCeZ+isyfoQLDNXnw==
dependencies:
"@sentry/core" "7.57.0"
"@sentry/types" "7.57.0"
"@sentry/utils" "7.57.0"
"@sentry/types@7.57.0":
version "7.57.0"
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.57.0.tgz#4fdb80cbd49ba034dd8d9be0c0005a016d5db3ce"
integrity sha512-D7ifoUfxuVCUyktIr5Gc+jXUbtcUMmfHdTtTbf1XCZHua5mJceK9wtl3YCg3eq/HK2Ppd52BKnTzEcS5ZKQM+w==
"@sentry/utils@7.57.0":
version "7.57.0"
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.57.0.tgz#8253c6fcf35138b4c424234b8da1596e11b98ad8"
integrity sha512-YXrkMCiNklqkXctn4mKYkrzNCf/dfVcRUQrkXjeBC+PHXbcpPyaJgInNvztR7Skl8lE3JPGPN4v5XhLxK1bUUg==
dependencies:
"@sentry/types" "7.57.0"
tslib "^2.4.1 || ^1.9.3"
"@sentry/webpack-plugin@1.20.0":
version "1.20.0"
resolved "https://registry.yarnpkg.com/@sentry/webpack-plugin/-/webpack-plugin-1.20.0.tgz#e7add76122708fb6b4ee7951294b521019720e58"
integrity sha512-Ssj1mJVFsfU6vMCOM2d+h+KQR7QHSfeIP16t4l20Uq/neqWXZUQ2yvQfe4S3BjdbJXz/X4Rw8Hfy1Sd0ocunYw==
dependencies:
"@sentry/cli" "^1.74.6"
webpack-sources "^2.0.0 || ^3.0.0"
"@sinclair/typebox@^0.27.8": "@sinclair/typebox@^0.27.8":
version "0.27.8" version "0.27.8"
resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
@ -2719,11 +2572,6 @@
dependencies: dependencies:
classnames "*" classnames "*"
"@types/estree@*", "@types/estree@^1.0.0":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194"
integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==
"@types/graceful-fs@^4.1.3": "@types/graceful-fs@^4.1.3":
version "4.1.6" version "4.1.6"
resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae"
@ -3609,13 +3457,6 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0" balanced-match "^1.0.0"
concat-map "0.0.1" concat-map "0.0.1"
brace-expansion@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
dependencies:
balanced-match "^1.0.0"
braces@^3.0.2, braces@~3.0.2: braces@^3.0.2, braces@~3.0.2:
version "3.0.2" version "3.0.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
@ -3750,14 +3591,6 @@ caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001503:
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001515.tgz#418aefeed9d024cd3129bfae0ccc782d4cb8f12b" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001515.tgz#418aefeed9d024cd3129bfae0ccc782d4cb8f12b"
integrity sha512-eEFDwUOZbE24sb+Ecsx3+OvNETqjWIdabMy52oOkIgcUtAsQifjUG9q4U9dgTHJM2mfk4uEPxc0+xuFdJ629QA== integrity sha512-eEFDwUOZbE24sb+Ecsx3+OvNETqjWIdabMy52oOkIgcUtAsQifjUG9q4U9dgTHJM2mfk4uEPxc0+xuFdJ629QA==
chalk@3.0.0, chalk@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chalk@^2.0.0, chalk@^2.4.1: chalk@^2.0.0, chalk@^2.4.1:
version "2.4.2" version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
@ -3767,6 +3600,14 @@ chalk@^2.0.0, chalk@^2.4.1:
escape-string-regexp "^1.0.5" escape-string-regexp "^1.0.5"
supports-color "^5.3.0" supports-color "^5.3.0"
chalk@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chalk@^4.0.0, chalk@^4.1.0: chalk@^4.0.0, chalk@^4.1.0:
version "4.1.2" version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
@ -3899,11 +3740,6 @@ commander@^4.0.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
concat-map@0.0.1: concat-map@0.0.1:
version "0.0.1" version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@ -3919,11 +3755,6 @@ convert-source-map@^2.0.0:
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
cookie@^0.4.1:
version "0.4.2"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
copy-to-clipboard@^3.3.1: copy-to-clipboard@^3.3.1:
version "3.3.3" version "3.3.3"
resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0"
@ -4710,11 +4541,6 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0:
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
estree-walker@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
esutils@^2.0.2: esutils@^2.0.2:
version "2.0.3" version "2.0.3"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
@ -5190,17 +5016,6 @@ glob@^7.0.0, glob@^7.0.5, glob@^7.1.3, glob@^7.1.4:
once "^1.3.0" once "^1.3.0"
path-is-absolute "^1.0.0" path-is-absolute "^1.0.0"
glob@^8.0.3:
version "8.1.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e"
integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^5.0.1"
once "^1.3.0"
globals@^11.1.0: globals@^11.1.0:
version "11.12.0" version "11.12.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
@ -5399,7 +5214,7 @@ http-status-codes@^2.2.0:
resolved "https://registry.yarnpkg.com/http-status-codes/-/http-status-codes-2.2.0.tgz#bb2efe63d941dfc2be18e15f703da525169622be" resolved "https://registry.yarnpkg.com/http-status-codes/-/http-status-codes-2.2.0.tgz#bb2efe63d941dfc2be18e15f703da525169622be"
integrity sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng== integrity sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng==
https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: https-proxy-agent@^5.0.1:
version "5.0.1" version "5.0.1"
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
@ -5465,11 +5280,6 @@ ignore@^5.1.4, ignore@^5.2.0, ignore@^5.2.4:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
immediate@~3.0.5:
version "3.0.6"
resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==
immutable@^4.0.0: immutable@^4.0.0:
version "4.3.1" version "4.3.1"
resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.1.tgz#17988b356097ab0719e2f741d56f3ec6c317f9dc" resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.1.tgz#17988b356097ab0719e2f741d56f3ec6c317f9dc"
@ -5672,13 +5482,6 @@ is-potential-custom-element-name@^1.0.1:
resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5"
integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==
is-reference@1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7"
integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==
dependencies:
"@types/estree" "*"
is-regex@^1.1.4: is-regex@^1.1.4:
version "1.1.4" version "1.1.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
@ -6462,13 +6265,6 @@ libsodium@^0.7.11:
resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.11.tgz#cd10aae7bcc34a300cc6ad0ac88fcca674cfbc2e" resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.11.tgz#cd10aae7bcc34a300cc6ad0ac88fcca674cfbc2e"
integrity sha512-WPfJ7sS53I2s4iM58QxY3Inb83/6mjlYgcmZs7DJsvDlnmVUwNinBCi5vBT43P6bHRy01O4zsMU2CoVR6xJ40A== integrity sha512-WPfJ7sS53I2s4iM58QxY3Inb83/6mjlYgcmZs7DJsvDlnmVUwNinBCi5vBT43P6bHRy01O4zsMU2CoVR6xJ40A==
lie@3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e"
integrity sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==
dependencies:
immediate "~3.0.5"
lilconfig@^2.0.5: lilconfig@^2.0.5:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52"
@ -6491,13 +6287,6 @@ load-tsconfig@^0.2.3:
resolved "https://registry.yarnpkg.com/load-tsconfig/-/load-tsconfig-0.2.5.tgz#453b8cd8961bfb912dea77eb6c168fe8cca3d3a1" resolved "https://registry.yarnpkg.com/load-tsconfig/-/load-tsconfig-0.2.5.tgz#453b8cd8961bfb912dea77eb6c168fe8cca3d3a1"
integrity sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg== integrity sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==
localforage@^1.8.1:
version "1.10.0"
resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4"
integrity sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==
dependencies:
lie "3.1.1"
locate-path@^5.0.0: locate-path@^5.0.0:
version "5.0.0" version "5.0.0"
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
@ -6585,23 +6374,11 @@ lru-cache@^6.0.0:
dependencies: dependencies:
yallist "^4.0.0" yallist "^4.0.0"
lru_map@^0.3.3:
version "0.3.3"
resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd"
integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==
lz-string@^1.5.0: lz-string@^1.5.0:
version "1.5.0" version "1.5.0"
resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941"
integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==
magic-string@^0.27.0:
version "0.27.0"
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3"
integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==
dependencies:
"@jridgewell/sourcemap-codec" "^1.4.13"
make-dir@^3.0.0: make-dir@^3.0.0:
version "3.1.0" version "3.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
@ -6697,25 +6474,11 @@ minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatc
dependencies: dependencies:
brace-expansion "^1.1.7" brace-expansion "^1.1.7"
minimatch@^5.0.1:
version "5.1.6"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
dependencies:
brace-expansion "^2.0.1"
minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6: minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6:
version "1.2.8" version "1.2.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
mkdirp@^0.5.5:
version "0.5.6"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
dependencies:
minimist "^1.2.6"
mkdirp@^1.0.4: mkdirp@^1.0.4:
version "1.0.4" version "1.0.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
@ -6843,7 +6606,7 @@ node-addon-api@^5.0.0:
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762"
integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==
node-fetch@^2.6.11, node-fetch@^2.6.12, node-fetch@^2.6.7: node-fetch@^2.6.11, node-fetch@^2.6.12:
version "2.6.12" version "2.6.12"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba"
integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g== integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==
@ -7253,11 +7016,6 @@ process-warning@^1.0.0:
resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616"
integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==
progress@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
prompts@^2.0.1: prompts@^2.0.1:
version "2.4.2" version "2.4.2"
resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
@ -7659,13 +7417,6 @@ rlp@^2.2.3, rlp@^2.2.4:
dependencies: dependencies:
bn.js "^5.2.0" bn.js "^5.2.0"
rollup@2.78.0:
version "2.78.0"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.78.0.tgz#00995deae70c0f712ea79ad904d5f6b033209d9e"
integrity sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg==
optionalDependencies:
fsevents "~2.3.2"
rollup@^3.2.5: rollup@^3.2.5:
version "3.26.2" version "3.26.2"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.26.2.tgz#2e76a37606cb523fc9fef43e6f59c93f86d95e7c" resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.26.2.tgz#2e76a37606cb523fc9fef43e6f59c93f86d95e7c"
@ -7942,13 +7693,6 @@ stack-utils@^2.0.3:
dependencies: dependencies:
escape-string-regexp "^2.0.0" escape-string-regexp "^2.0.0"
stacktrace-parser@^0.1.10:
version "0.1.10"
resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a"
integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==
dependencies:
type-fest "^0.7.1"
stop-iteration-iterator@^1.0.0: stop-iteration-iterator@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4"
@ -8332,7 +8076,7 @@ tslib@1.14.1, tslib@^1.8.1:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, "tslib@^2.4.1 || ^1.9.3", tslib@^2.5.0, tslib@^2.6.0: tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.0:
version "2.6.0" version "2.6.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3"
integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==
@ -8396,11 +8140,6 @@ type-fest@^0.21.3:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
type-fest@^0.7.1:
version "0.7.1"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48"
integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==
type-fest@^2.5.2: type-fest@^2.5.2:
version "2.19.0" version "2.19.0"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b"
@ -8570,11 +8309,6 @@ webidl-conversions@^7.0.0:
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a"
integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==
"webpack-sources@^2.0.0 || ^3.0.0":
version "3.2.3"
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
whatwg-encoding@^2.0.0: whatwg-encoding@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53"
@ -8645,7 +8379,7 @@ which-typed-array@^1.1.9:
has-tostringtag "^1.0.0" has-tostringtag "^1.0.0"
is-typed-array "^1.1.10" is-typed-array "^1.1.10"
which@^2.0.1, which@^2.0.2: which@^2.0.1:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==