diff --git a/bun.lockb b/bun.lockb index d7def70..8178e3f 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/configs/domain/README.md b/configs/domain/README.md new file mode 100644 index 0000000..e69de29 diff --git a/configs/domain/get-denomination-symbol.ts b/configs/domain/get-denomination-symbol.ts new file mode 100644 index 0000000..7b79016 --- /dev/null +++ b/configs/domain/get-denomination-symbol.ts @@ -0,0 +1,6 @@ +import {DenominationSymbol} from "🤝"; +import {EnumToObject, enumToObject} from "🛠️"; + +export const getLabelByDenominationSymbol = (): EnumToObject => { + return enumToObject(DenominationSymbol) +}; \ No newline at end of file diff --git a/configs/domain/get-lending-protocols.ts b/configs/domain/get-lending-protocols.ts new file mode 100644 index 0000000..29bad42 --- /dev/null +++ b/configs/domain/get-lending-protocols.ts @@ -0,0 +1,14 @@ +import { LendingProtocol, LendingProtocolLabel } from "🤝"; + +type LendingProtocolLabelValueType = typeof LendingProtocolLabel[keyof typeof LendingProtocolLabel]; +type LabelByLendingProtocol = Record; + +export const getLabelByLendingProtocol = (): LabelByLendingProtocol => { + return { + [LendingProtocol.AaveV2]: LendingProtocolLabel.aavev2, + [LendingProtocol.AaveV3]: LendingProtocolLabel.aavev3, + [LendingProtocol.Ajna]: LendingProtocolLabel.ajna, + [LendingProtocol.Maker]: LendingProtocolLabel.maker, + [LendingProtocol.SparkV3]: LendingProtocolLabel.sparkv3, + } +}; \ No newline at end of file diff --git a/configs/domain/get-networks.ts b/configs/domain/get-networks.ts new file mode 100644 index 0000000..1496977 --- /dev/null +++ b/configs/domain/get-networks.ts @@ -0,0 +1,6 @@ +import {EnumToObject, enumToObject} from "🛠️"; +import {Network} from "🤝"; + +export const getNetworkNameByNetwork = (): EnumToObject => { + return enumToObject(Network) +}; \ No newline at end of file diff --git a/configs/domain/get-tokens-by-network.ts b/configs/domain/get-tokens-by-network.ts new file mode 100644 index 0000000..4740b65 --- /dev/null +++ b/configs/domain/get-tokens-by-network.ts @@ -0,0 +1,64 @@ +import {ADDRESSES, ADDRESS_ZERO, Common, SystemKeys} from '@oasisdex/addresses' +import {IToken, Network, TokenSymbol, Tokens, tokens} from "🤝"; + +type TokenSubset = { + [key in TokenSymbol]?: IToken; +}; + +type NetworkTokens = { + [network in Network]: TokenSubset[]; +}; + +/** + * Returns tokens for each network + * Can be enhanced to return address enriched tokens for each network + */ +export const getTokensByNetwork = (): NetworkTokens => { + const mainnetCommon = ADDRESSES[Network.MAINNET][SystemKeys.COMMON] + const optimismCommon = ADDRESSES[Network.OPTIMISM][SystemKeys.COMMON] + const arbitrumCommon = ADDRESSES[Network.ARBITRUM][SystemKeys.COMMON] + // const baseCommon = ADDRESSES[Networks.BASE][SystemKeys.COMMON] + // const polygonCommon = ADDRESSES[Networks.POLYGON][SystemKeys.COMMON] + const goerliCommon = ADDRESSES[Network.GOERLI][SystemKeys.COMMON] + // const optimismGoerliCommon = ADDRESSES[Networks.OPTIMISM_GOERLI][SystemKeys.COMMON] + + return { + [Network.MAINNET]: [ + ...generateEntries(tokens, mainnetCommon) + ], + [Network.OPTIMISM]: [ + ...generateEntries(tokens, optimismCommon), + ], + [Network.ARBITRUM]: [ + ...generateEntries(tokens, arbitrumCommon), + ], + [Network.BASE]: [], + [Network.POLYGON]: [], + [Network.GOERLI]: [ + ...generateEntries(tokens, goerliCommon), + ], + [Network.OPTIMISM_GOERLI]: [], + [Network.ARBITRUM_GOERLI]: [], + [Network.POLYGON_MUMBAI]: [], + } +}; + +function generateEntries(tokens: Tokens, networkCommonAddresses: Record) { + const entries = []; + + for (const tokenSymbol in tokens) { + // We're forcing the type here because we know that the tokenSymbol is (or should be) a key of Tokens + const address = networkCommonAddresses[tokenSymbol as keyof typeof networkCommonAddresses]; + + // Check if the address is neither ZERO_ADDRESS nor an empty string. + // Also in case there's no overlap between tokenSymbols and networkCommonAddresses ignore the tokenSymbol + if (address && address !== "" && address !== ADDRESS_ZERO) { + const tokenObject = { + [tokenSymbol]: tokens[tokenSymbol as TokenSymbol].setAddress(address).toObject() + }; + entries.push(tokenObject); + } + } + + return entries +} \ No newline at end of file diff --git a/configs/domain/get-tokens-by-token-symbol.ts b/configs/domain/get-tokens-by-token-symbol.ts new file mode 100644 index 0000000..51a5766 --- /dev/null +++ b/configs/domain/get-tokens-by-token-symbol.ts @@ -0,0 +1,14 @@ +import {IToken, TokenSymbol, tokensByTokenSymbol} from "🤝"; + + +export const getTokenByTokenSymbol = (): Record> => { + const result: Record> = {} as unknown as Record>; + + for (const symbol of Object.keys(tokensByTokenSymbol) as TokenSymbol[]) { + if (Object.prototype.hasOwnProperty.call(tokensByTokenSymbol, symbol) && tokensByTokenSymbol[symbol].toObject) { + result[symbol] = { ...tokensByTokenSymbol[symbol].toObject() }; + } + } + + return result; +}; \ No newline at end of file diff --git a/configs/domain/index.ts b/configs/domain/index.ts new file mode 100644 index 0000000..9074ec9 --- /dev/null +++ b/configs/domain/index.ts @@ -0,0 +1,21 @@ +import {getLabelByDenominationSymbol} from "./get-denomination-symbol"; +import {getLabelByLendingProtocol} from "./get-lending-protocols"; +import {getNetworkNameByNetwork} from "./get-networks"; +import {getTokenByTokenSymbol} from "./get-tokens-by-token-symbol"; +import {getTokensByNetwork} from "./get-tokens-by-network"; + +export default function () { + /** + * Goal is to capture domain specific configurations that is common + * across all Summer.fi systems and apps. + * + * Possible extensions could include Products / Product categories / Strategies etc + */ + return { + tokenByTokenSymbol: getTokenByTokenSymbol(), + tokensByNetwork: getTokensByNetwork(), + labelByLendingProtocol: getLabelByLendingProtocol(), + networkNameByNetwork: getNetworkNameByNetwork(), + labelByDenominationSymbol: getLabelByDenominationSymbol() + }; +} diff --git a/configs/oasis-borrow/getNavigation.ts b/configs/oasis-borrow/getNavigation.ts index 9b4b38b..e055fb9 100644 --- a/configs/oasis-borrow/getNavigation.ts +++ b/configs/oasis-borrow/getNavigation.ts @@ -1,3 +1,5 @@ +import {TokenSymbol} from "🤝"; + export const getNavigation= () => ({ protocols: { ajna: { @@ -70,7 +72,7 @@ export const getNavigation= () => ({ }, }, tokens: { - popular: ['ETH', 'STETH', 'RETH', 'CBETH', 'DAI', 'WBTC', 'USDC'], - new: ['SDAI'], + popular: [TokenSymbol.ETH, TokenSymbol.STETH, TokenSymbol.RETH, TokenSymbol.CBETH, TokenSymbol.DAI, TokenSymbol.WBTC, TokenSymbol.USDC], + new: [TokenSymbol.SDAI], }, }) \ No newline at end of file diff --git a/configs/oasis-borrow/getParameters.ts b/configs/oasis-borrow/getParameters.ts index 0d72120..965f572 100644 --- a/configs/oasis-borrow/getParameters.ts +++ b/configs/oasis-borrow/getParameters.ts @@ -1,4 +1,5 @@ import { ConfigHelperType } from "⌨️"; +import {TokenSymbol} from "🤝"; export const getParameters = ({ notProduction, @@ -13,7 +14,7 @@ export const getParameters = ({ showFlashloanInformation: notProduction, }, closeDisabledFor: { - collateral: ["DAI", "USDC"], + collateral: [TokenSymbol.DAI, TokenSymbol.USDC], strategyTypes: ["short"], }, adjustDisabledFor: { diff --git a/helpers/constants.ts b/helpers/constants.ts index 145d682..ea5a794 100644 --- a/helpers/constants.ts +++ b/helpers/constants.ts @@ -10,3 +10,5 @@ export const constants = { configFolder: path.join(__dirname, "../configs"), distFolder: path.join(__dirname, "../dist"), }; + + diff --git a/helpers/enum-to-object.ts b/helpers/enum-to-object.ts new file mode 100644 index 0000000..7e214f6 --- /dev/null +++ b/helpers/enum-to-object.ts @@ -0,0 +1,12 @@ +export type EnumToObject> = { + [K in keyof E]: E[K]; +}; + +export function enumToObject>(e: E): { [K in keyof E]: E[K] } { + return Object.keys(e) + .filter(key => isNaN(Number(key))) + .reduce((obj, key) => { + obj[key as keyof E] = e[key as keyof E]; + return obj; + }, {} as { [K in keyof E]: E[K] }); +} \ No newline at end of file diff --git a/helpers/index.ts b/helpers/index.ts index 3b74e11..bddca7d 100644 --- a/helpers/index.ts +++ b/helpers/index.ts @@ -1,6 +1,7 @@ -export { constants } from "./constants"; -export { generateConfigs } from "./generate-configs"; -export { getConfigMainModules } from "./get-config-main-modules"; -export { getEnvironments } from "./get-environments"; -export { parseConfig } from "./parse-config"; -export { createConfigFiles } from "./create-config-files"; +export {constants} from "./constants"; +export {generateConfigs} from "./generate-configs"; +export {getConfigMainModules} from "./get-config-main-modules"; +export {getEnvironments} from "./get-environments"; +export {parseConfig} from "./parse-config"; +export {createConfigFiles} from "./create-config-files"; +export * from './enum-to-object' \ No newline at end of file diff --git a/package.json b/package.json index cc0bdd0..7ee9416 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ }, "homepage": "https://github.com/OasisDEX/oazo-configuration#readme", "dependencies": { + "@oasisdex/addresses": "0.1.7", "@types/node": "^20.5.9", "@typescript-eslint/eslint-plugin": "^5.0.0", "@typescript-eslint/parser": "^5.0.0", diff --git a/shared/denomination-symbol.ts b/shared/denomination-symbol.ts new file mode 100644 index 0000000..5668482 --- /dev/null +++ b/shared/denomination-symbol.ts @@ -0,0 +1,26 @@ +/** + * Enum representing popular currency denominations. + * This provides a standardized way to reference these denominations throughout the application. + */ +export enum DenominationSymbol { + USD = 'USD', // United States Dollar + ETH = 'ETH', // Ethereum + BTC = 'BTC', // Bitcoin + GBP = 'GBP', // British Pound Sterling + EUR = 'EUR', // Euro + JPY = 'JPY', // Japanese Yen + KRW = 'KRW', // South Korean Won + CNY = 'CNY', // Chinese Yuan + AUD = 'AUD', // Australian Dollar + CAD = 'CAD', // Canadian Dollar + CHF = 'CHF', // Swiss Franc + ARS = 'ARS', // Argentine Peso + PHP = 'PHP', // Philippine Peso + NZD = 'NZD', // New Zealand Dollar + SGD = 'SGD', // Singapore Dollar + NGN = 'NGN', // Nigerian Naira + ZAR = 'ZAR', // South African Rand + RUB = 'RUB', // Russian Ruble + INR = 'INR', // Indian Rupee + BRL = 'BRL' // Brazilian Real +} diff --git a/shared/index.ts b/shared/index.ts new file mode 100644 index 0000000..e9a1821 --- /dev/null +++ b/shared/index.ts @@ -0,0 +1,5 @@ +export * from './network'; +export * from './token-symbol' +export * from './denomination-symbol' +export * from './tokens'; +export * from './lending-protocol' \ No newline at end of file diff --git a/shared/lending-protocol.ts b/shared/lending-protocol.ts new file mode 100644 index 0000000..ab5ef4d --- /dev/null +++ b/shared/lending-protocol.ts @@ -0,0 +1,23 @@ +/** + * Enum representing various lending protocols supported by the platform. + * This provides a standardized way to reference these protocols throughout the application. + */ +export enum LendingProtocol { + AaveV2 = 'aavev2', // Aave Version 2 + AaveV3 = 'aavev3', // Aave Version 3 + Ajna = 'ajna', // Ajna Protocol + Maker = 'maker', // MakerDAO + SparkV3 = 'sparkv3', // Spark Version 3 +} + +/** + * Object mapping lending protocols to their human-readable labels. + * This can be used for display purposes in UI components. + */ +export const LendingProtocolLabel = { + [LendingProtocol.AaveV2]: 'Aave V2', + [LendingProtocol.AaveV3]: 'Aave V3', + [LendingProtocol.Ajna]: 'Ajna', + [LendingProtocol.Maker]: 'Maker', + [LendingProtocol.SparkV3]: 'Spark', +} diff --git a/shared/network.ts b/shared/network.ts new file mode 100644 index 0000000..f6381b6 --- /dev/null +++ b/shared/network.ts @@ -0,0 +1,19 @@ +/** + * Enum representing various blockchain networks supported by the platform. + * This includes both mainnets and testnets, providing a standardised way + * to reference these networks throughout the application. + */ +export enum Network { + // Mainnets + MAINNET = 'mainnet', // Ethereum Mainnet + OPTIMISM = 'optimism', // Optimism Layer 2 Mainnet + ARBITRUM = 'arbitrum', // Arbitrum Layer 2 Mainnet + BASE = 'base', // Base Layer 2 Mainnet (Coinbase) + POLYGON = 'polygon', // Polygon (previously Matic) Mainnet + + // Testnets + GOERLI = 'goerli', // Ethereum Goerli Testnet + OPTIMISM_GOERLI = 'optimism_goerli', // Optimism Layer 2 on Goerli Testnet + ARBITRUM_GOERLI = 'arbitrum_goerli', // Arbitrum Layer 2 on Goerli Testnet + POLYGON_MUMBAI = 'polygon_mumbai', // Polygon Mumbai Testnet +} diff --git a/shared/token-symbol.ts b/shared/token-symbol.ts new file mode 100644 index 0000000..00e1513 --- /dev/null +++ b/shared/token-symbol.ts @@ -0,0 +1,66 @@ +/** + * Enum representing various token symbols supported by the platform. + * This provides a standardized way to reference these tokens throughout the application. + */ +export enum TokenSymbol { + ETH = 'ETH', // Ethereum + WETH = 'WETH', // Wrapped Ethereum + STETH = 'STETH', // stakedETH + WSTETH = 'WSTETH', // Wrapped stakedETH + WBTC = 'WBTC', // Wrapped Bitcoin + USDC = 'USDC', // USD Coin + DAI = 'DAI', // Dai Stablecoin + CBETH = 'CBETH', // Compound ETH (assuming, provide accurate description if different) + RETH = 'RETH', // Rocket Pool ETH + AAVE = 'AAVE', + LINK = 'LINK', + UNI = 'UNI', + SUSHI = 'SUSHI', + CRV = 'CRV', + SNX = 'SNX', + ADAI = 'ADAI', // Aave interest bearing DAI + BAL = 'BAL', + BAT = 'BAT', + COMP = 'COMP', + CRVV1ETHSTETH = 'CRVV1ETHSTETH', // Specific Curve pool token + FRAX = 'FRAX', + GHO = 'GHO', + GNO = 'GNO', + GUNIV3DAIUSDC1 = 'GUNIV3DAIUSDC1', // Gelato Uniswap V3 DAI-USDC pool token variant 1 + GUNIV3DAIUSDC2 = 'GUNIV3DAIUSDC2', // Gelato Uniswap V3 DAI-USDC pool token variant 2 + GUSD = 'GUSD', // Gemini Dollar + KNC = 'KNC', // Kyber Network Crystal + LDO = 'LDO', // Lido DAO Token + LRC = 'LRC', // Loopring + LUSD = 'LUSD', // Liquity USD Stablecoin + MANA = 'MANA', // Decentraland + MATIC = 'MATIC', // Polygon token (previously Matic) + PAX = 'PAX', // Paxos Standard + PAXUSD = 'PAXUSD', // Paxos Standard Dollar + RENBTC = 'RENBTC', // Ren Bitcoin + RWA001 = 'RWA001', // Real-World Asset 001 (Maker) + RWA002 = 'RWA002', + RWA003 = 'RWA003', + RWA004 = 'RWA004', + RWA005 = 'RWA005', + RWA006 = 'RWA006', + SDAI = 'SDAI', // Some specific version of DAI + TBTC = 'TBTC', // tBTC (tokenised Bitcoin on Ethereum) + TUSD = 'TUSD', // TrueUSD + UNIV2AAVEETH = 'UNIV2AAVEETH', // Uniswap V2 AAVE-ETH Liquidity Pool Token + UNIV2DAIETH = 'UNIV2DAIETH', // Uniswap V2 DAI-ETH Liquidity Pool Token + UNIV2DAIUSDC = 'UNIV2DAIUSDC', + UNIV2DAIUSDT = 'UNIV2DAIUSDT', + UNIV2ETHUSDT = 'UNIV2ETHUSDT', + UNIV2LINKETH = 'UNIV2LINKETH', + UNIV2UNIETH = 'UNIV2UNIETH', + UNIV2USDCETH = 'UNIV2USDCETH', + UNIV2WBTCDAI = 'UNIV2WBTCDAI', + UNIV2WBTCETH = 'UNIV2WBTCETH', + USDT = 'USDT', // Tether + WLD = 'WLD', + YIELDBTC = 'YIELDBTC', // Yield instrument for BTC + YIELDETH = 'YIELDETH', // Yield instrument for ETH + YFI = 'YFI', // yearn.finance + ZRX = 'ZRX', // 0x +} \ No newline at end of file diff --git a/shared/tokens.ts b/shared/tokens.ts new file mode 100644 index 0000000..48bcbe6 --- /dev/null +++ b/shared/tokens.ts @@ -0,0 +1,173 @@ +/** + * Represents individual tokens with their specific attributes. + * The `Token` class encapsulates details like token symbol, precision (for decimal representation), + * and an optional Ethereum address (if assigned). Additionally, the `tokensByTokenSymbol` dictionary + * allows for easy retrieval of tokens based on their symbol. + */ + +import {TokenSymbol} from "./token-symbol"; + +export interface IToken { + symbol: TokenSymbol + precision: number + address?: string +} + +export class Token implements IToken { + symbol: TokenSymbol + precision: number + address: string + + constructor(symbol: TokenSymbol, precision: number, address?: string) { + this.symbol = symbol + this.precision = precision + this.address = address + } + + setAddress(address: string) { + this.address = address + + return this + } + + toObject(): { symbol: TokenSymbol; precision: number, address?: string } { + return { + symbol: this.symbol, + precision: this.precision, + address: this.address || undefined + }; + } +} + +const ETH = new Token(TokenSymbol.ETH, 18) +const WETH = new Token(TokenSymbol.WETH, 18) +const STETH = new Token(TokenSymbol.STETH, 18) +const WSTETH = new Token(TokenSymbol.WSTETH, 18) +const WBTC = new Token(TokenSymbol.WBTC, 8) +const USDC = new Token(TokenSymbol.USDC, 6) +const DAI = new Token(TokenSymbol.DAI, 18) +const CBETH = new Token(TokenSymbol.CBETH, 8) +const RETH = new Token(TokenSymbol.RETH, 8) +const AAVE = new Token(TokenSymbol.AAVE, 18) +const LINK = new Token(TokenSymbol.LINK, 18) +const UNI = new Token(TokenSymbol.UNI, 18) +const SUSHI = new Token(TokenSymbol.SUSHI, 18) +const CRV = new Token(TokenSymbol.CRV, 18) +const SNX = new Token(TokenSymbol.SNX, 18) +const ADAI = new Token(TokenSymbol.ADAI, 18) +const BAL = new Token(TokenSymbol.BAL, 18) +const BAT = new Token(TokenSymbol.BAT, 18) +const COMP = new Token(TokenSymbol.COMP, 18) +const CRVV1ETHSTETH = new Token(TokenSymbol.CRVV1ETHSTETH, 18) +const FRAX = new Token(TokenSymbol.FRAX, 18) +const GHO = new Token(TokenSymbol.GHO, 18) +const GNO = new Token(TokenSymbol.GNO, 18) +const GUNIV3DAIUSDC1 = new Token(TokenSymbol.GUNIV3DAIUSDC1, 18) +const GUNIV3DAIUSDC2 = new Token(TokenSymbol.GUNIV3DAIUSDC2, 18) +const GUSD = new Token(TokenSymbol.GUSD, 2) +const KNC = new Token(TokenSymbol.KNC, 18) +const LDO = new Token(TokenSymbol.LDO, 18) +const LRC = new Token(TokenSymbol.LRC, 18) +const LUSD = new Token(TokenSymbol.LUSD, 18) +const MANA = new Token(TokenSymbol.MANA, 18) +const MATIC = new Token(TokenSymbol.MATIC, 18) +const PAX = new Token(TokenSymbol.PAX, 18) +const PAXUSD = new Token(TokenSymbol.PAXUSD, 18) +const RENBTC = new Token(TokenSymbol.RENBTC, 8) +const RWA001 = new Token(TokenSymbol.RWA001, 18) +const RWA002 = new Token(TokenSymbol.RWA002, 18) +const RWA003 = new Token(TokenSymbol.RWA003, 18) +const RWA004 = new Token(TokenSymbol.RWA004, 18) +const RWA005 = new Token(TokenSymbol.RWA005, 18) +const RWA006 = new Token(TokenSymbol.RWA006, 18) +const SDAI = new Token(TokenSymbol.SDAI, 18) +const TBTC = new Token(TokenSymbol.TBTC, 18) +const TUSD = new Token(TokenSymbol.TUSD, 18) +const UNIV2AAVEETH = new Token(TokenSymbol.UNIV2AAVEETH, 18) +const UNIV2DAIETH = new Token(TokenSymbol.UNIV2DAIETH, 18) +const UNIV2DAIUSDC = new Token(TokenSymbol.UNIV2DAIUSDC, 18) +const UNIV2DAIUSDT = new Token(TokenSymbol.UNIV2DAIUSDT, 18) +const UNIV2ETHUSDT = new Token(TokenSymbol.UNIV2ETHUSDT, 18) +const UNIV2LINKETH = new Token(TokenSymbol.UNIV2LINKETH, 18) +const UNIV2UNIETH = new Token(TokenSymbol.UNIV2UNIETH, 18) +const UNIV2USDCETH = new Token(TokenSymbol.UNIV2USDCETH, 18) +const UNIV2WBTCDAI = new Token(TokenSymbol.UNIV2WBTCDAI, 18) +const UNIV2WBTCETH = new Token(TokenSymbol.UNIV2WBTCETH, 18) +const USDT = new Token(TokenSymbol.USDT, 6) +const WLD = new Token(TokenSymbol.WLD, 8) +const YIELDBTC = new Token(TokenSymbol.YIELDBTC, 8) +const YIELDETH = new Token(TokenSymbol.YIELDETH, 18) +const YFI = new Token(TokenSymbol.YFI, 18) +const ZRX = new Token(TokenSymbol.ZRX, 18) + +export type TokensByTokenSymbol = { + [key in TokenSymbol]: Token; +}; + +/** + * A dictionary mapping each token symbol to its corresponding initialised Token instance. + * This allows for easy lookup and provides a unified way to access token-specific details + * throughout the application. + */ +export const tokensByTokenSymbol: TokensByTokenSymbol = { + ETH, + WETH, + STETH, + WSTETH, + WBTC, + USDC, + DAI, + CBETH, + RETH, + AAVE, + LINK, + UNI, + SUSHI, + CRV, + SNX, + ADAI, + BAL, + BAT, + COMP, + CRVV1ETHSTETH, + FRAX, + GHO, + GNO, + GUNIV3DAIUSDC1, + GUNIV3DAIUSDC2, + GUSD, + KNC, + LDO, + LRC, + LUSD, + MANA, + MATIC, + PAX, + PAXUSD, + RENBTC, + RWA001, + RWA002, + RWA003, + RWA004, + RWA005, + RWA006, + SDAI, + TBTC, + TUSD, + UNIV2AAVEETH, + UNIV2DAIETH, + UNIV2DAIUSDC, + UNIV2DAIUSDT, + UNIV2ETHUSDT, + UNIV2LINKETH, + UNIV2UNIETH, + UNIV2USDCETH, + UNIV2WBTCDAI, + UNIV2WBTCETH, + USDT, + WLD, + YIELDBTC, + YIELDETH, + YFI, + ZRX +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 35883c8..f96ab62 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,7 +9,8 @@ "types": ["bun-types"], "paths": { "🛠️": ["./helpers/index.ts"], - "⌨️": ["./types/index.ts"] + "⌨️": ["./types/index.ts"], + "🤝": ["./shared/index.ts"], } }, "include": ["**/*.ts"]