diff --git a/scripts/generate-redstone-data.ts b/scripts/generate-redstone-data.ts index fa7dedff..70544594 100644 --- a/scripts/generate-redstone-data.ts +++ b/scripts/generate-redstone-data.ts @@ -48,6 +48,7 @@ const ENDPOINTS = { arbitrum: 'arbitrumOneMultiFeed.json', hyperevm: 'hyperevmMultiFeed.json', monad: 'monadMultiFeed.json', + unichain: 'unichainMultiFeed.json' } as const; /** @@ -75,6 +76,7 @@ const FUNDAMENTAL_TO_UNDERLYING_MAPPING: Record = { oseth: 'eth', pufeth: 'eth', wsteth: 'eth', + rseth: 'eth', // HYPE derivative tokens -> HYPE underlying sthype: 'hype', diff --git a/src/constants/oracle/redstone-data/hyperevm.json b/src/constants/oracle/redstone-data/hyperevm.json index 80f4c941..6bff8c17 100644 --- a/src/constants/oracle/redstone-data/hyperevm.json +++ b/src/constants/oracle/redstone-data/hyperevm.json @@ -80,7 +80,7 @@ "threshold": 0.5 }, { - "path": "rseth/unknown", + "path": "rseth/eth", "priceFeedAddress": "0x84AD474c33c9cCefB1a2D8b77Bdd88bDc592f96b", "fundamental": true, "dataServiceId": "redstone-primary-prod", diff --git a/src/constants/oracle/redstone-data/index.ts b/src/constants/oracle/redstone-data/index.ts index e2fe6f00..fc61c22d 100644 --- a/src/constants/oracle/redstone-data/index.ts +++ b/src/constants/oracle/redstone-data/index.ts @@ -6,13 +6,14 @@ import mainnetRawData from './mainnet.json'; import monadRawData from './monad.json'; import polygonRawData from './polygon.json'; import { RedstoneOracleEntry } from './types'; +import unichainRawData from './unichain.json'; export const REDSTONE_ORACLES = { [SupportedNetworks.Mainnet]: mainnetRawData as RedstoneOracleEntry[], [SupportedNetworks.Base]: baseRawData as RedstoneOracleEntry[], [SupportedNetworks.Polygon]: polygonRawData as RedstoneOracleEntry[], [SupportedNetworks.Arbitrum]: arbitrumRawData as RedstoneOracleEntry[], - [SupportedNetworks.Unichain]: [] as RedstoneOracleEntry[], + [SupportedNetworks.Unichain]: unichainRawData as RedstoneOracleEntry[], [SupportedNetworks.HyperEVM]: hyperevmRawData as RedstoneOracleEntry[], [SupportedNetworks.Monad]: monadRawData as RedstoneOracleEntry[], } as const; diff --git a/src/constants/oracle/redstone-data/unichain.json b/src/constants/oracle/redstone-data/unichain.json new file mode 100644 index 00000000..3b89d379 --- /dev/null +++ b/src/constants/oracle/redstone-data/unichain.json @@ -0,0 +1,114 @@ +[ + { + "path": "eth/usd", + "priceFeedAddress": "0xe8D9FbC10e00ecc9f0694617075fDAF657a76FB2", + "fundamental": false, + "dataServiceId": "redstone-primary-prod", + "heartbeat": 21600, + "threshold": 0.5 + }, + { + "path": "btc/usd", + "priceFeedAddress": "0xc44be6D00307c3565FDf753e852Fc003036cBc13", + "fundamental": false, + "dataServiceId": "redstone-primary-prod", + "heartbeat": 21600, + "threshold": 0.5 + }, + { + "path": "usdc/usd", + "priceFeedAddress": "0xD15862FC3D5407A03B696548b6902D6464A69b8c", + "fundamental": false, + "dataServiceId": "redstone-primary-prod", + "heartbeat": 10800, + "threshold": 0.5 + }, + { + "path": "usdt/usd", + "priceFeedAddress": "0x58fa68A373956285dDfb340EDf755246f8DfCA16", + "fundamental": false, + "dataServiceId": "redstone-primary-prod", + "heartbeat": 10800, + "threshold": 0.5 + }, + { + "path": "xvs/usd", + "priceFeedAddress": "0xb4fe9028A4D4D8B3d00e52341F2BB0798860532C", + "fundamental": false, + "dataServiceId": "redstone-primary-prod", + "heartbeat": 86400, + "threshold": 1 + }, + { + "path": "uni/usd", + "priceFeedAddress": "0xf1454949C6dEdfb500ae63Aa6c784Aa1Dde08A6c", + "fundamental": false, + "dataServiceId": "redstone-primary-prod", + "heartbeat": 86400, + "threshold": 1 + }, + { + "path": "dai/usd", + "priceFeedAddress": "0xE94c9f9A1893f23be38A5C0394E46Ac05e8a5f8C", + "fundamental": false, + "dataServiceId": "redstone-primary-prod", + "heartbeat": 10800, + "threshold": 0.5 + }, + { + "path": "comp/usd", + "priceFeedAddress": "0xb81131B6368b3F0a83af09dB4E39Ac23DA96C2Db", + "fundamental": false, + "dataServiceId": "redstone-primary-prod", + "heartbeat": 86400, + "threshold": 1 + }, + { + "path": "wsteth/eth", + "priceFeedAddress": "0x24c8964338Deb5204B096039147B8e8C3AEa42Cc", + "fundamental": false, + "dataServiceId": "redstone-primary-prod", + "heartbeat": 86400, + "threshold": 0.5 + }, + { + "path": "rseth/eth", + "priceFeedAddress": "0x85C4F855Bc0609D2584405819EdAEa3aDAbfE97D", + "fundamental": true, + "dataServiceId": "redstone-primary-prod", + "heartbeat": 86400, + "threshold": 0.5 + }, + { + "path": "weeth/eth", + "priceFeedAddress": "0xBf3bA2b090188B40eF83145Be0e9F30C6ca63689", + "fundamental": true, + "dataServiceId": "redstone-primary-prod", + "heartbeat": 86400, + "threshold": 0.5 + }, + { + "path": "ezeth/eth", + "priceFeedAddress": "0xa0f2EF6ceC437a4e5F6127d6C51E1B0d3A746911", + "fundamental": true, + "dataServiceId": "redstone-primary-prod", + "heartbeat": 86400, + "threshold": 0.5 + }, + { + "path": "wsteth/steth", + "priceFeedAddress": "0xC3346631E0A9720582fB9CAbdBEA22BC2F57741b", + "fundamental": false, + "dataServiceId": "redstone-primary-prod", + "heartbeat": 86400, + "threshold": 0.5 + }, + { + "path": "usr/unknown", + "priceFeedAddress": "0xbbF121624c3b85C929Ac83872bf6c86b0976A55e", + "fundamental": true, + "dataServiceId": "redstone-primary-prod", + "heartbeat": 86400, + "threshold": 0.5 + } +] \ No newline at end of file diff --git a/src/utils/tokens.ts b/src/utils/tokens.ts index 9c0acdd5..ecc57657 100644 --- a/src/utils/tokens.ts +++ b/src/utils/tokens.ts @@ -258,7 +258,8 @@ const supportedTokens = [ { chain: mainnet, address: '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0' }, { chain: base, address: '0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452' }, { chain: arbitrum, address: '0x5979D7b546E38E414F7E9822514be443A4800529' }, - { chain: monad, address: '0x10Aeaf63194db8d453d4D85a06E5eFE1dd0b5417' } + { chain: monad, address: '0x10Aeaf63194db8d453d4D85a06E5eFE1dd0b5417' }, + { chain: unichain, address: '0xc02fe7317d4eb8753a02c35fe019786854a92001' }, ], peg: TokenPeg.ETH, }, @@ -303,6 +304,7 @@ const supportedTokens = [ networks: [ { chain: mainnet, address: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' }, { chain: polygon, address: '0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6' }, + { chain: unichain, address: '0x927B51f251480a681271180DA4de28D44EC4AfB8' }, { chain: arbitrum, address: '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f' }, { chain: monad, address: '0x0555E30da8f98308EdB960aa94C0Db47230d2B9c' } ], @@ -346,7 +348,10 @@ const supportedTokens = [ symbol: 'rsETH', img: require('../imgs/tokens/rseth.png') as string, decimals: 18, - networks: [{ chain: mainnet, address: '0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7' }], + networks: [ + { chain: mainnet, address: '0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7' }, + { chain: unichain, address: '0xc3eACf0612346366Db554C991D7858716db09f58' } + ], peg: TokenPeg.ETH, }, { @@ -362,6 +367,7 @@ const supportedTokens = [ networks: [ { chain: mainnet, address: '0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee' }, { chain: base, address: '0x04C0599Ae5A44757c0af6F9eC3b93da8976c150A' }, + { chain: unichain, address: '0x7DCC39B4d1C53CB31e1aBc0e358b43987FEF80f7' } ], peg: TokenPeg.ETH, }, @@ -416,10 +422,8 @@ const supportedTokens = [ decimals: 18, networks: [ { chain: mainnet, address: '0xbf5495Efe5DB9ce00f80364C8B423567e58d2110' }, - { - chain: base, - address: '0x2416092f143378750bb29b79eD961ab195CcEea5', - }, + { chain: base, address: '0x2416092f143378750bb29b79eD961ab195CcEea5'}, + { chain: unichain, address: '0x2416092f143378750bb29b79eD961ab195CcEea5' } ], peg: TokenPeg.ETH, }, @@ -589,7 +593,8 @@ const supportedTokens = [ decimals: 18, networks: [ { chain: hyperEvm, address: '0xb8ce59fc3717ada4c02eadf9682a9e934f625ebb' }, - { chain: monad, address: '0xe7cd86e13AC4309349F30B3435a9d337750fC82D' } + { chain: monad, address: '0xe7cd86e13AC4309349F30B3435a9d337750fC82D' }, + { chain: unichain, address: '0x9151434b16b9763660705744891fA906F660EcC5' } ], peg: TokenPeg.USD, },