diff --git a/components/modals/DashboardSuggestedValuesModal.tsx b/components/modals/DashboardSuggestedValuesModal.tsx index e3b066b0b..160e4cb05 100644 --- a/components/modals/DashboardSuggestedValuesModal.tsx +++ b/components/modals/DashboardSuggestedValuesModal.tsx @@ -13,6 +13,7 @@ import { Group, OracleProvider, PriceImpact, + toUiDecimals, } from '@blockworks-foundation/mango-v4' import { AccountMeta, Transaction } from '@solana/web3.js' import { BN } from '@project-serum/anchor' @@ -64,6 +65,8 @@ const DashboardSuggestedValues = ({ ? getPythPresets(LISTING_PRESETS) : getSwitchBoardPresets(LISTING_PRESETS) + const [proposedTier, setProposedTier] = + useState('liab_1') const [suggestedTier, setSuggestedTier] = useState('liab_1') const [proposing, setProposing] = useState(false) @@ -102,6 +105,7 @@ const DashboardSuggestedValues = ({ bank.oracleProvider === OracleProvider.Pyth, ) + setProposedTier(suggestedTier) setSuggestedTier(suggestedTier) }, [bank.name, bank.oracleProvider, priceImpactsFiltered]) @@ -113,7 +117,14 @@ const DashboardSuggestedValues = ({ ) => { const proposalTx = [] const mintInfo = group!.mintInfosMapByTokenIndex.get(bank.tokenIndex)! - const preset = PRESETS[tokenTier] + const preset = getPresetWithAdjustedDepositLimit( + getPresetWithAdjustedNetBorrows( + PRESETS[tokenTier], + bank.nativeDeposits().mul(bank.price).toNumber(), + ), + bank.uiPrice, + bank.mintDecimals, + ) const fieldsToChange = invalidFieldsKeys.reduce( (obj, key) => ({ ...obj, [key]: preset[key as keyof typeof preset] }), @@ -143,7 +154,7 @@ const DashboardSuggestedValues = ({ const isThereNeedOfSendingRateConfigs = Object.values(rateConfigs).filter( (x) => x !== null, ).length - + console.log(fieldsToChange) const ix = await client!.program.methods .tokenEdit( null, @@ -306,7 +317,7 @@ const DashboardSuggestedValues = ({ const suggestedValues = getPresetWithAdjustedDepositLimit( getPresetWithAdjustedNetBorrows( - PRESETS[suggestedTier as LISTING_PRESETS_KEY] as LISTING_PRESET, + PRESETS[proposedTier as LISTING_PRESETS_KEY] as LISTING_PRESET, bank.nativeDeposits().mul(bank.price).toNumber(), ), bank.uiPrice, @@ -347,22 +358,21 @@ const DashboardSuggestedValues = ({ >

- {bank.name} - Suggested tier: {suggestedTier} + {bank.name} - Suggested tier: {PRESETS[suggestedTier].preset_name}

@@ -595,10 +605,16 @@ const DashboardSuggestedValues = ({ /> { 'Side', ...group.pis.map((x) => formatValue(x.target_amount)), 'Init/Main Weight', + 'Suggested tier', ]), ] : [] @@ -75,6 +80,7 @@ const RiskDashboard: NextPage = () => { avg_price_impact: number p90: number p95: number + target_amount: number } | string } @@ -92,6 +98,7 @@ const RiskDashboard: NextPage = () => { avg_price_impact: val.avg_price_impact_percent, p90: val.p90, p95: val.p95, + target_amount: val.target_amount, } } else { const newItem = { @@ -101,6 +108,7 @@ const RiskDashboard: NextPage = () => { avg_price_impact: val.avg_price_impact_percent, p90: val.p90, p95: val.p95, + target_amount: val.target_amount, }, } acc.push(newItem) @@ -108,6 +116,30 @@ const RiskDashboard: NextPage = () => { return acc }, [] as TransformedPis[]) + const symbolToPresetName = useMemo( + () => (group ? getMidPriceImpacts(group.pis) : []), + [group], + ) + .filter((x) => x.avg_price_impact_percent < 1) + .reduce( + (acc, val, index, pisFiltred) => { + if (!acc[val.symbol]) { + acc[val.symbol] = + Object.values(LISTING_PRESETS).find( + (x) => + x.preset_target_amount === + pisFiltred + .filter((pis) => pis.symbol === val.symbol) + .sort( + (a, b) => + b.avg_price_impact_percent - a.avg_price_impact_percent, + )[0].target_amount, + )?.preset_name || 'C' + } + return acc + }, + {} as { [symbol: string]: string }, + ) return (
@@ -268,6 +300,13 @@ const RiskDashboard: NextPage = () => { formatValue(bank.maintLiabWeight.toNumber()) }`} + + {idx % 2 === 0 + ? symbolToPresetName[row.symbol] + ? symbolToPresetName[row.symbol] + : 'C' + : ''} + ) })} diff --git a/public/icons/corn.svg b/public/icons/corn.svg new file mode 100644 index 000000000..72f999f5f --- /dev/null +++ b/public/icons/corn.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/utils/constants.ts b/utils/constants.ts index cb2fce30d..be1ec4cb9 100644 --- a/utils/constants.ts +++ b/utils/constants.ts @@ -140,6 +140,7 @@ export const CUSTOM_TOKEN_ICONS: { [key: string]: boolean } = { bonk: true, btc: true, chai: true, + corn: true, crown: true, dai: true, dual: true, diff --git a/yarn.lock b/yarn.lock index 1669655c1..a6946382e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -58,10 +58,10 @@ bn.js "^5.2.1" eslint-config-prettier "^9.0.0" -"@blockworks-foundation/mango-v4@0.21.7": - version "0.21.7" - resolved "https://registry.yarnpkg.com/@blockworks-foundation/mango-v4/-/mango-v4-0.21.7.tgz#698292fe2f1f3646d0cc6a7ea0d2c7204ecd9b03" - integrity sha512-rjufKVva3mgyVYtr2Fg4Mo9RPqGNnTVht2o3o2HMsaTMamYkXEZtu36NkCX0SFKY/PV5+ZPeY0CmtxnBZ5Y8cA== +"@blockworks-foundation/mango-v4@0.21.8": + version "0.21.8" + resolved "https://registry.yarnpkg.com/@blockworks-foundation/mango-v4/-/mango-v4-0.21.8.tgz#d3179560375b80b5f9b61af91595968d617b978d" + integrity sha512-Tgg0zTFDEprkxwXJAdGcDfXfS8dK6V5gBXD79o2h9/7+Nj6eh3y6J7iKaSmjPFQ9FViesB2muc1Q2lVBUnwIMg== dependencies: "@blockworks-foundation/mango-v4-settings" "^0.2.16" "@coral-xyz/anchor" "^0.28.1-beta.2"