diff --git a/components/instructions/programs/mangoV4.tsx b/components/instructions/programs/mangoV4.tsx
index 16c0f0f7d6..41c28504a4 100644
--- a/components/instructions/programs/mangoV4.tsx
+++ b/components/instructions/programs/mangoV4.tsx
@@ -259,12 +259,30 @@ const instructions = () => ({
const formattedProposedArgs = getFormattedListingValues(args)
- const suggestedPreset = getFormattedListingPresets(
+ const formattedSuggestedPresets = getFormattedListingPresets(
proposedOracle.type === 'Pyth',
0,
mintInfo?.account.decimals || 0,
oracleData.uiPrice
- )[presetInfo.presetKey]
+ )
+
+ const currentListingArgsMatchedTier = Object.values(
+ formattedSuggestedPresets
+ ).find((preset) => {
+ const formattedPreset = getFormattedListingValues({
+ tokenIndex: args.tokenIndex,
+ name: args.name,
+ oracle: args.oracle,
+ ...preset,
+ })
+
+ return (
+ JSON.stringify(formattedProposedArgs) ===
+ JSON.stringify(formattedPreset)
+ )
+ })
+
+ const suggestedPreset = formattedSuggestedPresets[presetInfo.presetKey]
const suggestedFormattedPreset: ListingArgsFormatted = Object.keys(
suggestedPreset
@@ -292,7 +310,7 @@ const instructions = () => ({
if (x === 'depositLimit') {
return !isDifferenceWithin5Percent(
Number(formattedProposedArgs['depositLimit'] || 0),
- Number(suggestedFormattedPreset['depositLimit'])
+ Number(suggestedFormattedPreset['depositLimit'] || 0)
)
}
return true
@@ -356,6 +374,13 @@ const instructions = () => ({
carefully
)}
+ {currentListingArgsMatchedTier && (
+
+
+ Full match found with tier {/* @ts-ignore */}
+ {currentListingArgsMatchedTier.preset_name}
+
+ )}
{isMintOnCurve && (
Proposed token has open mint
@@ -536,17 +561,17 @@ const instructions = () => ({
label="Flash Loan Deposit Fee Rate"
valKey="flashLoanSwapFeeRate"
/>
- ({
).toFixed(0)
: 0
})`}
- suggestedVal={`${
+ suggestedVal={
mintInfo && invalidFields?.depositLimit
- ? toUiDecimals(
+ ? `${toUiDecimals(
new BN(invalidFields.depositLimit.toString()),
mintInfo.account.decimals
- )
- : invalidFields.depositLimit
- } ${args.name} ($${
- mintInfo && invalidFields.depositLimit
- ? (
+ )} ${args.name} ($${(
toUiDecimals(
new BN(invalidFields.depositLimit.toString()),
mintInfo.account.decimals
) * oracleData.uiPrice
- ).toFixed(0)
- : 0
- })`}
+ ).toFixed(0)})`
+ : undefined
+ }
/>
({
label="Interest Curve Scaling"
valKey="interestCurveScaling"
/>
-
@@ -1013,7 +1034,7 @@ const instructions = () => ({
if (x === 'depositLimit') {
return !isDifferenceWithin5Percent(
Number(parsedArgs['depositLimit'] || 0),
- Number(suggestedFormattedPreset['depositLimit'])
+ Number(suggestedFormattedPreset['depositLimit'] || 0)
)
}
return true
diff --git a/utils/Mango/listingTools.ts b/utils/Mango/listingTools.ts
index 4f22ac6f2c..d5ed881ca1 100644
--- a/utils/Mango/listingTools.ts
+++ b/utils/Mango/listingTools.ts
@@ -48,7 +48,7 @@ export type FlatListingArgs = {
name: string
tokenIndex: number
'oracleConfig.confFilter': number
- 'oracleConfig.maxStalenessSlots': number
+ 'oracleConfig.maxStalenessSlots': number | null
'interestRateParams.util0': number
'interestRateParams.rate0': number
'interestRateParams.util1': number
@@ -130,7 +130,7 @@ export type ListingArgsFormatted = {
tokenIndex: number
tokenName: string
oracleConfidenceFilter: string
- oracleMaxStalenessSlots: number
+ oracleMaxStalenessSlots: number | null
interestRateUtilizationPoint1: string
interestRateUtilizationPoint0: string
interestRatePoint0: string
@@ -175,7 +175,10 @@ export type EditTokenArgsFormatted = ListingArgsFormatted & {
const transformPresetToProposed = (listingPreset: LISTING_PRESET) => {
const proposedPreset: FormattedListingPreset = {
...listingPreset,
- 'oracleConfig.maxStalenessSlots': listingPreset.maxStalenessSlots!,
+ 'oracleConfig.maxStalenessSlots':
+ listingPreset.maxStalenessSlots === -1
+ ? null
+ : listingPreset.maxStalenessSlots!,
'oracleConfig.confFilter': listingPreset.oracleConfFilter,
'interestRateParams.adjustmentFactor': listingPreset.adjustmentFactor,
'interestRateParams.util0': listingPreset.util0,