Skip to content

feat: chainlink addresses for hyperevm and monad#195

Merged
antoncoding merged 2 commits intomasterfrom
chore/chainlink-updates
Nov 26, 2025
Merged

feat: chainlink addresses for hyperevm and monad#195
antoncoding merged 2 commits intomasterfrom
chore/chainlink-updates

Conversation

@antoncoding
Copy link
Owner

@antoncoding antoncoding commented Nov 26, 2025

Summary by CodeRabbit

Release Notes

  • New Features

    • Added support for HyperEVM and Monad blockchain networks with comprehensive oracle feed configurations.
    • Expanded Chainlink oracle coverage with numerous new asset price feeds across multiple networks.
  • Updates

    • Updated and standardized oracle feed data for Arbitrum, Base, Mainnet, and Polygon networks.
    • Refined asset pricing feeds and deprecated legacy oracle entries for improved data accuracy.

✏️ Tip: You can customize this high-level summary in your review settings.

@vercel
Copy link
Contributor

vercel bot commented Nov 26, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
monarch Ready Ready Preview Comment Nov 26, 2025 7:17pm

@coderabbitai
Copy link

coderabbitai bot commented Nov 26, 2025

📝 Walkthrough

Walkthrough

Adds support for two new blockchain networks (HyperEVM and Monad) to the Chainlink oracle feed system by creating new configuration data files, wiring them into the index, and extending the endpoint definitions and chainlink oracle mappings.

Changes

Cohort / File(s) Summary
Endpoint expansion
scripts/generate-chainlink-data.ts
Added hyperevm and monad endpoints to the ENDPOINTS constant
New network feeds
src/constants/oracle/chainlink-data/hyperevm.json, src/constants/oracle/chainlink-data/monad.json
New JSON configuration files defining oracle feeds for HyperEVM and Monad networks with standard fields (ens, heartbeat, path, proxyAddress, threshold, feedCategory, baseAsset, quoteAsset, isSVR)
Index wiring
src/constants/oracle/chainlink-data/index.ts
Imports new hyperevm and monad data files; updates CHAINLINK_ORACLES mapping and getChainlinkFeedUrl() function to reference the new networks
Feed updates
src/constants/oracle/chainlink-data/arbitrum.json, src/constants/oracle/chainlink-data/base.json, src/constants/oracle/chainlink-data/mainnet.json
Added numerous new feed entries across multiple assets; modified existing entries with updated feedCategory, baseAsset/quoteAsset mappings, and path identifiers; removed deprecated or legacy feeds
Feed additions
src/constants/oracle/chainlink-data/polygon.json
Added two new feed entries (ybtc-btc, dola-usd)

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

  • arbitrum.json, base.json, mainnet.json: Large-scale data modifications with numerous entries added, renamed, and removed across each file. Requires careful verification of feed paths, asset pairs, and metadata correctness.
  • hyperevm.json, monad.json: New data files need validation against network specifications and consistency with existing feed structure patterns.
  • index.ts: Wire-up logic needs verification that new network references are correctly mapped and accessible.

Possibly related PRs

  • feat: add monad chain #194: Adds Monad and HyperEVM network support with similar updates to CHAINLINK_ORACLES mapping and feed index
  • feat: arbitrum #158: Modifies chainlink-data index and feed generation handling with getChainlinkFeedUrl and chain data imports

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: adding Chainlink oracle data for two new networks (hyperevm and monad).
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/chainlink-updates

Tip

📝 Customizable high-level summaries are now available in beta!

You can now customize how CodeRabbit generates the high-level summary in your pull requests — including its content, structure, tone, and formatting.

  • Provide your own instructions using the high_level_summary_instructions setting.
  • Format the summary however you like (bullet lists, tables, multi-section layouts, contributor stats, etc.).
  • Use high_level_summary_in_walkthrough to move the summary from the description to the walkthrough section.

Example instruction:

"Divide the high-level summary into five sections:

  1. 📝 Description — Summarize the main change in 50–60 words, explaining what was done.
  2. 📓 References — List relevant issues, discussions, documentation, or related PRs.
  3. 📦 Dependencies & Requirements — Mention any new/updated dependencies, environment variable changes, or configuration updates.
  4. 📊 Contributor Summary — Include a Markdown table showing contributions:
    | Contributor | Lines Added | Lines Removed | Files Changed |
  5. ✔️ Additional Notes — Add any extra reviewer context.
    Keep each section concise (under 200 words) and use bullet or numbered lists for clarity."

Note: This feature is currently in beta for Pro-tier users, and pricing will be announced later.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@antoncoding antoncoding merged commit f23dc44 into master Nov 26, 2025
3 of 4 checks passed
@antoncoding antoncoding deleted the chore/chainlink-updates branch November 26, 2025 19:20
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6ee342d and e0f009c.

📒 Files selected for processing (8)
  • scripts/generate-chainlink-data.ts (1 hunks)
  • src/constants/oracle/chainlink-data/arbitrum.json (61 hunks)
  • src/constants/oracle/chainlink-data/base.json (21 hunks)
  • src/constants/oracle/chainlink-data/hyperevm.json (1 hunks)
  • src/constants/oracle/chainlink-data/index.ts (3 hunks)
  • src/constants/oracle/chainlink-data/mainnet.json (26 hunks)
  • src/constants/oracle/chainlink-data/monad.json (1 hunks)
  • src/constants/oracle/chainlink-data/polygon.json (3 hunks)
🧰 Additional context used
📓 Path-based instructions (5)
scripts/**/*

📄 CodeRabbit inference engine (AGENTS.md)

Smart-contract scripts and artifacts belong in scripts/

Files:

  • scripts/generate-chainlink-data.ts
**/*.{ts,tsx,js,jsx,css,scss}

📄 CodeRabbit inference engine (AGENTS.md)

Run pnpm format (Prettier) before pushing with 2-space indentation, 100-character width, single quotes, and Tailwind-aware class ordering

Files:

  • scripts/generate-chainlink-data.ts
  • src/constants/oracle/chainlink-data/index.ts
**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (AGENTS.md)

ESLint (Airbnb + Next.js) enforces hook safety and import hygiene

Files:

  • scripts/generate-chainlink-data.ts
  • src/constants/oracle/chainlink-data/index.ts
src/**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Use camelCase for helper function names (e.g., formatApr)

Files:

  • src/constants/oracle/chainlink-data/index.ts
src/constants/**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (AGENTS.md)

Use SCREAMING_SNAKE_CASE for shared constants

Files:

  • src/constants/oracle/chainlink-data/index.ts
🧬 Code graph analysis (1)
src/constants/oracle/chainlink-data/index.ts (1)
src/constants/oracle/chainlink-data/types.ts (1)
  • ChainlinkOracleEntry (1-11)
🔇 Additional comments (12)
scripts/generate-chainlink-data.ts (1)

40-47: New hyperevm/monad endpoints fit existing pattern

Keys and URLs plug cleanly into the existing ENDPOINTS + fetchAndProcessData loop; no extra changes needed.

src/constants/oracle/chainlink-data/base.json (2)

24-34: New/updated Base feeds follow existing schema

The added SVR feeds, new asset feeds (SYND, MAMO, AVNT, USDai, yBTC, etc.), and category tweaks (deprecating, new) all match the existing JSON structure and patterns in this file. No structural issues from a consumer’s perspective.

Also applies to: 57-67, 167-177, 222-232, 365-375, 585-595, 733-733, 782-792, 848-858, 1091-1100, 1107-1107, 1313-1313, 1377-1386, 1421-1430, 1465-1474, 1509-1518, 1531-1540, 1558-1558, 1564-1573, 1729-1738, 1783-1783


782-792: I apologize, but I'm encountering persistent issues cloning the repository, which prevents me from accessing the src/constants/oracle/chainlink-data/base.json file to verify the concerns raised in the review comment.

To complete this verification, I would need to:

  1. Examine lines 782-792 to confirm the gho-usd-svr entry's actual baseAsset and quoteAsset values
  2. Review line 1313 to inspect the ceth-reserves entry and its path/ens relationship
  3. Search all *-usd-svr entries (USDC, USDT, EURC, BTC, AAVE, ETH) to establish the pattern the reviewer referenced
  4. Determine intentionality of the ENS/path mismatch

Without repository access, I cannot validate whether:

  • The gho-usd-svr quote asset should indeed be "USD" instead of "GHO"
  • The ceth-reserves to teth-reserves path mapping with mismatched ENS naming is intentional
src/constants/oracle/chainlink-data/arbitrum.json (1)

9351-9359: Check fragsol-sol-exchange-rate quote asset

For path: "fragsol-sol-exchange-rate", quoteAsset is "USD". Other *-sol-exchange-rate feeds here use the underlying token (e.g. quoteAsset: "SOL"), not USD. Please confirm this against the Chainlink spec; it may need quoteAsset: "SOL" or a different path.

src/constants/oracle/chainlink-data/index.ts (1)

4-18: HyperEVM and Monad wiring into CHAINLINK_ORACLES looks fine

New entries for SupportedNetworks.HyperEVM and SupportedNetworks.Monad correctly plug in the JSON datasets so existing helpers (getAllOracles, isChainlinkOracle, getChainlinkOracle) will work for these networks.

src/constants/oracle/chainlink-data/polygon.json (1)

46-56: New ybtc-btc and dola-usd feeds look consistent

Both entries have sensible baseAsset/quoteAsset, thresholds, and feedCategory values within the existing enum. No issues spotted.

Also applies to: 189-199

src/constants/oracle/chainlink-data/hyperevm.json (1)

1-266: Hyperevm oracle entries are structurally sound

JSON structure matches ChainlinkOracleEntry shape and base/quote assets mostly line up with paths. Aside from the KHYPE typo noted separately, nothing else stands out.

src/constants/oracle/chainlink-data/mainnet.json (5)

47-54: Missing network configuration for HyperEVM and Monad.

The PR objectives mention adding support for two new networks, but this mainnet.json only shows Ethereum mainnet data. Where are the HyperEVM and Monad configuration files?

Also applies to: 113-121, 244-254, 409-419, 475-485, 519-529, 608-617, 651-661, 684-694


984-984: Path changed for uscc-nav from "uscc-nav" to "uscc-nav-per-share".

This change at line 984 could break consuming code that references the old path. Confirm this is backward-compatible or that callers have been updated.


1279-1288: New SVR entries with null ens field.

The new shared SVR feeds at lines 1279–1288 and 1366–1376 correctly use null for ens (shared feeds don't have ENS names). This looks intentional and correct.

Also applies to: 1366-1376


1888-1888: Threshold changed for wbtc-btc from "1" to "0.5".

Line 1888 shows the threshold decreased. Confirm this stricter tolerance is intentional and safe.


2823-2823: Path updated for ustb-nav-per-share remains consistent.

Line 2823 shows the path is already "ustb-nav-per-share"—no change. This is consistent with the uscc-nav path change at line 984.

Comment on lines 2853 to 2860
"ens": null,
"path": "syrupusdc-usdc-exrate-deprecated-mainnet-production",
"path": "susdu-usdu-streams-exchangerate-mainnet-production",
"proxyAddress": "",
"threshold": 0,
"feedCategory": "medium",
"baseAsset": "SyrupUSDC",
"quoteAsset": "USDC",
"baseAsset": "sUSDu ",
"quoteAsset": "USDU",
"isSVR": false
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Trim trailing space in sUSDu baseAsset

baseAsset has a trailing space ("sUSDu "). This will break any symbol-based lookups or comparisons.

-    "baseAsset": "sUSDu ",
+    "baseAsset": "sUSDu",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"ens": null,
"path": "syrupusdc-usdc-exrate-deprecated-mainnet-production",
"path": "susdu-usdu-streams-exchangerate-mainnet-production",
"proxyAddress": "",
"threshold": 0,
"feedCategory": "medium",
"baseAsset": "SyrupUSDC",
"quoteAsset": "USDC",
"baseAsset": "sUSDu ",
"quoteAsset": "USDU",
"isSVR": false
"ens": null,
"path": "susdu-usdu-streams-exchangerate-mainnet-production",
"proxyAddress": "",
"threshold": 0,
"feedCategory": "medium",
"baseAsset": "sUSDu",
"quoteAsset": "USDU",
"isSVR": false
🤖 Prompt for AI Agents
In src/constants/oracle/chainlink-data/arbitrum.json around lines 2853 to 2860,
the baseAsset string contains a trailing space ("sUSDu ") which will break
symbol lookups; remove the trailing whitespace so the value is "sUSDu" (ensure
no other invisible whitespace characters remain), save the JSON, and run a quick
validation or linter to confirm the file remains valid JSON and that other
entries are unaffected.

Comment on lines +4433 to +4443
{
"ens": "ab-usd",
"heartbeat": 86400,
"path": "ab-usd",
"proxyAddress": "0x3d9145b5804E13Bc14d19c3DDbd3DA8fD02b5034",
"threshold": 0.5,
"feedCategory": "new",
"baseAsset": "AB",
"quoteAsset": "USD",
"isSVR": false
},
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

feedCategory values new / deprecating don’t match the TS type

src/constants/oracle/chainlink-data/types.ts defines:

feedCategory: 'low' | 'medium' | 'high' | 'custom';

Several updated entries here now use feedCategory: "new" or "deprecating" (e.g. ab-usd, deusd-usd, anon-usd, btc-usd-marketcap, usdx-usd, eth-usd-marketcap, plus multiple others, and similar values in hyperevm.json).

Either:

  • extend the union in ChainlinkOracleEntry to include these new states, and audit downstream logic, or
  • keep feedCategory within the existing enum and represent lifecycle state (new / deprecating) via a separate field.

Right now the type and the JSON disagree, which can mislead callers relying on the union.

Also applies to: 4852-4861, 6905-6915, 7860-7868, 8019-8027, 9164-9173, 9383-9392

🤖 Prompt for AI Agents
In src/constants/oracle/chainlink-data/arbitrum.json around lines 4433-4443 (and
similarly at 4852-4861, 6905-6915, 7860-7868, 8019-8027, 9164-9173, 9383-9392),
feedCategory has values "new"/"deprecating" that don't match the TypeScript
union; to fix, revert feedCategory values in these JSON entries to one of the
existing allowed values ('low'|'medium'|'high'|'custom') and add a new field
lifecycle (e.g. "lifecycle": "new" | "deprecating") to represent lifecycle
state, then update src/constants/oracle/chainlink-data/types.ts to add
lifecycle?: 'new' | 'deprecating' to ChainlinkOracleEntry (or a shared type),
and run a quick search to update any code that reads feedCategory to ensure it
uses the new lifecycle field where appropriate.

Comment on lines +179 to +187
"ens": "lhype-khype-exchange-rate",
"heartbeat": 86400,
"path": "lhype-khype-exchange-rate",
"proxyAddress": "0xcDEE7075894A95aF6Fde29E49A428901FF5E2202",
"threshold": 0.05,
"feedCategory": "custom",
"baseAsset": "LHYPE",
"quoteAsset": "KYHYPE",
"isSVR": false
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

Script executed:

#!/bin/bash
# Search for KYHYPE and KHYPE in the hyperevm.json file
echo "=== Searching for KYHYPE occurrences ==="
rg -n "KYHYPE" src/constants/oracle/chainlink-data/hyperevm.json

echo ""
echo "=== Searching for KHYPE occurrences (without extra Y) ==="
rg -n "KHYPE" src/constants/oracle/chainlink-data/hyperevm.json

echo ""
echo "=== Searching for khype pattern (lowercase) ==="
rg -n "khype" src/constants/oracle/chainlink-data/hyperevm.json

Repository: antoncoding/monarch


<shell_result>
Repository: antoncoding/monarch
Script execution failed with unrecoverable error: [CAPABILITY:RUN_SHELL_SCRIPT] Failed to clone repository antoncoding/monarch: Clone operation failed
</shell_result>


KYHYPE vs KHYPE token cryptocurrency


<web_search_result>
Short answer: KHYPE is a real token — Kinetiq Staked HYPE, a liquid‑staking derivative of HYPE (tradeable and reward‑bearing). "KYHYPE" is not a widely listed token symbol — it appears in Chainlink/feeds changelogs as a data‑feed label (LHYPE / KYHYPE) rather than as a standalone token — so it’s likely a price‑feed identifier or internal symbol, not a different ERC token. If you mean a specific on‑chain token called KYHYPE, send the contract address and I’ll look it up. Sources: Kinetiq/kHYPE docs, CoinGecko price page for Kinetiq Staked HYPE, Chainlink changelog. [1][2][3]

Sources
[1] Kinetiq — kHYPE (protocol/token overview).
[2] CoinGecko — Kinetiq Staked HYPE (KHYPE) market page.
[3] Chainlink dev changelog (mentions LHYPE / KYHYPE data feed).
</web_search_result>


Chainlink LHYPE KYHYPE feed specification


<web_search_result>
Here are the Chainlink feed specifications I found for LHYPE and KHYPE (HyperEVM network):

  1. LHYPE / STHYPE — Exchange Rate feed
  • Network: HyperEVM Mainnet.
  • Product name: LHYPE/STHYPE-ExRate-DF-Hyperliquid-001.
  • Feed type: Exchange Rate (custom).
  • Trigger: Deviation threshold 0.05% (heartbeat shown on feed page).
  • Contract (standard) address: 0x223d...9541.
  • ENS: lhype-sthype-exchange-rate.data.eth.
    Source: Chainlink Data Feeds. [1]
  1. KHYPE-HYPE — Exchange Rate feed
  • Network: HyperEVM Mainnet.
  • Product name: KHYPE/HYPE-ExRate-DF-Hyperliquid-001.
  • Feed type: Exchange Rate (custom).
  • Trigger: Deviation threshold 0.05%.
  • Contract (standard) address: 0x272d...0eCB.
  • ENS: khypehype-exchange-rate.data.eth.
    Source: Chainlink Data Feeds. [2]
  1. KHYPE / USD — Reference Price feed
  • Network: HyperEVM Mainnet.
  • Product name: KHYPE/USD-RefPrice-DF-Hyperliquid-001.
  • Feed type: Reference Price (Medium Market Risk listed).
  • Trigger: Deviation threshold 0.5% (heartbeat shown on feed page).
  • Contract (standard) address: 0xC66B...9bcc.
  • ENS: khype-usd.data.eth.
    Source: Chainlink Data Feeds. [3]

Notes: the data.chain.link pages above show the full feed metadata (oracles list, exact contract addresses, product IDs, and live update/heartbeat settings). If you want the exact full contract addresses, ABI, decimals, or a direct link to any of these feed pages, tell me which feed and I’ll fetch the full address/ABI and link.

Sources:
[1] LHYPE / STHYPE feed (Chainlink Data Feeds).
[2] KHYPE-HYPE feed (Chainlink Data Feeds).
[3] KHYPE / USD feed (Chainlink Data Feeds).
</web_search_result>


Confirm typo: KYHYPE should be KHYPE

Official Chainlink Data Feeds for HyperEVM show no feed using KYHYPE as a quote asset. The actual feeds use KHYPE (Kinetiq Staked HYPE) or STHYPE, not KYHYPE. The path "lhype-khype-exchange-rate" confirms this should be a LHYPE/KHYPE pair, making the "quoteAsset": "KYHYPE" entry incorrect.

Change "quoteAsset": "KYHYPE" to "quoteAsset": "KHYPE".

🤖 Prompt for AI Agents
In src/constants/oracle/chainlink-data/hyperevm.json around lines 179 to 187,
the quoteAsset value is misspelled as "KYHYPE"; update the "quoteAsset" field to
"KHYPE" to match the path "lhype-khype-exchange-rate" and official Chainlink
feed naming conventions, ensuring the JSON key remains quoted and the file stays
valid JSON.

Comment on lines +62 to +67
if (chainId === SupportedNetworks.HyperEVM) {
return `https://data.chain.link/feeds/hyperliquid/mainnet/${ens}`
}
if (chainId === SupportedNetworks.Monad) {
return `https://data.chain.link/feeds/monad/mainnet/${ens}`;
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Script executed:

#!/bin/bash
# Read the specific file section to verify current state
sed -n '62,67p' src/constants/oracle/chainlink-data/index.ts

Repository: antoncoding/monarch


<shell_result>
Repository: antoncoding/monarch
Script execution failed with unrecoverable error: [CAPABILITY:RUN_SHELL_SCRIPT] Failed to clone repository antoncoding/monarch: Clone operation failed
</shell_result>


Chainlink data.chain.link feed URL structure for Hyperliquid HyperEVM and Monad networks documentation


<web_search_result>
Pattern: https://data.chain.link/feeds/{publisher}/{network}/{pair-slug}

Examples:

Notes:

  • {publisher} is the feed publisher/group (e.g., hyperliquid, monad).
  • {network} is the network identifier shown on data.chain.link (e.g., hyperliquid → HyperEVM Mainnet).
  • {pair-slug} is the feed slug (asset-asset, lowercased, with dashes), e.g. usdh-usd, mon-usd.
    Reference: Chainlink Data Feeds pages. [3]

Sources:
[1] https://data.chain.link/feeds/hyperliquid/hyperliquid/usdh-usd
[2] https://data.chain.link/feeds/monad/monad/mon-usd
[3] https://docs.chain.link/data-feeds
</web_search_result>


Based on the web search results, I've discovered a critical issue with the URL prefixes in the code:

The Chainlink data.chain.link feed URLs in the code are incorrect.

According to Chainlink's documentation, the correct URL structure is:
https://data.chain.link/feeds/{publisher}/{network}/{pair-slug}

Where:

  • Hyperliquid (HyperEVM): feeds/hyperliquid/hyperliquid/{pair} (NOT feeds/hyperliquid/mainnet/{pair})
  • Monad: feeds/monad/monad/{pair} (NOT feeds/monad/mainnet/{pair})

The code currently uses mainnet as the network identifier, but Chainlink uses the actual network names (hyperliquid and monad). These incorrect URLs will not resolve to valid Chainlink data feeds.

Unfortunately, I was unable to verify the semicolon formatting issue directly due to repository access constraints. However, this secondary formatting concern is now overshadowed by the URL correctness problem.


Fix the network identifiers in the feed URLs: replace mainnet with the correct network names (hyperliquid for HyperEVM and monad for Monad).

The current URLs will not work with Chainlink's actual data feed structure. Update lines 62-67 to use the correct network identifiers according to Chainlink's documentation, then run pnpm format to ensure consistent formatting.

🤖 Prompt for AI Agents
In src/constants/oracle/chainlink-data/index.ts around lines 62 to 67, the
Chainlink feed URLs use "mainnet" as the network segment but must use the actual
network names; update the two return strings to replace
"/feeds/hyperliquid/mainnet/" with "/feeds/hyperliquid/hyperliquid/" and
"/feeds/monad/mainnet/" with "/feeds/monad/monad/"; after changing the URL
strings, run pnpm format to fix formatting/semicolons.

Comment on lines +409 to +419
{
"ens": "ustb-nav-aave-llamaguard",
"heartbeat": 97200,
"path": "ustb-nav-aave-llamaguard",
"proxyAddress": "0xde49c7B5C0E54b1624ED21C7D88bA6593d444Aa0",
"threshold": 1e-7,
"feedCategory": "",
"baseAsset": "",
"quoteAsset": "",
"isSVR": false
},
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Several entries have empty baseAsset, quoteAsset, and feedCategory—verify intentional.

Entries like ustb-nav-aave-llamaguard (lines 415-417), uscc-nav-aave-llamaguard (lines 481-483), usyc-nav-aave-llamaguard (lines 613-615), and jaaa-nav-aave-llamaguard (lines 657-659) lack asset and category data. Are these placeholders, or should they be populated?

Also applies to: 475-485, 608-617, 651-661

Comment on lines +1 to +628
[
{
"ens": "usdt-usd",
"heartbeat": 3600,
"path": "usdt-usd",
"proxyAddress": "0x1a1Be4c184923a6BFF8c27cfDf6ac8bDE4DE00FC",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "USDT",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "avax-usd",
"heartbeat": 3600,
"path": "avax-usd",
"proxyAddress": "0xb0c0202E6d8b978f9b6FE6B5e50ebD6FD7A962a1",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "AVAX",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "sui-usd",
"heartbeat": 3600,
"path": "sui-usd",
"proxyAddress": "0x69E075202802B5a90661AfDb4aDC117Eef8a59DF",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "SUI",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "smon-mon-exchange-rate",
"heartbeat": 86400,
"path": "smon-mon-exchange-rate",
"proxyAddress": "0x056d0eF95A4e046D028b00E6eC00bB4A8b1eBb96",
"threshold": 0.5,
"feedCategory": "custom",
"baseAsset": "SMON",
"quoteAsset": "MON",
"isSVR": false
},
{
"ens": "sol-usd",
"heartbeat": 3600,
"path": "sol-usd",
"proxyAddress": "0x16F8008c3e89f62e5e2b909Ce70999370D38F4F2",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "SOL",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "cbbtc-usd",
"heartbeat": 3600,
"path": "cbbtc-usd",
"proxyAddress": "0x3dDc1bAE752aaEe31b577bF844c799C349A1d6BD",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "CBBTC",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "dot-usd",
"heartbeat": 3600,
"path": "dot-usd",
"proxyAddress": "0xc40F902d11b11BF243283AF537A4Fc617344B2C7",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "DOT",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "rseth-usd",
"heartbeat": 3600,
"path": "rseth-usd",
"proxyAddress": "0x7422d308f0Aeb0c7816402Ff4E68078c2549435b",
"threshold": 0.05,
"feedCategory": "high",
"baseAsset": "RSETH",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "wbtc-usd",
"heartbeat": 3600,
"path": "wbtc-usd",
"proxyAddress": "0x2D1Df1bD061AAc38C22407AD69d69bCC3C62edBD",
"threshold": 0.05,
"feedCategory": "medium",
"baseAsset": "WBTC",
"quoteAsset": "BTC",
"isSVR": false
},
{
"ens": "pol-usd",
"heartbeat": 3600,
"path": "pol-usd",
"proxyAddress": "0x519dC0fBb6f4fa37F59Dc17CC60eF4d95cd8D001",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "POL",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "weeth-usd",
"heartbeat": 3600,
"path": "weeth-usd",
"proxyAddress": "0x42dd36b9D6938dccff8Fe4E9770589aBa614FCBB",
"threshold": 0.05,
"feedCategory": "medium",
"baseAsset": "weETH",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "ltc-usd",
"heartbeat": 3600,
"path": "ltc-usd",
"proxyAddress": "0xF29B907b292fb27e07f06331E4e92Ea7288a6001",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "LTC",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "gmon-mon-exchange-rate",
"heartbeat": 86400,
"path": "gmon-mon-exchange-rate",
"proxyAddress": "0xf97dfEd6Aa4cc387aBC5d47F0062A91CB4E4A755",
"threshold": 0.05,
"feedCategory": "custom",
"baseAsset": "GMON",
"quoteAsset": "MON",
"isSVR": false
},
{
"ens": "solvbtc-btc-exchange-rate",
"heartbeat": 86400,
"path": "solvbtc-btc-exchange-rate",
"proxyAddress": "0x8CAeDe99D5253457E3bd7A52697C99d00549D04A",
"threshold": 0.01,
"feedCategory": "custom",
"baseAsset": "solvBTC",
"quoteAsset": "BTC",
"isSVR": false
},
{
"ens": "mon-usd",
"heartbeat": 3600,
"path": "mon-usd",
"proxyAddress": "0xBcD78f76005B7515837af6b50c7C52BCf73822fb",
"threshold": 0.02,
"feedCategory": "new",
"baseAsset": "MON",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "bera-usd",
"heartbeat": 3600,
"path": "bera-usd",
"proxyAddress": "0x92929c1b04C6b4AbD6c2C34111d447d972cACA71",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "BERA",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "eth-usd",
"heartbeat": 3600,
"path": "eth-usd",
"proxyAddress": "0x1B1414782B859871781bA3E4B0979b9ca57A0A04",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "ETH",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "earnausd-ausd-exchange-rate",
"heartbeat": 86400,
"path": "earnausd-ausd-exchange-rate",
"proxyAddress": "0x66608681545aaa50D9ebdBd9542fEeA4e49B85da",
"threshold": 0.05,
"feedCategory": "custom",
"baseAsset": "EarnAUSD",
"quoteAsset": "AUSD",
"isSVR": false
},
{
"ens": "usdc-usd",
"heartbeat": 3600,
"path": "usdc-usd",
"proxyAddress": "0xf5F15f188AbCB0d165D1Edb7f37F7d6fA2fCebec",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "USDC",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "link-usd",
"heartbeat": 3600,
"path": "link-usd",
"proxyAddress": "0x5c266b5c655664d6c99a13fF0d7F1F7eaF4Ac9ba",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "LINK",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "wsteth-usd",
"heartbeat": 3600,
"path": "wsteth-usd",
"proxyAddress": "0xe6cd21b31948503dB54A07875999979722504B9A",
"threshold": 0.05,
"feedCategory": "medium",
"baseAsset": "WSTETH",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "usr-usd",
"heartbeat": 3600,
"path": "usr-usd",
"proxyAddress": "0x5A96Af6E7c9aA17901D9E2f00feafAFc7655B19F",
"threshold": 0.05,
"feedCategory": "medium",
"baseAsset": "USR",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "uni-usd",
"heartbeat": 3600,
"path": "uni-usd",
"proxyAddress": "0x8Cc589634A0B5959Fb29fc1111CFf26356b11918",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "UNI",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "near-usd",
"heartbeat": 3600,
"path": "near-usd",
"proxyAddress": "0x921cB0E4f2397454240CcdB27596217CE4e65090",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "NEAR",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "pyusd-usd",
"heartbeat": 3600,
"path": "pyusd-usd",
"proxyAddress": "0xb368d0CF937A6843fb68f1CD0056C835B4Cf3F70",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "PYUSD",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "hype-usd",
"heartbeat": 3600,
"path": "hype-usd",
"proxyAddress": "0xf62D24B17181305B22E520fB14384eB86b9C6944",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "HYPE",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "ezeth-eth-exchange-rate",
"heartbeat": 86400,
"path": "ezeth-eth-exchange-rate",
"proxyAddress": "0xdA0Da3272575e3fed2Bd61Bc63DB776516e808F2",
"threshold": 0.5,
"feedCategory": "custom",
"baseAsset": "EZETH",
"quoteAsset": "ETH",
"isSVR": false
},
{
"ens": "apr-usd",
"heartbeat": 3600,
"path": "apr-usd",
"proxyAddress": "0x7bFEB91472503F927539B6ED0A328dfb091F61Cc",
"threshold": 0.05,
"feedCategory": "new",
"baseAsset": "APR",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "ausd-usd",
"heartbeat": 3600,
"path": "ausd-usd",
"proxyAddress": "0xE20751C7B5867bCBef815ffc1b284c3f412a9e13",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "AUSD",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "usde-usd",
"heartbeat": 3600,
"path": "usde-usd",
"proxyAddress": "0x6b5902EABcE27C23FC97ea136504395b4d22C1FD",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "USDE",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "ezeth-usd",
"heartbeat": 3600,
"path": "ezeth-usd",
"proxyAddress": "0xC38c1843751941019EdE3B8E041EE1bD14575B44",
"threshold": 0.05,
"feedCategory": "medium",
"baseAsset": "EZETH",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "aave-usd",
"heartbeat": 3600,
"path": "aave-usd",
"proxyAddress": "0x2a954d493eE80BcC7cDeF56DB6fC6edC6758CA5d",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "AAVE",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "xag-usd",
"heartbeat": 3600,
"path": "xag-usd",
"proxyAddress": "0x29bEb7e730f09D33417357dbed020B549fdF7db4",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "XAG",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "cake-usd",
"heartbeat": 3600,
"path": "cake-usd",
"proxyAddress": "0x6156c406B7672b4720B7A2E637F32fc68E55930c",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "CAKE",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "ada-usd",
"heartbeat": 3600,
"path": "ada-usd",
"proxyAddress": "0xA7cd3368eBC801df68812d46AB6b3F47d4BF37ea",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "ADA",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "cro-usd",
"heartbeat": 3600,
"path": "cro-usd",
"proxyAddress": "0xfDa103bb79FbB958eD270F828ca2506D046cAC91",
"threshold": 0.05,
"feedCategory": "medium",
"baseAsset": "CRO",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "shmon-mon-exchange-rate",
"heartbeat": 86400,
"path": "shmon-mon-exchange-rate",
"proxyAddress": "0x54a1020D118B9BeF3F3A4ec8E24AeEc9DFdBe4c3",
"threshold": 0.5,
"feedCategory": "custom",
"baseAsset": "shMON",
"quoteAsset": "MON",
"isSVR": false
},
{
"ens": "op-usd",
"heartbeat": 3600,
"path": "op-usd",
"proxyAddress": "0x3B59380FdCf2fd414F1675D76AF5F20FB92663a7",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "OP",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "sei-usd",
"heartbeat": 3600,
"path": "sei-usd",
"proxyAddress": "0x251eD64BD39e8fceB708b483D18Ee34bf4040aE8",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "SEI",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "bnb-usd",
"heartbeat": 3600,
"path": "bnb-usd",
"proxyAddress": "0xEB58Fa36e5715fc1Bdb9959E0Ae01803B7432882",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "BNB",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "steth-usd",
"heartbeat": 3600,
"path": "steth-usd",
"proxyAddress": "0xad7AF5c6d78Ef5f4d3c4133593047d9E2A8BDa8d",
"threshold": 0.05,
"feedCategory": "medium",
"baseAsset": "STETH",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "arb-usd",
"heartbeat": 3600,
"path": "arb-usd",
"proxyAddress": "0xcD22c0012480987F6F81F1099E74954B75666361",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "ARB",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "tia-usd",
"heartbeat": 3600,
"path": "tia-usd",
"proxyAddress": "0x31938934512dFFf3c410a6D07CeAF5F38B66BFee",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "TIA",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "btc-usd",
"heartbeat": 3600,
"path": "btc-usd",
"proxyAddress": "0xc1d4C3331635184fA4C3c22fb92211B2Ac9E0546",
"threshold": 0.02,
"feedCategory": "low",
"baseAsset": "BTC",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "usd1-usd",
"heartbeat": 3600,
"path": "usd1-usd",
"proxyAddress": "0xa63564f2A626f69130C1CCA87f984351B26Cf2f1",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "USD1",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "usds-usd",
"heartbeat": 3600,
"path": "usds-usd",
"proxyAddress": "0xa16212CD5b330583B346167fA91E138d41AEe8CC",
"threshold": 0.05,
"feedCategory": "medium",
"baseAsset": "USDS",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "doge-usd",
"heartbeat": 3600,
"path": "doge-usd",
"proxyAddress": "0x1c747D909102bfCdb305C54bDdDBdA3eF588B1d0",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "DOGE",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "solvbtc-usd",
"heartbeat": 3600,
"path": "solvbtc-usd",
"proxyAddress": "0xd447F67Dc94f234dFA1a3921C08330CecA06a1dC",
"threshold": 0.05,
"feedCategory": "high",
"baseAsset": "solvBTC",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "shib-usd",
"heartbeat": 3600,
"path": "shib-usd",
"proxyAddress": "0x68f23F7820B8528FBd1039B235923d8FB2590985",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "SHIB",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "apt-usd",
"heartbeat": 3600,
"path": "apt-usd",
"proxyAddress": "0x714de9941991c7Cec93efA6cB63469bD6bFE1258",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "APT",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "lbtc-usd",
"heartbeat": 3600,
"path": "lbtc-usd",
"proxyAddress": "0x3D160cBa91B35BC295295Cb790080E9be9A46811",
"threshold": 0.05,
"feedCategory": "medium",
"baseAsset": "LBTC",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "susde-usd",
"heartbeat": 3600,
"path": "susde-usd",
"proxyAddress": "0xB7E7A36A0Fc6543C10f4F9B60E942F1b628f2a13",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "SUSDE",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "xau-usd",
"heartbeat": 3600,
"path": "xau-usd",
"proxyAddress": "0x61dD33A34E47a181EE02e42eE0546a3DA808f1B4",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "XAU",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "s-usd",
"heartbeat": 3600,
"path": "s-usd",
"proxyAddress": "0x1Bd7CEBABA5C2c40D44b83A08F42A3377447dDFe",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "S",
"quoteAsset": "USD",
"isSVR": false
},
{
"ens": "aprmon-mon-exchange-rate",
"heartbeat": 86400,
"path": "aprmon-mon-exchange-rate",
"proxyAddress": "0xc744776cAF11982a4c632121E0f6E2543f42FA47",
"threshold": 0.05,
"feedCategory": "custom",
"baseAsset": "aprMON",
"quoteAsset": "MON",
"isSVR": false
},
{
"ens": "aave-network-emergency-count-monad",
"heartbeat": 86400,
"path": "aave-network-emergency-count-monad",
"proxyAddress": "0x4C24fFe2Cb6dE5C55ef0cA8905c13b8508994D4b",
"threshold": 1e-7,
"feedCategory": "custom",
"baseAsset": "",
"quoteAsset": "",
"isSVR": false
},
{
"ens": "xrp-usd",
"heartbeat": 3600,
"path": "xrp-usd",
"proxyAddress": "0x979211Dfbc0738559B778a6a58a5b1bbbBe720f9",
"threshold": 0.05,
"feedCategory": "low",
"baseAsset": "XRP",
"quoteAsset": "USD",
"isSVR": false
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

Script executed:

#!/bin/bash
# Find all chainlink-data JSON files to compare structure
find src/constants/oracle/chainlink-data -type f -name "*.json" | head -20

Repository: antoncoding/monarch


<shell_result>
Repository: antoncoding/monarch
Script execution failed with unrecoverable error: [CAPABILITY:RUN_SHELL_SCRIPT] Failed to clone repository antoncoding/monarch: Clone operation failed
</shell_result>


Script executed:

#!/bin/bash
# List files in chainlink-data directory to find comparable files
ls -la src/constants/oracle/chainlink-data/ 2>/dev/null || echo "Path may differ"
# Try alternate search
find . -name "*.json" -path "*/chainlink*" -type f 2>/dev/null | head -10

Repository: antoncoding/monarch


<shell_result>
Repository: antoncoding/monarch
Script execution failed with unrecoverable error: [CAPABILITY:RUN_SHELL_SCRIPT] Failed to clone repository antoncoding/monarch: Clone operation failed
</shell_result>


Chainlink feedCategory values oracle feeds monad


<web_search_result>
Here’s what you’re likely after.

  1. Common Chainlink Data Feed "category" (feedCategory) values (as shown on the official Data Feeds site): Asset Token, Commodity, Crypto, Equity, ETF, Fiat, Index, Macroeconomics, Money Market Fund, Proof of Reserve, Stablecoin, Stablecoin Stability Assessment, Tokenized Fund, Tokenized Treasury Fund. [1]

  2. Chainlink Data Feeds (including price feeds and new MVR/Rate/Volatility feeds) are available on Monad (testnet earlier and mainnet live). See the Monad feed listings (e.g., MON / USD) on the Chainlink feeds site and the Chainlink changelog about Monad integration. [1][2]

Sources:

  • Chainlink Data Feeds listing (categories & per-network feeds). [1]
  • Chainlink changelog: Data Feeds on/expanded to Monad. [2]
    </web_search_result>

wbtc-usd quote asset price feed convention


<web_search_result>
Short answer:

  • The quote-asset convention for a WBTC–USD price feed is USD as the quote (i.e., price = USD per 1 WBTC). Feeds are named like WBTC/USD, WBTC-USD or WBTC_USD depending on provider. [1][2]

Important integration details (check these on-chain or in the feed docs before using):

  • Decimals vary by feed — many Chainlink USD feeds return prices with 8 decimals but this is not universally guaranteed. Always call decimals() (or read the feed metadata) and scale accordingly. Do not assume a fixed precision. [1][3]
  • Some integrations wrap or rescale feed answers (e.g., convert to 18‑decimals) — inspect the adapter/contract code you rely on. [3][4]

References:
[1] Chainlink WBTC / USD price feed page (feed metadata & naming).
[2] Example market/display sites showing pair convention (CoinGecko: WBTC / USD).
[3] Audit / integration notes demonstrating that Chainlink USD feeds often use 8 decimals but you must read decimals() and handle per‑feed scaling.
[4] Adrastia / oracle docs recommending verifying quote token and decimals before integration.
</web_search_result>


Based on my web search, I can now verify the concerns:

WBTC-USD Quote Asset Issue: CONFIRMED
The web search confirms that Chainlink WBTC/USD price feeds should have USD as the quote asset, not BTC. The naming convention wbtc-usd clearly indicates USD as the quote. This is indeed a data anomaly that needs fixing.

FeedCategory Values: Context Clarified
The official Chainlink feedCategory values are: Asset Token, Commodity, Crypto, Equity, ETF, Fiat, Index, Macroeconomics, Money Market Fund, Proof of Reserve, Stablecoin, Stablecoin Stability Assessment, Tokenized Fund, Tokenized Treasury Fund.

However, this JSON file uses custom values: "low", "medium", "high", "custom", and "new". These appear to be internal severity/priority classifications rather than Chainlink's official categories. The "new" value for mon-usd and apr-usd likely flags recently added feeds.


Fix wbtc-usd quote asset from "BTC" to "USD".

The entry for wbtc-usd incorrectly specifies "quoteAsset": "BTC". Per Chainlink conventions and the feed naming (wbtc-usd), the quote asset should be "USD". This matches the pattern of all other -usd feeds in the file.

The feedCategory values ("low", "medium", "high", "custom", "new") appear to be custom internal severity classifications. Verify that all consumers of this JSON properly handle the "new" category alongside the standard values.

🤖 Prompt for AI Agents
In src/constants/oracle/chainlink-data/monad.json lines 1-628, the wbtc-usd
entry incorrectly sets "quoteAsset": "BTC"; change that value to "USD" so the
feed matches the naming convention and other -usd entries; also scan other
entries for similar mismatches and, if applicable, confirm consumers tolerate
the custom feedCategory values ("low","medium","high","custom","new") but do not
change those here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant