From 120d498da1eec2880712705afd7b8ffb22fa7889 Mon Sep 17 00:00:00 2001 From: thanhpn Date: Thu, 23 Jan 2025 09:49:52 +0700 Subject: [PATCH] Address reviewer comments --- scripts/check_configs.ts | 36 ++++++++++++++++++++++++++++++++++++ yarn.lock | 6 +++--- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/scripts/check_configs.ts b/scripts/check_configs.ts index 506de0c..fb90206 100644 --- a/scripts/check_configs.ts +++ b/scripts/check_configs.ts @@ -1,6 +1,7 @@ import { CarbonSDK } from "carbon-js-sdk"; import { PageRequest } from "carbon-js-sdk/lib/codec/cosmos/base/query/v1beta1/pagination"; import { BridgeMap } from "carbon-js-sdk/lib/util/blockchain"; +import { SimpleMap } from "carbon-js-sdk/lib/util/type"; import * as fs from "fs"; import Long from "long"; @@ -36,6 +37,7 @@ interface ConfigJSON { disabled_transfer_banner_config?: DisabledTransferBannerConfig; announcement_banner: AnnouncementBanner; quick_select_deposit_options?: QuickSelectToken[]; + lst_native_aprs?: LstNativeAPR[]; } interface InvalidEntry { @@ -154,6 +156,12 @@ interface QuickSelectToken { target_denom: string; } +interface LstNativeAPR { + protocol: string; + api_url: string; + lst_denoms: SimpleMap; +} + type OutcomeMap = { [key in CarbonSDK.Network]: boolean }; // true = success, false = failure const outcomeMap: OutcomeMap = { @@ -499,6 +507,29 @@ function isValidQuickSelectTokens(quickSelectTokens: QuickSelectToken[], network return true; } +function isValidLSTNativeDenom(lstNativeAPRs: LstNativeAPR[], network: CarbonSDK.Network, denoms: string[]): boolean { + const lstDenoms = lstNativeAPRs.reduce((acc: string[], lst) => { + return acc.concat(Object.values(lst.lst_denoms)) + }, []) + + const duplicateLstDenoms = checkDuplicateEntries(lstDenoms); + if (duplicateLstDenoms.status && duplicateLstDenoms.entry) { + let listOfDuplicates: string = duplicateLstDenoms.entry.join(", "); + console.error(`ERROR: ${network}.json has the following duplicated lst native prs denoms: ${listOfDuplicates}. Please make sure to input each token denom only once in ${network}`); + return false; + } + + const invalidLstDenoms = checkValidEntries(lstDenoms, denoms); + if (invalidLstDenoms.status && invalidLstDenoms.entry) { + let listOfInvalidDenoms: string = invalidLstDenoms.entry.join(", "); + console.error(`ERROR: ${network}.json has the following invalid lst native prs denoms: ${listOfInvalidDenoms}. Please make sure to only input valid token denoms in ${network}`); + return false; + } + + + return true; +} + async function main() { for (const net of myArgs) { let network: CarbonSDK.Network; @@ -889,6 +920,11 @@ async function main() { if (jsonData.quick_select_deposit_options && !isValidQuickSelectTokens(jsonData.quick_select_deposit_options, network, tokens)) { outcomeMap[network] = false; } + + // check for LST native denom duplicate, existed + if (jsonData.lst_native_aprs && !isValidLSTNativeDenom(jsonData.lst_native_aprs, network, tokens)) { + outcomeMap[network] = false; + } } } const outcomeArr = Object.values(outcomeMap); diff --git a/yarn.lock b/yarn.lock index 83a7bfa..ad60086 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2252,9 +2252,9 @@ callsite@1.0.0: integrity sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ== carbon-js-sdk@^0.11.39: - version "0.11.39" - resolved "https://registry.yarnpkg.com/carbon-js-sdk/-/carbon-js-sdk-0.11.39.tgz#d0496ac6a06350dc933efbd122b9eafdea6fbc9c" - integrity sha512-rlzPyzXkuy3mhn3C9ZLI5deC+/bcBt7nYtWp3iB0w8anc/6dQ0vYT1mXP1wMTleFlKCuUXhiW99JRXqLeCVl+Q== + version "0.11.42" + resolved "https://registry.yarnpkg.com/carbon-js-sdk/-/carbon-js-sdk-0.11.42.tgz#a326adf8c4c8458d66b0d723e2fb47bacfd78f84" + integrity sha512-0Ij2dFIqoY4OJZxNjtMLq6qysXZPvFWEpV4ce4OhI9FHGuqgbnOBapbbvKxTGLJD27K2hOzv+YrQoSFiW33GSg== dependencies: "@cityofzion/neon-api" "^4.9.0" "@cityofzion/neon-core" "^4.9.0"