// SPDX-License-Identifier: MIT pragma solidity ^0.8.24; /// @title PluginStalenessDefaults (GENERATED by tools/gen_staleness.py, do not edit) /// @notice Default max staleness (seconds) per XDC mainnet Plugin feed proxy, from heartbeats /// observed on 2026-10-21. Returns 0 for unknown feeds. Integrators should override. /// Daily FX/stock/metal/RWA feeds: at least 72 h (weekends); `marketHours` flags them. /// 'heartbeat not met': the feed was observed slower than its assumed heartbeat (registry value, else 30 min). /// Defaults will be refreshed from a longer observation window. library PluginStalenessDefaults { function get(address feed) internal pure returns (uint256) { if (feed == 0xd73aDd20E3905410B3817725CCabbE639B75B7Cc) return 259200; // AAPL/USD hb=86400s maxObserved=47578s; market hours/weekend-aware if (feed == 0x7bcC300260bd987f894cDc335c0A6C739b3277a6) return 3600; // ADA/USDT hb=1800s maxObserved=1801s if (feed == 0x5aa2512BeA2484DF66c696b425a172a83DA53053) return 259200; // AED/USD hb=86400s maxObserved=47398s; market hours/weekend-aware if (feed == 0x164B762AB770E93eb923451125C18fd2E7f41427) return 14400; // ALGO/USDT hb=1800s maxObserved=9051s; heartbeat not met if (feed == 0x3aEcCc934Ed6c437E25177e9aEaa84fCE94Af788) return 259200; // AMZN/USD hb=86400s maxObserved=47338s; market hours/weekend-aware if (feed == 0x1Fb848CD419E08b0d9e02C51c95fb4173842c9c2) return 3600; // APT/USDT hb=1800s maxObserved=1797s if (feed == 0x9c1A11c97F2EE69e02Fe2DDC2cfD6eA15eD0c4d0) return 3600; // ARB/USDT hb=1800s maxObserved=1839s if (feed == 0x2d5637324E912d0C008348D7C9fB6fEF9BEF9Ab2) return 7200; // ATOM/USDT hb=1800s maxObserved=3696s; heartbeat not met if (feed == 0x5fc7Dbb51daD5b0b0673b202D85A3477CC8a9352) return 259200; // AUD/USD hb=86400s maxObserved=47458s; market hours/weekend-aware if (feed == 0xF4f4b0cEDeE600610bC363730835877f5B8BF6D9) return 3600; // AVAX/USDT hb=1800s maxObserved=1801s if (feed == 0x20Da0279B3BfC655eAc700Cc2aF3EC06Ecb1F657) return 3600; // BCH/USDT hb=1800s maxObserved=940s if (feed == 0xE38632D9358Ad592c6F4c861d313E0e673739Aa6) return 3600; // BNB/USDT hb=1800s maxObserved=699s if (feed == 0x2d367A668892Ba4D331D94bA4e3D614333cAA5b0) return 259200; // CAD/USD hb=86400s maxObserved=47218s; market hours/weekend-aware if (feed == 0xfc193eE29d38B64FE8D0b56909536DfEee358787) return 7200; // CAKE/USDT hb=1800s maxObserved=2946s; heartbeat not met if (feed == 0xf048DD8CF78504842ADe9af2b5b4c809DCDE819C) return 3600; // CGO/USDT hb=1800s maxObserved=904s if (feed == 0x57b8b03EaAd46C6E2e88dec6d1B6AE119621679f) return 259200; // CHF/USD hb=86400s maxObserved=47000s; market hours/weekend-aware if (feed == 0xA5FA74bC1214Bb7723382F0CdAe12E7998a8DA47) return 18000; // DOGE/USDT hb=1800s maxObserved=11011s; heartbeat not met if (feed == 0x3Dc6486dCb66B0e5327F61683AA00C5946E7452f) return 3600; // DOT/USDT hb=1800s maxObserved=1592s if (feed == 0xcDE0E8cc2f570E50EFD5Ec0A29bAEcF55647Ea28) return 3600; // EEG/USDC hb=1800s maxObserved=929s if (feed == 0xE61d90CD7F793C8C82BBaae07AcFFEf7105CA58F) return 3600; // EEG/USDT hb=1800s maxObserved=929s if (feed == 0x4185C93486C9774F98B60a0Cae50794dE75D9931) return 3600; // ETH/USDT hb=1800s maxObserved=1962s if (feed == 0xc3AEf7663a6022561FfdD84aCAA41572B049E717) return 259200; // EUR/USD hb=86400s maxObserved=47578s; market hours/weekend-aware if (feed == 0x1e7e8DB5eC38392f92F92E11c628B7aC80FeBb8a) return 3600; // FXD/USD hb=1800s maxObserved=609s if (feed == 0xA27596F3233ab3434876C1Fb3b859BF9C32c4Fa9) return 259200; // GBP/USD hb=86400s maxObserved=47518s; market hours/weekend-aware if (feed == 0x1D1B3de8d10D1c130Fe39018Fc0460998D206c3f) return 259200; // GOOG/USD hb=86400s maxObserved=47278s; market hours/weekend-aware if (feed == 0xA76083dAa80B8cC807757bCeC7d18d52322810Cb) return 259200; // INR/USD hb=86400s maxObserved=47278s; market hours/weekend-aware if (feed == 0x4d54b8f5fFb55503BA4026eaD218EdFE7a22Bc9B) return 259200; // JPY/USD hb=86400s maxObserved=47338s; market hours/weekend-aware if (feed == 0xd605CCdA87b48A5C57B7c45f4C04E03D3086c3ff) return 3600; // LTC/USDT hb=1800s maxObserved=1361s if (feed == 0xe644aE7B0BEd6ADCA9c086Cf6612Db072F38895c) return 259200; // MSFT/USD hb=86400s maxObserved=47458s; market hours/weekend-aware if (feed == 0x6F996A5dc3d6EbaFefD5ffd49eb37bB1166fb469) return 3600; // NEAR/USDT hb=1800s maxObserved=868s if (feed == 0xEAa89d8b764fa04EF7dDd97b985bbccCBdFf75be) return 259200; // NVDA/USD hb=86400s maxObserved=47518s; market hours/weekend-aware if (feed == 0xc264d19093531Ab4a35624077d6269172803b7f3) return 259200; // NZD/USD hb=86400s maxObserved=47158s; market hours/weekend-aware if (feed == 0xdcC6E7cB6268176A876aF786AFB0b38f90609aED) return 3600; // OP/USDT hb=1800s maxObserved=1338s if (feed == 0x2baa1AEfa06D58454c9c06C56436CdD5B7904248) return 3600; // PLI/USDT hb=1800s maxObserved=1216s if (feed == 0x6e1D11ece41608F30f9c8b8531D40d8F6A7Dc0fc) return 3600; // PLI/XDC hb=1800s maxObserved=1200s if (feed == 0xe6e1D97CC9Dcc053507b7F10569F7D2A9559cC34) return 7200; // POL/USDT hb=1800s maxObserved=3611s; heartbeat not met if (feed == 0xe975C8361D7699C2D2bd20561109de62f22AF977) return 14400; // PRFI/USD hb=7200s maxObserved=3614s if (feed == 0xfa3Af0782F4126c800E9Cc3338805398Aa942Ea9) return 259200; // ROB2SR01/USD hb=86400s maxObserved=3111s; market hours/weekend-aware if (feed == 0x4D58a57262dcD9607591f09cDFBA4133F5d58387) return 259200; // SGD/USD hb=86400s maxObserved=47098s; market hours/weekend-aware if (feed == 0xe9381D4A52134579C1C84d98624CDA22728A43F0) return 3600; // SOL/USDT hb=1800s maxObserved=1801s if (feed == 0x4e1b13e4f159020e68a56ff69b2D8F231AdAa859) return 3600; // SUI/USDT hb=1800s maxObserved=558s if (feed == 0x5Ba5db953fb87598c117D24c84988Dd60c87Da61) return 3600; // TRX/USDT hb=1800s maxObserved=2155s if (feed == 0x1b213AB205ddCC135aF1801DeA635d8d7056787a) return 259200; // TSLA/USD hb=86400s maxObserved=47398s; market hours/weekend-aware if (feed == 0x5bF45080d40e501FCD1849D9D3a729FAaF6Cc67d) return 3600; // UNI/USDT hb=1800s maxObserved=1793s if (feed == 0x1384E300f00641Cf617AC8B92c430B938eC8DC70) return 3600; // USDC/USD hb=1800s maxObserved=1889s if (feed == 0x5a792d09BAdeF90e599C13aff1552BF487Fe84B2) return 3600; // USDT/USD hb=1800s maxObserved=1889s if (feed == 0x565F60e150E2eC733b71FDDd5AB433586Ff45bf2) return 259200; // UTCRD1SR01/USD hb=86400s maxObserved=1828s; market hours/weekend-aware if (feed == 0x69446A557d3238a5e5Fd33687aC5AcA6A03EEE97) return 259200; // XAG/USD hb=86400s maxObserved=47518s; market hours/weekend-aware if (feed == 0xBA3aCc8fb6cd7dF79Bc64d138fF5e89FeAe965A6) return 259200; // XAU/USD hb=86400s maxObserved=47578s; market hours/weekend-aware if (feed == 0x06566BEcbc9aE692aA07460AEB0406fdfC86B3C3) return 3600; // XDC/USD hb=1800s maxObserved=906s if (feed == 0x0261911548dc291BDf6287e73DFf9B1BF8B08fE8) return 3600; // XDC/USDC hb=1800s maxObserved=910s if (feed == 0x896CC6fE8AD04dF9f481332606c445768e286076) return 3600; // XDC/USDT hb=1800s maxObserved=809s if (feed == 0xdfbC410b72e2Ef7f31218792a598E4eb46e13dDD) return 259200; // XPT/USD hb=86400s maxObserved=47458s; market hours/weekend-aware if (feed == 0x338A274062039e5212345f26674F9d373aa9798f) return 3600; // XRP/USDT hb=1800s maxObserved=1803s if (feed == 0x9cB96a2bAcB20De144e94004Aa8051C855616bCA) return 3600; // XSP/USDT hb=1800s maxObserved=1363s if (feed == 0x061716c481456F9b5878f37D44827a506CE99C11) return 259200; // ZBLE1SR06/USD hb=86400s maxObserved=23039s; market hours/weekend-aware if (feed == 0x854E5Dfa7F3455a2B771859D34C4BFB98B1334cc) return 3600; // ZEC/USDT hb=1800s maxObserved=1213s return 0; } /// @notice True for daily FX/stock/metal/RWA feeds that do not update outside market hours. function marketHours(address feed) internal pure returns (bool) { if (feed == 0xd73aDd20E3905410B3817725CCabbE639B75B7Cc) return true; // AAPL/USD if (feed == 0x5aa2512BeA2484DF66c696b425a172a83DA53053) return true; // AED/USD if (feed == 0x3aEcCc934Ed6c437E25177e9aEaa84fCE94Af788) return true; // AMZN/USD if (feed == 0x5fc7Dbb51daD5b0b0673b202D85A3477CC8a9352) return true; // AUD/USD if (feed == 0x2d367A668892Ba4D331D94bA4e3D614333cAA5b0) return true; // CAD/USD if (feed == 0x57b8b03EaAd46C6E2e88dec6d1B6AE119621679f) return true; // CHF/USD if (feed == 0xc3AEf7663a6022561FfdD84aCAA41572B049E717) return true; // EUR/USD if (feed == 0xA27596F3233ab3434876C1Fb3b859BF9C32c4Fa9) return true; // GBP/USD if (feed == 0x1D1B3de8d10D1c130Fe39018Fc0460998D206c3f) return true; // GOOG/USD if (feed == 0xA76083dAa80B8cC807757bCeC7d18d52322810Cb) return true; // INR/USD if (feed == 0x4d54b8f5fFb55503BA4026eaD218EdFE7a22Bc9B) return true; // JPY/USD if (feed == 0xe644aE7B0BEd6ADCA9c086Cf6612Db072F38895c) return true; // MSFT/USD if (feed == 0xEAa89d8b764fa04EF7dDd97b985bbccCBdFf75be) return true; // NVDA/USD if (feed == 0xc264d19093531Ab4a35624077d6269172803b7f3) return true; // NZD/USD if (feed == 0xfa3Af0782F4126c800E9Cc3338805398Aa942Ea9) return true; // ROB2SR01/USD if (feed == 0x4D58a57262dcD9607591f09cDFBA4133F5d58387) return true; // SGD/USD if (feed == 0x1b213AB205ddCC135aF1801DeA635d8d7056787a) return true; // TSLA/USD if (feed == 0x565F60e150E2eC733b71FDDd5AB433586Ff45bf2) return true; // UTCRD1SR01/USD if (feed == 0x69446A557d3238a5e5Fd33687aC5AcA6A03EEE97) return true; // XAG/USD if (feed == 0xBA3aCc8fb6cd7dF79Bc64d138fF5e89FeAe965A6) return true; // XAU/USD if (feed == 0xdfbC410b72e2Ef7f31218792a598E4eb46e13dDD) return true; // XPT/USD if (feed == 0x061716c481456F9b5878f37D44827a506CE99C11) return true; // ZBLE1SR06/USD return false; } /// @notice Proxies that reverted on 2026-10-21: reverting (access-controlled or broken). /// "No access" ones surface as FeedAccessDenied; empty-data reverts as FeedReverted(feed, ""). function knownReverting(address feed) internal pure returns (bool) { if (feed == 0xeea7ba41a92DE120AAa7e76F29B43CA36E1e21b1) return true; // AAVE/USD if (feed == 0xAfb26Ad97CDC140E7b75e9A889a0069D4d4D4B3A) return true; // ADA/USD if (feed == 0x8bC7eea3F833B996A0E6179CcFe1e3493bF2D6f2) return true; // APE/USD if (feed == 0xdf4530592396e04Ff6FD230993DE1deD7Ae67eBf) return true; // BARUUNQ01/USD if (feed == 0xf6082C58b6e370a55Cca2773E78D29a3B5Cee69c) return true; // BEYND1SR02/USD if (feed == 0x1a6a939117De78Cf3D54B9D1B1Eb4dCb4800D103) return true; // BEYND1SR03/USD if (feed == 0xEe28565FF7583dcB188554BE434665b4235fBCDb) return true; // BTC/USDT if (feed == 0x993e3152E40D4bCdc391fEd4705B1a6654D759d8) return true; // CGO/XDC if (feed == 0xacB8D0Da66bD3403b88A8749249B78c16C93E222) return true; // COMP/USD if (feed == 0xbf6869B2291052944D03dCA7945585D11642191F) return true; // CrudeOil/USD if (feed == 0x20339C3C9357D4b386e2017402842B4F18ba7c37) return true; // DAI/XDC if (feed == 0x1b1b2b0f9E40CeBD009f448a99DeFc145a73ecE0) return true; // DOT/USD if (feed == 0xe034CdC0Afe4f29E8D565ed56A627D595Eab703b) return true; // Dubai/Marina (AED/Sqft) if (feed == 0x924BfD1aa22bbf82CC12D58Be51b16d49829049a) return true; // EURS/USD if (feed == 0x844dD38Ba466Bc8D31844b55D3b4d2c1853C7fC3) return true; // FIT51SR08/USD if (feed == 0x31eDd1f4976733dE34DF8aDD4169663BEE28188b) return true; // FIT51SR12/USD if (feed == 0x8Da1B885669D31a33971FA7CF4e8418b6C18a017) return true; // MLLR1SR03/USD if (feed == 0x83f8151AF0B7826F4e514a318a796CC22baC665e) return true; // NEAR/USD if (feed == 0x8f186a14AD902f467a01c30Dd5E34DB34b6fA3c0) return true; // QQQ/USD if (feed == 0x78FE21Cea7c008fb48c7768cB486f0B4Abfe56bF) return true; // SNX/USD if (feed == 0x6dFe684eD467359c25a3DD4ba36DFEF91F9755A7) return true; // SPY/USD if (feed == 0x96d34dBeDF86217E32ca7E747e4Ae215DA381d57) return true; // Swiss/Geneva (CHF/property) if (feed == 0xDc8464ac37dd9A0FEe655B91D201b72EdaAf7214) return true; // Swiss/Zurich (CHF/SQM) if (feed == 0x02874883fa9fC532A81A44C4Aba0F8A0b100602c) return true; // USD/AAVE if (feed == 0x3E625cF80b1cb5CfbC3A08016B617b0E53E306Eb) return true; // USD/ADA if (feed == 0x657d5d5cd8A28A63698bCC8f0090025031B36db7) return true; // USD/APE if (feed == 0x77e700563255138F987718bb9B5231e99B3F4117) return true; // USD/COMP if (feed == 0x6Ee2ab3Ba0429f640959d5B7E58abA34b4C591cF) return true; // USD/DOT if (feed == 0xa9ec06D76C7b0cA8fD3fc4a7Ed6371016Fb0B841) return true; // USD/NEAR if (feed == 0x2F685dF17a356c56a3f12D3F59E31A69bBD76419) return true; // USD/OGN if (feed == 0x23E39feCBb32c02Bcb35d7f3286CaFBF8644F35D) return true; // USD/SNX if (feed == 0x1C975567Ef315Ca5Bd2014319C836f93F9f15Ac9) return true; // USDC/ETH if (feed == 0x60E5B735623d14AAcf210287f5800003C0FF9f5f) return true; // VOO/USD return false; } }