From 57e1c01fc536b259ee32db808f0fcb108530e4b7 Mon Sep 17 00:00:00 2001 From: D3Portillo Date: Tue, 14 Feb 2023 14:57:04 +0100 Subject: [PATCH 01/17] CHORES: add skeleton VCI draft pr --- packages/vci/.eslintrc.json | 3 + packages/vci/.gitignore | 36 + packages/vci/README.md | 38 + packages/vci/components/AssetSelector.tsx | 36 + packages/vci/components/Dashboard.tsx | 18 + packages/vci/components/ProtocolSelector.tsx | 36 + packages/vci/components/Selector.tsx | 43 + packages/vci/components/content/Fieldset.tsx | 10 + packages/vci/components/content/Input.tsx | 8 + packages/vci/components/content/Section.tsx | 10 + .../components/sections/AssetSelection.tsx | 15 + .../components/sections/FeeConfiguration.tsx | 79 + .../components/sections/ProtocolSelection.tsx | 15 + packages/vci/lib/constants/protocolList.json | 26 + packages/vci/lib/constants/tokenList.json | 3309 +++++++++++++++++ packages/vci/lib/inputs.ts | 74 + packages/vci/lib/jotai.ts | 17 + packages/vci/lib/prototols.ts | 12 + packages/vci/lib/tokens.ts | 14 + packages/vci/next.config.js | 9 + packages/vci/package.json | 21 + packages/vci/pages/_app.tsx | 12 + packages/vci/pages/_document.tsx | 13 + packages/vci/pages/api/hello.ts | 13 + packages/vci/pages/index.tsx | 18 + packages/vci/postcss.config.js | 6 + packages/vci/public/favicon.ico | Bin 0 -> 39535 bytes packages/vci/styles/globals.css | 3 + packages/vci/tailwind.config.js | 8 + packages/vci/tsconfig.json | 25 + 30 files changed, 3927 insertions(+) create mode 100644 packages/vci/.eslintrc.json create mode 100644 packages/vci/.gitignore create mode 100644 packages/vci/README.md create mode 100644 packages/vci/components/AssetSelector.tsx create mode 100644 packages/vci/components/Dashboard.tsx create mode 100644 packages/vci/components/ProtocolSelector.tsx create mode 100644 packages/vci/components/Selector.tsx create mode 100644 packages/vci/components/content/Fieldset.tsx create mode 100644 packages/vci/components/content/Input.tsx create mode 100644 packages/vci/components/content/Section.tsx create mode 100644 packages/vci/components/sections/AssetSelection.tsx create mode 100644 packages/vci/components/sections/FeeConfiguration.tsx create mode 100644 packages/vci/components/sections/ProtocolSelection.tsx create mode 100644 packages/vci/lib/constants/protocolList.json create mode 100644 packages/vci/lib/constants/tokenList.json create mode 100644 packages/vci/lib/inputs.ts create mode 100644 packages/vci/lib/jotai.ts create mode 100644 packages/vci/lib/prototols.ts create mode 100644 packages/vci/lib/tokens.ts create mode 100644 packages/vci/next.config.js create mode 100644 packages/vci/package.json create mode 100644 packages/vci/pages/_app.tsx create mode 100644 packages/vci/pages/_document.tsx create mode 100644 packages/vci/pages/api/hello.ts create mode 100644 packages/vci/pages/index.tsx create mode 100644 packages/vci/postcss.config.js create mode 100644 packages/vci/public/favicon.ico create mode 100644 packages/vci/styles/globals.css create mode 100644 packages/vci/tailwind.config.js create mode 100644 packages/vci/tsconfig.json diff --git a/packages/vci/.eslintrc.json b/packages/vci/.eslintrc.json new file mode 100644 index 00000000..bffb357a --- /dev/null +++ b/packages/vci/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/packages/vci/.gitignore b/packages/vci/.gitignore new file mode 100644 index 00000000..c87c9b39 --- /dev/null +++ b/packages/vci/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/packages/vci/README.md b/packages/vci/README.md new file mode 100644 index 00000000..965a1228 --- /dev/null +++ b/packages/vci/README.md @@ -0,0 +1,38 @@ +This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file. + +[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`. + +The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. + +This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. diff --git a/packages/vci/components/AssetSelector.tsx b/packages/vci/components/AssetSelector.tsx new file mode 100644 index 00000000..94d65eb1 --- /dev/null +++ b/packages/vci/components/AssetSelector.tsx @@ -0,0 +1,36 @@ +import type { Token } from "@/lib/tokens"; +import { Fragment } from "react"; +import Image from "next/image"; +import { useTokenList } from "@/lib/tokens"; +import Selector, { Option } from "./Selector"; + +function AssetSelector({ selected, onSelect }: { selected?: Token; onSelect: (value: any) => void }) { + const tokens = useTokenList(); + return ( + ( + + {selected?.logoURI && ( +
+ logo +
+ )} + {selected?.name || "Click to select"} +
+ )} + > + {tokens.map((token) => ( + + ))} +
+ ); +} + +export default AssetSelector; diff --git a/packages/vci/components/Dashboard.tsx b/packages/vci/components/Dashboard.tsx new file mode 100644 index 00000000..73ccd898 --- /dev/null +++ b/packages/vci/components/Dashboard.tsx @@ -0,0 +1,18 @@ +import AssetSelection from "./sections/AssetSelection"; +import FeeConfiguration from "./sections/FeeConfiguration"; +import ProtocolSelection from "./sections/ProtocolSelection"; + +function Dashboard() { + return ( +
+

VCI - Dashboard

+
e.preventDefault()}> + + + + +
+ ); +} + +export default Dashboard; diff --git a/packages/vci/components/ProtocolSelector.tsx b/packages/vci/components/ProtocolSelector.tsx new file mode 100644 index 00000000..b6fc66a8 --- /dev/null +++ b/packages/vci/components/ProtocolSelector.tsx @@ -0,0 +1,36 @@ +import type { Protocol } from "@/lib/prototols"; +import { Fragment } from "react"; +import Image from "next/image"; +import { useProtocolList } from "@/lib/prototols"; +import Selector, { Option } from "./Selector"; + +function ProtocolSelector({ selected, onSelect }: { selected?: Protocol; onSelect: (value: any) => void }) { + const protocols = useProtocolList(); + return ( + ( + + {selected?.logoURI && ( +
+ logo +
+ )} + {selected?.name || "Click to select"} +
+ )} + > + {protocols.map((protocol) => ( + + ))} +
+ ); +} + +export default ProtocolSelector; diff --git a/packages/vci/components/Selector.tsx b/packages/vci/components/Selector.tsx new file mode 100644 index 00000000..185bba74 --- /dev/null +++ b/packages/vci/components/Selector.tsx @@ -0,0 +1,43 @@ +import { Fragment } from "react"; +import { Listbox } from "@headlessui/react"; + +function Selector({ + selected, + onSelect, + children, + actionContent, +}: { + selected?: any; + onSelect: (value: any) => void; + children: any; + actionContent: (selected: any) => JSX.Element; +}) { + return ( + + {actionContent(selected)} + + {children} + + + ); +} + +export function Option({ value, children }: { value: any; children: any }) { + return ( + + {({ active }) => { + return ( + + ); + }} + + ); +} + +export default Selector; diff --git a/packages/vci/components/content/Fieldset.tsx b/packages/vci/components/content/Fieldset.tsx new file mode 100644 index 00000000..f634950d --- /dev/null +++ b/packages/vci/components/content/Fieldset.tsx @@ -0,0 +1,10 @@ +function Fieldset({ children, label: labelContent, className }: { children: any; label: string; className?: string }) { + return ( +
+ + {children} +
+ ); +} + +export default Fieldset; diff --git a/packages/vci/components/content/Input.tsx b/packages/vci/components/content/Input.tsx new file mode 100644 index 00000000..3451039e --- /dev/null +++ b/packages/vci/components/content/Input.tsx @@ -0,0 +1,8 @@ +import type { HTMLProps } from "react"; + +export type InputProps = HTMLProps; +function Input({ className, ...props }: InputProps) { + return ; +} + +export default Input; diff --git a/packages/vci/components/content/Section.tsx b/packages/vci/components/content/Section.tsx new file mode 100644 index 00000000..635c4992 --- /dev/null +++ b/packages/vci/components/content/Section.tsx @@ -0,0 +1,10 @@ +function Section({ children, title, className }: { children: any; className?: string; title: string }) { + return ( +
+

{title}

+ {children} +
+ ); +} + +export default Section; diff --git a/packages/vci/components/sections/AssetSelection.tsx b/packages/vci/components/sections/AssetSelection.tsx new file mode 100644 index 00000000..de9d2180 --- /dev/null +++ b/packages/vci/components/sections/AssetSelection.tsx @@ -0,0 +1,15 @@ +import type { Token } from "@/lib/tokens"; +import { usePersistentAtom } from "@/lib/jotai"; +import AssetSelector from "@/components/AssetSelector"; +import Section from "@/components/content/Section"; + +function AssetSelection() { + const [asset, setAsset] = usePersistentAtom("select.asset"); + return ( +
+ +
+ ); +} + +export default AssetSelection; diff --git a/packages/vci/components/sections/FeeConfiguration.tsx b/packages/vci/components/sections/FeeConfiguration.tsx new file mode 100644 index 00000000..ceb2d249 --- /dev/null +++ b/packages/vci/components/sections/FeeConfiguration.tsx @@ -0,0 +1,79 @@ +import type { FormattedInput } from "@/lib/inputs"; +import { isAddress } from "ethers"; +import { useBigNumberFormattedInput, useFormattedInputHandler } from "@/lib/inputs"; +import Section from "@/components/content/Section"; +import Fieldset from "@/components/content/Fieldset"; +import Input from "@/components/content/Input"; + +function FeeConfiguration() { + const depositFee = useAddressNumberHandlers("depositFee"); + const withdrawalFee = useAddressNumberHandlers("withdrawalFee"); + const performanceFee = useAddressNumberHandlers("performanceFee"); + const managementFee = useAddressNumberHandlers("managementFee"); + + const fees: Array = [ + { + label: "1. Deposit fee", + ...depositFee, + }, + { + label: "2. Withdrawal fee", + ...withdrawalFee, + }, + { + label: "3. Performance fee", + ...performanceFee, + }, + { + label: "4. Management fee", + ...managementFee, + }, + ]; + + return ( +
+ {fees.map((fee) => { + return ( +
+
+ +
+
+ +
+
+ ); + })} +
+ ); +} + +type StatefulInput = { + label: string; + numberHandler: FormattedInput; + addressHandler: FormattedInput; +}; + +function useAddressNumberHandlers(stateScopeOrId: string) { + const numberHandler = useBigNumberFormattedInput(undefined, { + isPersistent: true, + stateScopeOrId: `fee.ih.${stateScopeOrId}-number`, + }); + + const addressHandler = useFormattedInputHandler(undefined, { + formatter: (t) => (isAddress(t) ? t : ""), + isPersistent: true, + stateScopeOrId: `fee.ih.${stateScopeOrId}-address`, + }); + + return { + numberHandler, + addressHandler, + }; +} + +export default FeeConfiguration; diff --git a/packages/vci/components/sections/ProtocolSelection.tsx b/packages/vci/components/sections/ProtocolSelection.tsx new file mode 100644 index 00000000..6f681c29 --- /dev/null +++ b/packages/vci/components/sections/ProtocolSelection.tsx @@ -0,0 +1,15 @@ +import type { Protocol } from "@/lib/prototols"; +import { usePersistentAtom } from "@/lib/jotai"; +import Section from "@/components/content/Section"; +import ProtocolSelector from "@/components/ProtocolSelector"; + +function ProtocolSelection() { + const [asset, setAsset] = usePersistentAtom("select.protocol"); + return ( +
+ +
+ ); +} + +export default ProtocolSelection; diff --git a/packages/vci/lib/constants/protocolList.json b/packages/vci/lib/constants/protocolList.json new file mode 100644 index 00000000..8d3d6b00 --- /dev/null +++ b/packages/vci/lib/constants/protocolList.json @@ -0,0 +1,26 @@ +[ + { + "chainId": 1, + "address": "0x69692D3345010a207b759a7D1af6fc7F38b35c5E", + "name": "AAVE", + "logoURI": "https://cryptologos.cc/logos/aave-aave-logo.png?v=024" + }, + { + "chainId": 1, + "address": "0x69692D3345010a207b759a7D1af6fc7F38b35c5E", + "name": "Beefy", + "logoURI": "https://cryptologos.cc/logos/beefy-finance-bifi-logo.png?v=024" + }, + { + "chainId": 1, + "address": "0x69692D3345010a207b759a7D1af6fc7F38b35c5E", + "name": "Yearn", + "logoURI": "https://cryptologos.cc/logos/yearn-finance-yfi-logo.png?v=024" + }, + { + "chainId": 1, + "address": "0x69692D3345010a207b759a7D1af6fc7F38b35c5E", + "name": "Balancer", + "logoURI": "https://cryptologos.cc/logos/balancer-bal-logo.png?v=024" + } +] diff --git a/packages/vci/lib/constants/tokenList.json b/packages/vci/lib/constants/tokenList.json new file mode 100644 index 00000000..51d0944c --- /dev/null +++ b/packages/vci/lib/constants/tokenList.json @@ -0,0 +1,3309 @@ +{ + "name": "Furucombo", + "logoURI": "https://cdn.furucombo.app/assets/img/logo/logo-rounded-square.svg", + "timestamp": "2021-10-22T06:22:04.000+00:00", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "keywords": ["furucombo", "interface", "aggregator", "transaction batching", "strategy", "defi legos"], + "tokens": [ + { + "chainId": 1, + "address": "0x111111111117dC0aa78b770fA6A738034120C302", + "name": "1INCH Token", + "symbol": "1INCH", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/1INCH.svg" + }, + { + "chainId": 1, + "address": "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490", + "name": "Curve.fi DAI/USDC/USDT", + "symbol": "3Crv", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/3Crv.png" + }, + { + "chainId": 1, + "address": "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", + "name": "Aave Token", + "symbol": "AAVE", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/AAVE.svg" + }, + { + "chainId": 1, + "address": "0xADE00C28244d5CE17D72E40330B1c318cD12B7c3", + "name": "AdEx Network", + "symbol": "ADX", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ADX.png" + }, + { + "chainId": 1, + "address": "0x32353A6C91143bfd6C7d363B546e62a9A2489A20", + "name": "Adventure Gold", + "symbol": "AGLD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/AGLD.png" + }, + { + "chainId": 1, + "address": "0x8Ab7404063Ec4DBcfd4598215992DC3F8EC853d7", + "name": "Akropolis", + "symbol": "AKRO", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/AKRO.png" + }, + { + "chainId": 1, + "address": "0x00a8b738E453fFd858a7edf03bcCfe20412f0Eb0", + "name": "AllianceBlock Token", + "symbol": "ALBT", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ALBT.png" + }, + { + "chainId": 1, + "address": "0xdBdb4d16EdA451D0503b854CF79D55697F90c8DF", + "name": "Alchemix", + "symbol": "ALCX", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ALCX.png" + }, + { + "chainId": 1, + "address": "0x27702a26126e0B3702af63Ee09aC4d1A084EF628", + "name": "aleph.im v2", + "symbol": "ALEPH", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ALEPH.png" + }, + { + "chainId": 1, + "address": "0xa1faa113cbE53436Df28FF0aEe54275c13B40975", + "name": "AlphaToken", + "symbol": "ALPHA", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ALPHA.svg" + }, + { + "chainId": 1, + "address": "0xD46bA6D942050d489DBd938a2C909A5d5039A161", + "name": "Ampleforth", + "symbol": "AMPL", + "decimals": 9, + "logoURI": "https://cdn.furucombo.app/assets/img/token/AMPL.svg" + }, + { + "chainId": 1, + "address": "0xcD62b1C403fa761BAadFC74C525ce2B51780b184", + "name": "Aragon Network Juror", + "symbol": "ANJ", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ANJ.png" + }, + { + "chainId": 1, + "address": "0xa117000000f279D81A1D3cc75430fAA017FA5A2e", + "name": "Aragon Network Token", + "symbol": "ANT", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ANT.svg" + }, + { + "chainId": 1, + "address": "0xBB0E17EF65F82Ab018d8EDd776e8DD940327B28b", + "name": "Axie Infinity Shard", + "symbol": "AXS", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/AXS.png" + }, + { + "chainId": 1, + "address": "0x3449FC1Cd036255BA1EB19d65fF4BA2b8903A69a", + "name": "Basis Cash: BAC Token", + "symbol": "BAC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/BAC.svg" + }, + { + "chainId": 1, + "address": "0x3472A5A71965499acd81997a54BBA8D852C6E53d", + "name": "Badger", + "symbol": "BADGER", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/BADGER.png" + }, + { + "chainId": 1, + "address": "0xba100000625a3754423978a60c9317c58a424e3D", + "name": "Balancer", + "symbol": "BAL", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/BAL.png" + }, + { + "chainId": 1, + "address": "0xBA11D00c5f74255f56a5E366F4F77f5A186d7f55", + "name": "Band Protocol", + "symbol": "BAND", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/BAND.png" + }, + { + "chainId": 1, + "address": "0xa7ED29B253D8B4E3109ce07c80fc570f81B63696", + "name": "Basis Cash: BAS Token", + "symbol": "BAS", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/BAS.svg" + }, + { + "chainId": 1, + "address": "0x68A118Ef45063051Eac49c7e647CE5Ace48a68a5", + "name": "BASED", + "symbol": "BASED", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/BASED.png" + }, + { + "chainId": 1, + "address": "0x0D8775F648430679A709E98d2b0Cb6250d2887EF", + "name": "Basic Attention Token", + "symbol": "BAT", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/BAT.png" + }, + { + "chainId": 1, + "address": "0x9BE89D2a4cd102D8Fecc6BF9dA793be995C22541", + "name": "Binance Wrapped BTC", + "symbol": "BBTC", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/BBTC.png" + }, + { + "chainId": 1, + "address": "0x35101c731b1548B5e48bb23F99eDBc2f5c341935", + "name": "BlackHoleSwap-Compound DAI/USDC v1", + "symbol": "BHSc", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/BHSc.png" + }, + { + "chainId": 1, + "address": "0x25e1474170c4c0aA64fa98123bdc8dB49D7802fa", + "name": "Bidao Chain", + "symbol": "BID", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/BID.png" + }, + { + "chainId": 1, + "address": "0x1A4b46696b2bB4794Eb3D4c26f1c55F9170fa4C5", + "name": "BitDAO", + "symbol": "BIT", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/BIT.png" + }, + { + "chainId": 1, + "address": "0x695106Ad73f506f9D0A9650a78019A93149AE07C", + "name": "BNS Token", + "symbol": "BNS", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/BNS.png" + }, + { + "chainId": 1, + "address": "0x668DbF100635f593A3847c0bDaF21f0a09380188", + "name": "bns.finance", + "symbol": "BNSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/BNSD.png" + }, + { + "chainId": 1, + "address": "0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C", + "name": "Bancor", + "symbol": "BNT", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/BNT.svg" + }, + { + "chainId": 1, + "address": "0x0391D2021f89DC339F60Fff84546EA23E337750f", + "name": "BarnBridge Governance Token", + "symbol": "BOND", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/BOND.png" + }, + { + "chainId": 1, + "address": "0x0B498ff89709d3838a063f1dFA463091F9801c2b", + "name": "BTC 2x Flexible Leverage Index", + "symbol": "BTC2x-FLI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/BTC2x-FLI.png" + }, + { + "chainId": 1, + "address": "0x4Fabb145d64652a948d72533023f6E7A623C7C53", + "name": "Binance USD", + "symbol": "BUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/BUSD.png" + }, + { + "chainId": 1, + "address": "0x4807862AA8b2bF68830e4C8dc86D0e9A998e085a", + "name": "Curve.fi Factory USD Metapool: Binance USD", + "symbol": "BUSD3CRV-f", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/BUSD3CRV-f.png" + }, + { + "chainId": 1, + "address": "0x56d811088235F11C8920698a204A5010a788f4b3", + "name": "bZx Protocol Token", + "symbol": "BZRX", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/BZRX.png" + }, + { + "chainId": 1, + "address": "0xaaAEBE6Fe48E54f431b0C390CfaF0b017d09D42d", + "name": "Celsius", + "symbol": "CEL", + "decimals": 4, + "logoURI": "https://cdn.furucombo.app/assets/img/token/CEL.png" + }, + { + "chainId": 1, + "address": "0xF5238462E7235c7B62811567E63Dd17d12C2EAA0", + "name": "CACHE Gold", + "symbol": "CGT", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/CGT.png" + }, + { + "chainId": 1, + "address": "0x69692D3345010a207b759a7D1af6fc7F38b35c5E", + "name": "Chads.vc", + "symbol": "CHADS", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/CHADS.png" + }, + { + "chainId": 1, + "address": "0x06AF07097C9Eeb7fD685c692751D5C66dB49c215", + "name": "Chai", + "symbol": "CHAI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/CHAI.png" + }, + { + "chainId": 1, + "address": "0xC4C2614E694cF534D407Ee49F8E44D125E4681c4", + "name": "Chain Games", + "symbol": "CHAIN", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/CHAIN.png" + }, + { + "chainId": 1, + "address": "0x0000000000004946c0e9F43F4Dee607b0eF1fA1c", + "name": "Chi Gastoken by 1inch", + "symbol": "CHI", + "decimals": 0, + "logoURI": "https://cdn.furucombo.app/assets/img/token/CHI.png" + }, + { + "chainId": 1, + "address": "0xfFffFffF2ba8F66D4e51811C5190992176930278", + "name": "Furucombo", + "symbol": "COMBO", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/COMBO.svg" + }, + { + "chainId": 1, + "address": "0xc00e94Cb662C3520282E6f5717214004A7f26888", + "name": "Compound", + "symbol": "COMP", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/COMP.svg" + }, + { + "chainId": 1, + "address": "0x62359Ed7505Efc61FF1D56fEF82158CcaffA23D7", + "name": "cVault Finance", + "symbol": "CORE", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/CORE.png" + }, + { + "chainId": 1, + "address": "0x2ba592F78dB6436527729929AAf6c908497cB200", + "name": "Cream", + "symbol": "CREAM", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/CREAM.png" + }, + { + "chainId": 1, + "address": "0xD533a949740bb3306d119CC777fa900bA034cd52", + "name": "Curve DAO Token", + "symbol": "CRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/CRV.png" + }, + { + "chainId": 1, + "address": "0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B", + "name": "Convex Token", + "symbol": "CVX", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/CVX.png" + }, + { + "chainId": 1, + "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "name": "Dai Stablecoin", + "symbol": "DAI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/DAI.png" + }, + { + "chainId": 1, + "address": "0x78F225869c08d478c34e5f645d07A87d3fe8eb78", + "name": "PieDAO DEFI Large Cap", + "symbol": "DEFI+L", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/DEFI+L.svg" + }, + { + "chainId": 1, + "address": "0xaD6A626aE2B43DCb1B39430Ce496d2FA0365BA9C", + "name": "PieDAO DEFI Smal Cap", + "symbol": "DEFI+S", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/DEFI+S.svg" + }, + { + "chainId": 1, + "address": "0xfa6de2697D59E88Ed7Fc4dFE5A33daC43565ea41", + "name": "DEFI Top 5 Tokens Index", + "symbol": "DEFI5", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/DEFI5.png" + }, + { + "chainId": 1, + "address": "0x88EF27e69108B2633F8E1C184CC37940A075cC02", + "name": "Dego.finance", + "symbol": "DEGO", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/DEGO.png" + }, + { + "chainId": 1, + "address": "0x431ad2ff6a9C365805eBaD47Ee021148d6f7DBe0", + "name": "dForce", + "symbol": "DF", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/DF.png" + }, + { + "chainId": 1, + "address": "0xca1207647Ff814039530D7d35df0e1Dd2e91Fa84", + "name": "dHedge DAO Token", + "symbol": "DHT", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/DHT.png" + }, + { + "chainId": 1, + "address": "0x84cA8bc7997272c7CfB4D0Cd3D55cd942B3c9419", + "name": "DIA Token", + "symbol": "DIA", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/DIA.png" + }, + { + "chainId": 1, + "address": "0xEd91879919B71bB6905f23af0A68d231EcF87b14", + "name": "DMM Governance", + "symbol": "DMG", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/DMG.png" + }, + { + "chainId": 1, + "address": "0x43Dfc4159D86F3A37A5A4B3D4580b888ad7d4DDd", + "name": "DODO bird", + "symbol": "DODO", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/DODO.png" + }, + { + "chainId": 1, + "address": "0xad32A8e6220741182940c5aBF610bDE99E737b2D", + "name": "PieDAO DOUGH v2", + "symbol": "DOUGH", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/DOUGH.png" + }, + { + "chainId": 1, + "address": "0x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b", + "name": "DefiPulse Index", + "symbol": "DPI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/DPI.png" + }, + { + "chainId": 1, + "address": "0x5BC25f649fc4e26069dDF4cF4010F9f706c23831", + "name": "DefiDollar", + "symbol": "DUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/DUSD.png" + }, + { + "chainId": 1, + "address": "0x92D6C1e31e14520e676a687F0a93788B716BEff5", + "name": "dYdX", + "symbol": "DYDX", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/DYDX.png" + }, + { + "chainId": 1, + "address": "0x1559FA1b8F28238FD5D76D9f434ad86FD20D1559", + "name": "Eden", + "symbol": "EDEN", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/EDEN.png" + }, + { + "chainId": 1, + "address": "0xbf2179859fc6D5BEE9Bf9158632Dc51678a4100e", + "name": "aelf", + "symbol": "ELF", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ELF.png" + }, + { + "chainId": 1, + "address": "0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c", + "name": "Enjin", + "symbol": "ENJ", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ENJ.svg" + }, + { + "chainId": 1, + "address": "0x36F3FD68E7325a35EB768F1AedaAe9EA0689d723", + "name": "Empty Set Dollar", + "symbol": "ESD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ESD.png" + }, + { + "chainId": 1, + "address": "0xAa6E8127831c9DE45ae56bB1b0d4D4Da6e5665BD", + "name": "ETH 2x Flexible Leverage Index", + "symbol": "ETH2x-FLI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ETH2x-FLI.png" + }, + { + "chainId": 1, + "address": "0xdB25f211AB05b1c97D595516F45794528a807ad8", + "name": "STASIS EURS Token", + "symbol": "EURS", + "decimals": 2, + "logoURI": "https://cdn.furucombo.app/assets/img/token/EURS.svg" + }, + { + "chainId": 1, + "address": "0xC581b735A1688071A1746c968e0798D642EDE491", + "name": "Euro Tether", + "symbol": "EURT", + "decimals": 6, + "logoURI": "https://cdn.furucombo.app/assets/img/token/EURT.png" + }, + { + "chainId": 1, + "address": "0xFD5dB7463a3aB53fD211b4af195c5BCCC1A03890", + "name": "Curve.fi Factory Plain Pool: Euro Tether", + "symbol": "EURT-f", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/EURT-f.png" + }, + { + "chainId": 1, + "address": "0xa0246c9032bC3A600820415aE600c6388619A14D", + "name": "FARM Reward Token", + "symbol": "FARM", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/FARM.png" + }, + { + "chainId": 1, + "address": "0x956F47F50A910163D8BF957Cf5846D573E7f87CA", + "name": "Fei USD", + "symbol": "FEI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/FEI.png" + }, + { + "chainId": 1, + "address": "0x4946Fcea7C692606e8908002e55A582af44AC121", + "name": "FOAM Token", + "symbol": "FOAM", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/FOAM.png" + }, + { + "chainId": 1, + "address": "0xc770EEfAd204B5180dF6a14Ee197D99d808ee52d", + "name": "FOX", + "symbol": "FOX", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/FOX.png" + }, + { + "chainId": 1, + "address": "0x853d955aCEf822Db058eb8505911ED77F175b99e", + "name": "Frax", + "symbol": "FRAX", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/FRAX.png" + }, + { + "chainId": 1, + "address": "0xd632f22692FaC7611d2AA1C0D552930D43CAEd3B", + "name": "Curve.fi Factory USD Metapool: Frax", + "symbol": "FRAX3CRV-f", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/FRAX3CRV-f.png" + }, + { + "chainId": 1, + "address": "0xf8C3527CC04340b208C854E985240c02F7B7793f", + "name": "Frontier Token", + "symbol": "FRONT", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/FRONT.png" + }, + { + "chainId": 1, + "address": "0xfffffffFf15AbF397dA76f1dcc1A1604F45126DB", + "name": "FalconSwap", + "symbol": "FSW", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/FSW.png" + }, + { + "chainId": 1, + "address": "0x970B9bB2C0444F5E81e9d0eFb84C8ccdcdcAf84d", + "name": "Fuse Toke", + "symbol": "FUSE", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/FUSE.svg" + }, + { + "chainId": 1, + "address": "0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0", + "name": "FraxShare", + "symbol": "FXS", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/FXS.png" + }, + { + "chainId": 1, + "address": "0x3F382DbD960E3a9bbCeaE22651E88158d2791550", + "name": "Aavegotchi GHST Token", + "symbol": "GHST", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/GHST.png" + }, + { + "chainId": 1, + "address": "0x6810e776880C02933D47DB1b9fc05908e5386b96", + "name": "Gnosis", + "symbol": "GNO", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/GNO.png" + }, + { + "chainId": 1, + "address": "0x09e64c2B61a5f1690Ee6fbeD9baf5D6990F8dFd0", + "name": "Growth", + "symbol": "GRO", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/GRO.png" + }, + { + "chainId": 1, + "address": "0xc944E90C64B2c07662A292be6244BDf05Cda44a7", + "name": "Graph Token", + "symbol": "GRT", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/GRT.png" + }, + { + "chainId": 1, + "address": "0x0000000000b3F879cb30FE243b4Dfee438691c04", + "name": "Gastoken.io", + "symbol": "GST2", + "decimals": 2, + "logoURI": "https://cdn.furucombo.app/assets/img/token/GST2.png" + }, + { + "chainId": 1, + "address": "0xDe30da39c46104798bB5aA3fe8B9e0e1F348163F", + "name": "Gitcoin", + "symbol": "GTC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/GTC.png" + }, + { + "chainId": 1, + "address": "0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd", + "name": "Gemini dollar", + "symbol": "GUSD", + "decimals": 2, + "logoURI": "https://cdn.furucombo.app/assets/img/token/GUSD.png" + }, + { + "chainId": 1, + "address": "0x0E29e5AbbB5FD88e28b2d355774e73BD47dE3bcd", + "name": "Hakka Finance", + "symbol": "HAKKA", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/HAKKA.png" + }, + { + "chainId": 1, + "address": "0x0316EB71485b0Ab14103307bf65a021042c6d380", + "name": "Huobi BTC", + "symbol": "HBTC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/HBTC.png" + }, + { + "chainId": 1, + "address": "0x584bC13c7D411c00c01A62e8019472dE68768430", + "name": "Hegic", + "symbol": "HEGIC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/HEGIC.png" + }, + { + "chainId": 1, + "address": "0xDea67845A51E24461D5fED8084E69B426AF3D5Db", + "name": "HodlTree", + "symbol": "HTRE", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/HTRE.png" + }, + { + "chainId": 1, + "address": "0xdF574c24545E5FfEcb9a659c229253D4111d87e1", + "name": "HUSD", + "symbol": "HUSD", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/HUSD.svg" + }, + { + "chainId": 1, + "address": "0x767FE9EDC9E0dF98E07454847909b5E959D7ca0E", + "name": "Illuvium", + "symbol": "ILV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ILV.png" + }, + { + "chainId": 1, + "address": "0x0954906da0Bf32d5479e25f46056d22f08464cab", + "name": "Index", + "symbol": "INDEX", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/INDEX.png" + }, + { + "chainId": 1, + "address": "0x6f40d4A6237C257fff2dB00FA0510DeEECd303eb", + "name": "Instadapp", + "symbol": "INST", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/INST.png" + }, + { + "chainId": 1, + "address": "0xD9Ec3ff1f8be459Bb9369b4E79e9Ebcf7141C093", + "name": "KardiaChain Token", + "symbol": "KAI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/KAI.png" + }, + { + "chainId": 1, + "address": "0x85Eee30c52B0b379b046Fb0F85F4f3Dc3009aFEC", + "name": "Keep.network", + "symbol": "KEEP", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/KEEP.png" + }, + { + "chainId": 1, + "address": "0x4Cd988AfBad37289BAAf53C13e98E2BD46aAEa8c", + "name": "KEY", + "symbol": "KEY", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/KEY.png" + }, + { + "chainId": 1, + "address": "0x177BA0cac51bFC7eA24BAd39d81dcEFd59d74fAa", + "name": "Kitten Finance", + "symbol": "KIF", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/KIF.png" + }, + { + "chainId": 1, + "address": "0xdd974D5C2e2928deA5F71b9825b8b646686BD200", + "name": "Kyber Network Crystal Legacy", + "symbol": "KNCL", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/KNCL.png" + }, + { + "chainId": 1, + "address": "0x1cEB5cB57C4D4E2b2433641b95Dd330A33185A44", + "name": "Keep3rV1", + "symbol": "KP3R", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/KP3R.png" + }, + { + "chainId": 1, + "address": "0x80fB784B7eD66730e8b1DBd9820aFD29931aab03", + "name": "Aave", + "symbol": "LEND", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/LEND.png" + }, + { + "chainId": 1, + "address": "0x0417912b3a7AF768051765040A55BB0925D4DDcF", + "name": "Liquidity Dividends Protocol", + "symbol": "LID", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/LID.png" + }, + { + "chainId": 1, + "address": "0x514910771AF9Ca656af840dff83E8264EcF986CA", + "name": "Chainlink", + "symbol": "LINK", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/LINK.png" + }, + { + "chainId": 1, + "address": "0x0E2EC54fC0B509F445631Bf4b91AB8168230C752", + "name": "LINKUSD", + "symbol": "LINKUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/LINKUSD.png" + }, + { + "chainId": 1, + "address": "0x0000000000095413afC295d19EDeb1Ad7B71c952", + "name": "LON Token", + "symbol": "LON", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/LON.png" + }, + { + "chainId": 1, + "address": "0xBBbbCA6A901c926F240b89EacB641d8Aec7AEafD", + "name": "Loopring", + "symbol": "LRC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/LRC.svg" + }, + { + "chainId": 1, + "address": "0xB1f66997A5760428D3a87D68b90BfE0aE64121cC", + "name": "Lua Token", + "symbol": "LUA", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/LUA.png" + }, + { + "chainId": 1, + "address": "0xd2877702675e6cEb975b4A1dFf9fb7BAF4C91ea9", + "name": "Wrapped LUNA Token", + "symbol": "LUNA", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/LUNA.png" + }, + { + "chainId": 1, + "address": "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", + "name": "LUSD Stablecoin", + "symbol": "LUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/LUSD.png" + }, + { + "chainId": 1, + "address": "0xEd279fDD11cA84bEef15AF5D39BB4d4bEE23F0cA", + "name": "Curve.fi Factory USD Metapool: Liquity", + "symbol": "LUSD3CRV-f", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/LUSD3CRV-f.png" + }, + { + "chainId": 1, + "address": "0x6D65b498cb23deAba52db31c93Da9BFFb340FB8F", + "name": "Curve.fi LinkUSD/DAI/USDC/USDT", + "symbol": "LinkUSD3CRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/LinkUSD3CRV.png" + }, + { + "chainId": 1, + "address": "0x0F5D2fB29fb7d3CFeE444a200298f468908cC942", + "name": "Decentraland", + "symbol": "MANA", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/MANA.png" + }, + { + "chainId": 1, + "address": "0x67c597624B17b16fb77959217360B7cD18284253", + "name": "Benchmark", + "symbol": "MARK", + "decimals": 9, + "logoURI": "https://cdn.furucombo.app/assets/img/token/MARK.png" + }, + { + "chainId": 1, + "address": "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0", + "name": "Matic Token", + "symbol": "MATIC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/MATIC.png" + }, + { + "chainId": 1, + "address": "0x4e352cF164E64ADCBad318C3a1e222E9EBa4Ce42", + "name": "MCDEX Token", + "symbol": "MCB", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/MCB.png" + }, + { + "chainId": 1, + "address": "0xd15eCDCF5Ea68e3995b2D0527A0aE0a3258302F8", + "name": "MachiX Token", + "symbol": "MCX", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/MCX.png" + }, + { + "chainId": 1, + "address": "0xD5525D397898e5502075Ea5E830d8914f6F0affe", + "name": "MEME", + "symbol": "MEME", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/MEME.png" + }, + { + "chainId": 1, + "address": "0xa3d58c4E56fedCae3a7c43A725aeE9A71F0ece4e", + "name": "Metronome", + "symbol": "MET", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/MET.svg" + }, + { + "chainId": 1, + "address": "0x99D8a9C45b2ecA8864373A26D1459e3Dff1e17F3", + "name": "Magic Internet Money", + "symbol": "MIM", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/MIM.png" + }, + { + "chainId": 1, + "address": "0x09a3EcAFa817268f77BE1283176B946C4ff2E608", + "name": "Wrapped MIR Token", + "symbol": "MIR", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/MIR.png" + }, + { + "chainId": 1, + "address": "0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2", + "name": "Maker", + "symbol": "MKR", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/MKR.png" + }, + { + "chainId": 1, + "address": "0xec67005c4E498Ec7f55E092bd1d35cbC47C91892", + "name": "Melon Token", + "symbol": "MLN", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/MLN.png" + }, + { + "chainId": 1, + "address": "0xa3BeD4E1c75D00fa6f4E5E6922DB7261B5E9AcD2", + "name": "Meta", + "symbol": "MTA", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/MTA.png" + }, + { + "chainId": 1, + "address": "0xCc80C051057B774cD75067Dc48f8987C4Eb97A5e", + "name": "Ethfinex Nectar Token", + "symbol": "NEC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/NEC.png" + }, + { + "chainId": 1, + "address": "0xB62132e35a6c13ee1EE0f84dC5d40bad8d815206", + "name": "Nexo", + "symbol": "NEXO", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/NEXO.png" + }, + { + "chainId": 1, + "address": "0x87d73E916D7057945c9BcD8cdd94e42A6F47f776", + "name": "NFTX", + "symbol": "NFTX", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/NFTX.png" + }, + { + "chainId": 1, + "address": "0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671", + "name": "Numeraire", + "symbol": "NMR", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/NMR.png" + }, + { + "chainId": 1, + "address": "0x967da4048cD07aB37855c090aAF366e4ce1b9F48", + "name": "Ocean Token", + "symbol": "OCEAN", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/OCEAN.png" + }, + { + "chainId": 1, + "address": "0x383518188C0C6d7730D91b2c03a03C837814a899", + "name": "Olympus", + "symbol": "OHM", + "decimals": 9, + "logoURI": "https://cdn.furucombo.app/assets/img/token/OHM.png" + }, + { + "chainId": 1, + "address": "0x0258F474786DdFd37ABCE6df6BBb1Dd5dfC4434a", + "name": "Orion Protocol", + "symbol": "ORN", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ORN.png" + }, + { + "chainId": 1, + "address": "0x2a7f709eE001069771ceB6D42e85035f7D18E736", + "name": "OWL Token", + "symbol": "OWL", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/OWL.png" + }, + { + "chainId": 1, + "address": "0x1BeEF31946fbbb40B877a72E4ae04a8D1A5Cee06", + "name": "Parachute", + "symbol": "PAR", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/PAR.png" + }, + { + "chainId": 1, + "address": "0x8E870D67F660D95d5be530380D0eC0bd388289E1", + "name": "Pax Dollar", + "symbol": "PAX", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/PAX.png" + }, + { + "chainId": 1, + "address": "0x45804880De22913dAFE09f4980848ECE6EcbAf78", + "name": "Paxos Gold", + "symbol": "PAXG", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/PAXG.png" + }, + { + "chainId": 1, + "address": "0xbC396689893D065F41bc2C6EcbeE5e0085233447", + "name": "Perpetual", + "symbol": "PERP", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/PERP.png" + }, + { + "chainId": 1, + "address": "0x429881672B9AE42b8EbA0E26cD9C73711b891Ca5", + "name": "Pickle Finance", + "symbol": "PICKLE", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/PICKLE.png" + }, + { + "chainId": 1, + "address": "0xD8912C10681D8B21Fd3742244f44658dBA12264E", + "name": "Pluton", + "symbol": "PLU", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/PLU.png" + }, + { + "chainId": 1, + "address": "0x93ED3FBe21207Ec2E8f2d3c3de6e058Cb73Bc04d", + "name": "Pinakion", + "symbol": "PNK", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/PNK.svg" + }, + { + "chainId": 1, + "address": "0x89Ab32156e46F46D02ade3FEcbe5Fc4243B9AAeD", + "name": "pNetwork Token", + "symbol": "PNT", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/PNT.png" + }, + { + "chainId": 1, + "address": "0x83e6f1E41cdd28eAcEB20Cb649155049Fac3D5Aa", + "name": "Polkastarter Token", + "symbol": "POLS", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/POLS.png" + }, + { + "chainId": 1, + "address": "0xD7B7d3C0bdA57723Fb54ab95Fd8F9EA033AF37f2", + "name": "PYLON", + "symbol": "PYLON", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/PYLON.png" + }, + { + "chainId": 1, + "address": "0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919", + "name": "Rai Reflex Index", + "symbol": "RAI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/RAI.png" + }, + { + "chainId": 1, + "address": "0xFca59Cd816aB1eaD66534D82bc21E7515cE441CF", + "name": "Rarible", + "symbol": "RARI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/RARI.png" + }, + { + "chainId": 1, + "address": "0x6123B0049F904d730dB3C36a31167D9d4121fA6B", + "name": "Ribbon Finance", + "symbol": "RBN", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/RBN.png" + }, + { + "chainId": 1, + "address": "0xF970b8E36e23F7fC3FD752EeA86f8Be8D83375A6", + "name": "Ripio Credit Network", + "symbol": "RCN", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/RCN.png" + }, + { + "chainId": 1, + "address": "0x408e41876cCCDC0F92210600ef50372656052a38", + "name": "Republic", + "symbol": "REN", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/REN.png" + }, + { + "chainId": 1, + "address": "0x221657776846890989a759BA2973e427DfF5C9bB", + "name": "Reputation", + "symbol": "REPv2", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/REPv2.png" + }, + { + "chainId": 1, + "address": "0x8f8221aFbB33998d8584A2B05749bA73c37a938a", + "name": "Request Network", + "symbol": "REQ", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/REQ.svg" + }, + { + "chainId": 1, + "address": "0x9469D013805bFfB7D3DEBe5E7839237e535ec483", + "name": "Darwinia Network Native Token", + "symbol": "RING", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/RING.png" + }, + { + "chainId": 1, + "address": "0x607F4C5BB672230e8672085532f7e901544a7375", + "name": "iExec RLC", + "symbol": "RLC", + "decimals": 9, + "logoURI": "https://cdn.furucombo.app/assets/img/token/RLC.svg" + }, + { + "chainId": 1, + "address": "0xf1f955016EcbCd7321c7266BccFB96c68ea5E49b", + "name": "Rally", + "symbol": "RLY", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/RLY.png" + }, + { + "chainId": 1, + "address": "0xE17f017475a709De58E976081eB916081ff4c9d5", + "name": "RMPL", + "symbol": "RMPL", + "decimals": 9, + "logoURI": "https://cdn.furucombo.app/assets/img/token/RMPL.png" + }, + { + "chainId": 1, + "address": "0xCb5f72d37685C3D5aD0bB5F982443BC8FcdF570E", + "name": "Rootkit", + "symbol": "ROOT", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ROOT.png" + }, + { + "chainId": 1, + "address": "0xB4EFd85c19999D84251304bDA99E90B92300Bd93", + "name": "Rocket Pool", + "symbol": "RPL", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/RPL.png" + }, + { + "chainId": 1, + "address": "0x8762db106B2c2A0bccB3A80d1Ed41273552616E8", + "name": "Reserve Rights", + "symbol": "RSR", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/RSR.png" + }, + { + "chainId": 1, + "address": "0x196f4727526eA7FB1e17b2071B3d8eAA38486988", + "name": "Reserve", + "symbol": "RSV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/RSV.png" + }, + { + "chainId": 1, + "address": "0x3155BA85D5F96b2d030a4966AF206230e46849cb", + "name": "THORChain ETH.RUNE", + "symbol": "RUNE", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/RUNE.png" + }, + { + "chainId": 1, + "address": "0x3845badAde8e6dFF049820680d1F14bD3903a5d0", + "name": "Sandbox Game", + "symbol": "SAND", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/SAND.png" + }, + { + "chainId": 1, + "address": "0x73968b9a57c6E53d41345FD57a6E6ae27d6CDB2F", + "name": "Stake DAO Token", + "symbol": "SDT", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/SDT.png" + }, + { + "chainId": 1, + "address": "0xb753428af26E81097e7fD17f40c88aaA3E04902c", + "name": "Spice", + "symbol": "SFI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/SFI.png" + }, + { + "chainId": 1, + "address": "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE", + "name": "SHIBA INU", + "symbol": "SHIB", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/SHIB.png" + }, + { + "chainId": 1, + "address": "0xEd0439EACf4c4965AE4613D77a5C2Efe10e5f183", + "name": "Shroom.finance", + "symbol": "SHROOM", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/SHROOM.png" + }, + { + "chainId": 1, + "address": "0xfe9A29aB92522D14Fc65880d817214261D8479AE", + "name": "Snowswap", + "symbol": "SNOW", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/SNOW.png" + }, + { + "chainId": 1, + "address": "0x744d70FDBE2Ba4CF95131626614a1763DF805B9E", + "name": "Status", + "symbol": "SNT", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/SNT.svg" + }, + { + "chainId": 1, + "address": "0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F", + "name": "Synthetix Network Token", + "symbol": "SNX", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/SNX.svg" + }, + { + "chainId": 1, + "address": "0x23B608675a2B2fB1890d3ABBd85c5775c51691d5", + "name": "Unisocks Edition 0", + "symbol": "SOCKS", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/SOCKS.png" + }, + { + "chainId": 1, + "address": "0x42d6622deCe394b54999Fbd73D108123806f6a18", + "name": "SpankChain", + "symbol": "SPANK", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/SPANK.png" + }, + { + "chainId": 1, + "address": "0x090185f2135308BaD17527004364eBcC2D37e5F6", + "name": "Spell Token", + "symbol": "SPELL", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/SPELL.png" + }, + { + "chainId": 1, + "address": "0x476c5E26a75bd202a9683ffD34359C0CC15be0fF", + "name": "Serum", + "symbol": "SRM", + "decimals": 6, + "logoURI": "https://cdn.furucombo.app/assets/img/token/SRM.png" + }, + { + "chainId": 1, + "address": "0x0Ae055097C6d159879521C384F1D2123D1f195e6", + "name": "Stake", + "symbol": "STAKE", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/STAKE.png" + }, + { + "chainId": 1, + "address": "0xB987D48Ed8f2C468D52D6405624EADBa5e76d723", + "name": "Stabilize Token", + "symbol": "STBZ", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/STBZ.png" + }, + { + "chainId": 1, + "address": "0xbE9375C6a420D2eEB258962efB95551A5b722803", + "name": "StormX", + "symbol": "STMX", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/STMX.png" + }, + { + "chainId": 1, + "address": "0x0763fdCCF1aE541A5961815C0872A8c5Bc6DE4d7", + "name": "SUKU", + "symbol": "SUKU", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/SUKU.png" + }, + { + "chainId": 1, + "address": "0xe53EC727dbDEB9E2d5456c3be40cFF031AB40A55", + "name": "SuperFarm", + "symbol": "SUPER", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/SUPER.png" + }, + { + "chainId": 1, + "address": "0x6B3595068778DD592e39A122f4f5a5cF09C90fE2", + "name": "Sushi Token", + "symbol": "SUSHI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/SUSHI.png" + }, + { + "chainId": 1, + "address": "0xCC4304A31d09258b0029eA7FE63d032f52e44EFe", + "name": "TrustSwap Token", + "symbol": "SWAP", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/SWAP.png" + }, + { + "chainId": 1, + "address": "0xBa21Ef4c9f433Ede00badEFcC2754B8E74bd538A", + "name": "Swapfolio", + "symbol": "SWFL", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/SWFL.png" + }, + { + "chainId": 1, + "address": "0xB8BAa0e4287890a5F79863aB62b7F175ceCbD433", + "name": "Swerve DAO Token", + "symbol": "SWRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/SWRV.png" + }, + { + "chainId": 1, + "address": "0x8dAEBADE922dF735c38C80C7eBD708Af50815fAa", + "name": "tBTC", + "symbol": "TBTC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/TBTC.png" + }, + { + "chainId": 1, + "address": "0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a", + "name": "Monolith", + "symbol": "TKN", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/TKN.png" + }, + { + "chainId": 1, + "address": "0x05D3606d5c81EB9b7B18530995eC9B29da05FaBa", + "name": "Tomo Chain", + "symbol": "TOMOE", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/TOMOE.png" + }, + { + "chainId": 1, + "address": "0x6F87D756DAf0503d08Eb8993686c7Fc01Dc44fB1", + "name": "UniTrade", + "symbol": "TRADE", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/TRADE.png" + }, + { + "chainId": 1, + "address": "0x88dF592F8eb5D7Bd38bFeF7dEb0fBc02cf3778a0", + "name": "Tellor Tributes", + "symbol": "TRB", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/TRB.png" + }, + { + "chainId": 1, + "address": "0xc7283b66Eb1EB5FB86327f08e1B5816b0720212B", + "name": "Tribe", + "symbol": "TRIBE", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/TRIBE.png" + }, + { + "chainId": 1, + "address": "0x4C19596f5aAfF459fA38B0f7eD92F11AE6543784", + "name": "TrustToken", + "symbol": "TRU", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/TRU.svg" + }, + { + "chainId": 1, + "address": "0x2C537E5624e4af88A7ae4060C022609376C8D0EB", + "name": "BiLira", + "symbol": "TRYB", + "decimals": 6, + "logoURI": "https://cdn.furucombo.app/assets/img/token/TRYB.png" + }, + { + "chainId": 1, + "address": "0x0000000000085d4780B73119b644AE5ecd22b376", + "name": "TrueUSD", + "symbol": "TUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/TUSD.png" + }, + { + "chainId": 1, + "address": "0xEcd5e75AFb02eFa118AF914515D6521aaBd189F1", + "name": "Curve.fi Factory USD Metapool: TrueUSD", + "symbol": "TUSD3CRV-f", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/TUSD3CRV-f.png" + }, + { + "chainId": 1, + "address": "0x8400D94A5cb0fa0D041a3788e395285d61c9ee5e", + "name": "UniBright", + "symbol": "UBT", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/UBT.png" + }, + { + "chainId": 1, + "address": "0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828", + "name": "UMA Voting Token v1", + "symbol": "UMA", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/UMA.png" + }, + { + "chainId": 1, + "address": "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984", + "name": "Uniswap Token", + "symbol": "UNI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/UNI.png" + }, + { + "chainId": 1, + "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "name": "USD Coin", + "symbol": "USDC", + "decimals": 6, + "logoURI": "https://cdn.furucombo.app/assets/img/token/USDC.png" + }, + { + "chainId": 1, + "address": "0x1c48f86ae57291F7686349F12601910BD8D470bb", + "name": "USDK", + "symbol": "USDK", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/USDK.png" + }, + { + "chainId": 1, + "address": "0x674C6Ad92Fd080e4004b2312b45f796a192D27a0", + "name": "Neutrino USD", + "symbol": "USDN", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/USDN.png" + }, + { + "chainId": 1, + "address": "0x1456688345527bE1f37E9e627DA0837D6f08C925", + "name": "USDP Stablecoin", + "symbol": "USDP", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/USDP.png" + }, + { + "chainId": 1, + "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "name": "Tether USD", + "symbol": "USDT", + "decimals": 6, + "logoURI": "https://cdn.furucombo.app/assets/img/token/USDT.png" + }, + { + "chainId": 1, + "address": "0xa47c8bf37f92aBed4A126BDA807A7b7498661acD", + "name": "Wrapped UST Token", + "symbol": "UST", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/UST.png" + }, + { + "chainId": 1, + "address": "0x49E833337ECe7aFE375e44F4E3e8481029218E5c", + "name": "Value Liquidity", + "symbol": "VALUE", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/VALUE.png" + }, + { + "chainId": 1, + "address": "0xfeF4185594457050cC9c23980d301908FE057Bb1", + "name": "VIDT Datalink", + "symbol": "VIDT", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/VIDT.png" + }, + { + "chainId": 1, + "address": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "name": "Wrapped BTC", + "symbol": "WBTC", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/WBTC.png" + }, + { + "chainId": 1, + "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "name": "Wrapped Ether", + "symbol": "WETH", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/WETH.svg" + }, + { + "chainId": 1, + "address": "0x66a0f676479Cee1d7373f3DC2e2952778BfF5bd6", + "name": "Wise Token", + "symbol": "WISE", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/WISE.png" + }, + { + "chainId": 1, + "address": "0x4691937a7508860F876c9c0a2a617E7d9E945D4B", + "name": "Wootrade Network", + "symbol": "WOO", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/WOO.png" + }, + { + "chainId": 1, + "address": "0x5BEfBB272290dD5b8521D4a938f6c4757742c430", + "name": "Xfinance", + "symbol": "XFI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/XFI.png" + }, + { + "chainId": 1, + "address": "0x0f7F961648aE6Db43C75663aC7E5414Eb79b5704", + "name": "XIO Network", + "symbol": "XIO", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/XIO.png" + }, + { + "chainId": 1, + "address": "0x40FD72257597aA14C7231A7B1aaa29Fce868F677", + "name": "Sora Token", + "symbol": "XOR", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/XOR.png" + }, + { + "chainId": 1, + "address": "0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e", + "name": "yearn.finance", + "symbol": "YFI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/YFI.png" + }, + { + "chainId": 1, + "address": "0xa1d0E215a23d7030842FC67cE582a6aFa3CCaB83", + "name": "YFII.finance", + "symbol": "YFII", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/YFII.png" + }, + { + "chainId": 1, + "address": "0x28cb7e841ee97947a86B06fA4090C8451f64c0be", + "name": "YFLink", + "symbol": "YFL", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/YFL.png" + }, + { + "chainId": 1, + "address": "0x25f8087EAD173b73D6e8B84329989A8eEA16CF73", + "name": "Yield Guild Games", + "symbol": "YGG", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/YGG.png" + }, + { + "chainId": 1, + "address": "0xE41d2489571d322189246DaFA5ebDe1F4699F498", + "name": "0x", + "symbol": "ZRX", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ZRX.png" + }, + { + "chainId": 1, + "address": "0xFd2a8fA60Abd58Efe3EeE34dd494cD491dC14900", + "name": "Curve.fi aDAI/aUSDC/aUSDT", + "symbol": "a3CRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/a3CRV.png" + }, + { + "chainId": 1, + "address": "0xFFC97d72E13E01096502Cb8Eb52dEe56f74DAD7B", + "name": "Aave interest bearing AAVE", + "symbol": "aAAVE", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aAAVE.svg" + }, + { + "chainId": 1, + "address": "0xba3D9687Cf50fE253cd2e1cFeEdE1d6787344Ed5", + "name": "Aave V1 Interest bearing AAVE", + "symbol": "aAAVEv1", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aAAVEv1.svg" + }, + { + "chainId": 1, + "address": "0x1E6bb68Acec8fefBD87D192bE09bb274170a0548", + "name": "Aave interest bearing AMPL", + "symbol": "aAMPL", + "decimals": 9, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aAMPL.png" + }, + { + "chainId": 1, + "address": "0x272F97b7a56a387aE942350bBC7Df5700f8a4576", + "name": "Aave V2 interest bearing BAL", + "symbol": "aBAL", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aBAL.svg" + }, + { + "chainId": 1, + "address": "0x05Ec93c0365baAeAbF7AefFb0972ea7ECdD39CF1", + "name": "Aave interest bearing BAT", + "symbol": "aBAT", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aBAT.svg" + }, + { + "chainId": 1, + "address": "0xE1BA0FB44CCb0D11b80F92f4f8Ed94CA3fF51D00", + "name": "Aave V1 Interest bearing BAT", + "symbol": "aBATv1", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aBATv1.svg" + }, + { + "chainId": 1, + "address": "0xA361718326c15715591c299427c62086F69923D9", + "name": "Aave interest bearing BUSD", + "symbol": "aBUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aBUSD.svg" + }, + { + "chainId": 1, + "address": "0x6Ee0f7BB50a54AB5253dA0667B0Dc2ee526C30a8", + "name": "Aave V1 Interest bearing BUSD", + "symbol": "aBUSDv1", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aBUSDv1.svg" + }, + { + "chainId": 1, + "address": "0x8dAE6Cb04688C62d939ed9B68d32Bc62e49970b1", + "name": "Aave interest bearing CRV", + "symbol": "aCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aCRV.svg" + }, + { + "chainId": 1, + "address": "0x028171bCA77440897B824Ca71D1c56caC55b68A3", + "name": "Aave interest bearing DAI", + "symbol": "aDAI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aDAI.svg" + }, + { + "chainId": 1, + "address": "0xfC1E690f61EFd961294b3e1Ce3313fBD8aa4f85d", + "name": "Aave V1 Interest bearing DAI", + "symbol": "aDAIv1", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aDAIv1.svg" + }, + { + "chainId": 1, + "address": "0xaC6Df26a590F08dcC95D5a4705ae8abbc88509Ef", + "name": "Aave interest bearing ENJ", + "symbol": "aENJ", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aENJ.svg" + }, + { + "chainId": 1, + "address": "0x712DB54daA836B53Ef1EcBb9c6ba3b9Efb073F40", + "name": "Aave V1 Interest bearing ENJ", + "symbol": "aENJv1", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aENJv1.svg" + }, + { + "chainId": 1, + "address": "0x3a3A65aAb0dd2A17E3F1947bA16138cd37d08c04", + "name": "Aave V1 Interest bearing ETH", + "symbol": "aETHv1", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aETHv1.svg" + }, + { + "chainId": 1, + "address": "0xD37EE7e4f452C6638c96536e68090De8cBcdb583", + "name": "Aave interest bearing GUSD", + "symbol": "aGUSD", + "decimals": 2, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aGUSD.svg" + }, + { + "chainId": 1, + "address": "0x39C6b3e42d6A679d7D776778Fe880BC9487C2EDA", + "name": "Aave interest bearing KNCL", + "symbol": "aKNCL", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aKNCL.png" + }, + { + "chainId": 1, + "address": "0x9D91BE44C06d373a8a226E1f3b146956083803eB", + "name": "Aave V1 Interest bearing KNCL", + "symbol": "aKNCLv1", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aKNCLv1.png" + }, + { + "chainId": 1, + "address": "0xa06bC25B5805d5F8d82847D191Cb4Af5A3e873E0", + "name": "Aave interest bearing LINK", + "symbol": "aLINK", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aLINK.svg" + }, + { + "chainId": 1, + "address": "0xA64BD6C70Cb9051F6A9ba1F163Fdc07E0DfB5F84", + "name": "Aave V1 Interest bearing LINK", + "symbol": "aLINKv1", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aLINKv1.svg" + }, + { + "chainId": 1, + "address": "0xa685a61171bb30d4072B338c80Cb7b2c865c873E", + "name": "Aave interest bearing MANA", + "symbol": "aMANA", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aMANA.svg" + }, + { + "chainId": 1, + "address": "0x6FCE4A401B6B80ACe52baAefE4421Bd188e76F6f", + "name": "Aave V1 Interest bearing MANA", + "symbol": "aMANAv1", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aMANAv1.svg" + }, + { + "chainId": 1, + "address": "0xc713e5E149D5D0715DcD1c156a020976e7E56B88", + "name": "Aave interest bearing MKR", + "symbol": "aMKR", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aMKR.svg" + }, + { + "chainId": 1, + "address": "0x7deB5e830be29F91E298ba5FF1356BB7f8146998", + "name": "Aave V1 Interest bearing MKR", + "symbol": "aMKRv1", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aMKRv1.svg" + }, + { + "chainId": 1, + "address": "0x2e8F4bdbE3d47d7d7DE490437AeA9915D930F1A3", + "name": "Aave interest bearing PAX", + "symbol": "aPAX", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aPAX.png" + }, + { + "chainId": 1, + "address": "0xc9BC48c72154ef3e5425641a3c747242112a46AF", + "name": "Aave interest bearing RAI", + "symbol": "aRAI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aRAI.svg" + }, + { + "chainId": 1, + "address": "0xCC12AbE4ff81c9378D670De1b57F8e0Dd228D77a", + "name": "Aave interest bearing REN", + "symbol": "aREN", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aREN.svg" + }, + { + "chainId": 1, + "address": "0x514cd6756CCBe28772d4Cb81bC3156BA9d1744aa", + "name": "Aave V2 interest bearing RENFIL", + "symbol": "aRENFIL", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aRENFIL.png" + }, + { + "chainId": 1, + "address": "0x69948cC03f478B95283F7dbf1CE764d0fc7EC54C", + "name": "Aave V1 Interest bearing REN", + "symbol": "aRENv1", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aRENv1.svg" + }, + { + "chainId": 1, + "address": "0x35f6B052C598d933D69A4EEC4D04c73A191fE6c2", + "name": "Aave interest bearing SNX", + "symbol": "aSNX", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aSNX.svg" + }, + { + "chainId": 1, + "address": "0x328C4c80BC7aCa0834Db37e6600A6c49E12Da4DE", + "name": "Aave V1 Interest bearing SNX", + "symbol": "aSNXv1", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aSNXv1.svg" + }, + { + "chainId": 1, + "address": "0x6C5024Cd4F8A59110119C56f8933403A539555EB", + "name": "Aave interest bearing SUSD", + "symbol": "aSUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aSUSD.svg" + }, + { + "chainId": 1, + "address": "0x625aE63000f46200499120B906716420bd059240", + "name": "Aave V1 Interest bearing sUSD", + "symbol": "aSUSDv1", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aSUSDv1.svg" + }, + { + "chainId": 1, + "address": "0x101cc05f4A51C0319f570d5E146a8C625198e636", + "name": "Aave interest bearing TUSD", + "symbol": "aTUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aTUSD.svg" + }, + { + "chainId": 1, + "address": "0x4DA9b813057D04BAef4e5800E36083717b4a0341", + "name": "Aave V1 Interest bearing TUSD", + "symbol": "aTUSDv1", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aTUSDv1.svg" + }, + { + "chainId": 1, + "address": "0xB9D7CB55f463405CDfBe4E90a6D2Df01C2B92BF1", + "name": "Aave interest bearing UNI", + "symbol": "aUNI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aUNI.svg" + }, + { + "chainId": 1, + "address": "0xB124541127A0A657f056D9Dd06188c4F1b0e5aab", + "name": "Aave V1 Interest bearing UNI", + "symbol": "aUNIv1", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aUNIv1.svg" + }, + { + "chainId": 1, + "address": "0xBcca60bB61934080951369a648Fb03DF4F96263C", + "name": "Aave interest bearing USDC", + "symbol": "aUSDC", + "decimals": 6, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aUSDC.svg" + }, + { + "chainId": 1, + "address": "0x9bA00D6856a4eDF4665BcA2C2309936572473B7E", + "name": "Aave V1 Interest bearing USDC", + "symbol": "aUSDCv1", + "decimals": 6, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aUSDCv1.svg" + }, + { + "chainId": 1, + "address": "0x3Ed3B47Dd13EC9a98b44e6204A523E766B225811", + "name": "Aave interest bearing USDT", + "symbol": "aUSDT", + "decimals": 6, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aUSDT.svg" + }, + { + "chainId": 1, + "address": "0x71fc860F7D3A592A4a98740e39dB31d25db65ae8", + "name": "Aave V1 Interest bearing USDT", + "symbol": "aUSDTv1", + "decimals": 6, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aUSDTv1.svg" + }, + { + "chainId": 1, + "address": "0x9ff58f4fFB29fA2266Ab25e75e2A8b3503311656", + "name": "Aave interest bearing WBTC", + "symbol": "aWBTC", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aWBTC.svg" + }, + { + "chainId": 1, + "address": "0xFC4B8ED459e00e5400be803A9BB3954234FD50e3", + "name": "Aave V1 Interest bearing WBTC", + "symbol": "aWBTCv1", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aWBTCv1.svg" + }, + { + "chainId": 1, + "address": "0x030bA81f1c18d280636F32af80b9AAd02Cf0854e", + "name": "Aave interest bearing WETH", + "symbol": "aWETH", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aWETH.svg" + }, + { + "chainId": 1, + "address": "0xF256CC7847E919FAc9B808cC216cAc87CCF2f47a", + "name": "Aave interest bearing xSUSHI", + "symbol": "aXSUSHI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aXSUSHI.png" + }, + { + "chainId": 1, + "address": "0x5165d24277cD063F5ac44Efd447B27025e888f37", + "name": "Aave interest bearing YFI", + "symbol": "aYFI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aYFI.svg" + }, + { + "chainId": 1, + "address": "0x12e51E77DAAA58aA0E9247db7510Ea4B46F9bEAd", + "name": "Aave V1 interest bearing YFI", + "symbol": "aYFIv1", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aYFIv1.svg" + }, + { + "chainId": 1, + "address": "0xDf7FF54aAcAcbFf42dfe29DD6144A69b629f8C9e", + "name": "Aave interest bearing ZRX", + "symbol": "aZRX", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aZRX.svg" + }, + { + "chainId": 1, + "address": "0x6Fb0855c404E09c47C3fBCA25f08d4E41f9F062f", + "name": "Aave V1 Interest bearing ZRX", + "symbol": "aZRXv1", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/aZRXv1.svg" + }, + { + "chainId": 1, + "address": "0xBC6DA0FE9aD5f3b0d58160288917AA56653660E9", + "name": "Alchemix USD", + "symbol": "alUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/alUSD.png" + }, + { + "chainId": 1, + "address": "0x43b4FdFD4Ff969587185cDB6f0BD875c5Fc83f8c", + "name": "Curve.fi Factory USD Metapool: Alchemix USD", + "symbol": "alUSD3CRV-f", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/alUSD3CRV-f.png" + }, + { + "chainId": 1, + "address": "0xaA17A236F2bAdc98DDc0Cf999AbB47D47Fc0A6Cf", + "name": "Curve.fi ETH/aETH", + "symbol": "ankrCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ankrCRV.png" + }, + { + "chainId": 1, + "address": "0xE95A203B1a91a908F9B9CE46459d101078c2c3cb", + "name": "Ankr Eth2 Reward Bearing Bond", + "symbol": "ankrETH", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ankrETH.png" + }, + { + "chainId": 1, + "address": "0x3B3Ac5386837Dc563660FB6a0937DFAa5924333B", + "name": "Curve.fi yDAI/yUSDC/yUSDT/yBUSD", + "symbol": "bCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/bCRV.png" + }, + { + "chainId": 1, + "address": "0xe65cdB6479BaC1e22340E4E755fAE7E509EcD06c", + "name": "Compound AAVE Token", + "symbol": "cAAVE", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/cAAVE.svg" + }, + { + "chainId": 1, + "address": "0x6C8c6b02E7b2BE14d4fA6022Dfd6d75921D90E4E", + "name": "Compound Basic Attention Token", + "symbol": "cBAT", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/cBAT.svg" + }, + { + "chainId": 1, + "address": "0x70e36f6BF80a52b3B46b3aF8e106CC0ed743E8e4", + "name": "Compound Collateral", + "symbol": "cCOMP", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/cCOMP.svg" + }, + { + "chainId": 1, + "address": "0x845838DF265Dcd2c412A1Dc9e959c7d08537f8a2", + "name": "Curve.fi cDAI/cUSDC", + "symbol": "cCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/cCRV.png" + }, + { + "chainId": 1, + "address": "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643", + "name": "Compound Dai", + "symbol": "cDAI", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/cDAI.svg" + }, + { + "chainId": 1, + "address": "0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5", + "name": "Compound Ether", + "symbol": "cETH", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/cETH.svg" + }, + { + "chainId": 1, + "address": "0xFAce851a4921ce59e912d19329929CE6da6EB0c7", + "name": "Compound LINK Coin", + "symbol": "cLINK", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/cLINK.svg" + }, + { + "chainId": 1, + "address": "0x95b4eF2869eBD94BEb4eEE400a99824BF5DC325b", + "name": "Compound Maker", + "symbol": "cMKR", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/cMKR.svg" + }, + { + "chainId": 1, + "address": "0x4B0181102A0112A2ef11AbEE5563bb4a3176c9d7", + "name": "Compound SUSHI Token", + "symbol": "cSUSHI", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/cSUSHI.svg" + }, + { + "chainId": 1, + "address": "0x12392F67bdf24faE0AF363c24aC620a2f67DAd86", + "name": "Compound TUSD Coin", + "symbol": "cTUSD", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/cTUSD.svg" + }, + { + "chainId": 1, + "address": "0x35A18000230DA775CAc24873d00Ff85BccdeD550", + "name": "Compound UNI", + "symbol": "cUNI", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/cUNI.svg" + }, + { + "chainId": 1, + "address": "0x39AA39c021dfbaE8faC545936693aC917d5E7563", + "name": "Compound USD Coin", + "symbol": "cUSDC", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/cUSDC.svg" + }, + { + "chainId": 1, + "address": "0xf650C3d88D12dB855b8bf7D11Be6C55A4e07dCC9", + "name": "Compound USDT", + "symbol": "cUSDT", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/cUSDT.svg" + }, + { + "chainId": 1, + "address": "0xccF4429DB6322D5C611ee964527D42E5d685DD6a", + "name": "Compound Wrapped BTC", + "symbol": "cWBTC", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/cWBTC.svg" + }, + { + "chainId": 1, + "address": "0x80a2AE356fc9ef4305676f7a3E2Ed04e12C33946", + "name": "Compound yearn.finance", + "symbol": "cYFI", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/cYFI.svg" + }, + { + "chainId": 1, + "address": "0xB3319f5D18Bc0D84dD1b4825Dcde5d5f7266d407", + "name": "Compound 0x", + "symbol": "cZRX", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/cZRX.svg" + }, + { + "chainId": 1, + "address": "0xc4AD29ba4B3c580e6D59105FFf484999997675Ff", + "name": "Curve.fi USD-BTC-ETH", + "symbol": "crv3crypto", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/crv3crypto.png" + }, + { + "chainId": 1, + "address": "0xcA3d75aC011BF5aD07a98d02f18225F9bD9A6BDF", + "name": "Curve.fi USD-BTC-ETH (V1)", + "symbol": "crvTricrypto", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/crvTricrypto.png" + }, + { + "chainId": 1, + "address": "0x62B9c7356A2Dc64a1969e19C23e4f579F9810Aa7", + "name": "Convex CRV", + "symbol": "cvxCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/cvxCRV.png" + }, + { + "chainId": 1, + "address": "0x3a664Ab939FD8482048609f652f9a0B0677337B9", + "name": "Curve.fi DUSD/DAI/USDC/USDT", + "symbol": "dusd3CRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/dusd3CRV.png" + }, + { + "chainId": 1, + "address": "0x194eBd173F6cDacE046C53eACcE9B953F28411d1", + "name": "Curve.fi EURS/sEUR", + "symbol": "eursCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/eursCRV.png" + }, + { + "chainId": 1, + "address": "0xD2967f45c4f384DEEa880F807Be904762a3DeA07", + "name": "Curve.fi GUSD/DAI/USDC/USDT", + "symbol": "gusd3CRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/gusd3CRV.png" + }, + { + "chainId": 1, + "address": "0xb19059ebb43466C323583928285a49f558E572Fd", + "name": "Curve.fi hBTC/wBTC", + "symbol": "hbtcCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/hbtcCRV.png" + }, + { + "chainId": 1, + "address": "0x5B5CFE992AdAC0C9D48E05854B2d91C73a003858", + "name": "Curve.fi HUSD/DAI/USDC/USDT", + "symbol": "husd3CRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/husd3CRV.png" + }, + { + "chainId": 1, + "address": "0xA9859874e1743A32409f75bB11549892138BBA1E", + "name": "Synth iETH", + "symbol": "iETH", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/iETH.svg" + }, + { + "chainId": 1, + "address": "0x5282a4eF67D9C33135340fB3289cc1711c13638C", + "name": "Curve.fi cyDAI/cyUSDC/cyUSDT", + "symbol": "ib3CRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ib3CRV.png" + }, + { + "chainId": 1, + "address": "0xc4E15973E6fF2A35cC804c2CF9D2a1b817a8b40F", + "name": "Interest-Bearing BTC", + "symbol": "ibBTC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ibBTC.png" + }, + { + "chainId": 1, + "address": "0xcee60cFa923170e4f8204AE08B4fA6A3F5656F3a", + "name": "Curve.fi LINK/sLINK", + "symbol": "linkCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/linkCRV.png" + }, + { + "chainId": 1, + "address": "0xe2f2a5C287993345a840Db3B0845fbC70f5935a5", + "name": "mStable USD", + "symbol": "mUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/mUSD.png" + }, + { + "chainId": 1, + "address": "0x1AEf73d49Dedc4b1778d0706583995958Dc862e6", + "name": "Curve.fi MUSD/DAI/USDC/USDT", + "symbol": "musd3CRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/musd3CRV.png" + }, + { + "chainId": 1, + "address": "0x8064d9Ae6cDf087b1bcd5BDf3531bD5d8C537a68", + "name": "BoringDAO BTC", + "symbol": "oBTC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/oBTC.png" + }, + { + "chainId": 1, + "address": "0x2fE94ea3d5d4a175184081439753DE15AeF9d614", + "name": "Curve.fi oBTC/sbtcCRV", + "symbol": "obtcCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/obtcCRV.png" + }, + { + "chainId": 1, + "address": "0x5228a22e72ccC52d415EcFd199F99D0665E7733b", + "name": "pTokens BTC", + "symbol": "pBTC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/pBTC.svg" + }, + { + "chainId": 1, + "address": "0xDE5331AC4B3630f94853Ff322B66407e0D6331E8", + "name": "Curve.fi pBTC/sbtcCRV", + "symbol": "pbtcCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/pbtcCRV.png" + }, + { + "chainId": 1, + "address": "0x2DaDc3582C0655E8D21b1519baC30Bc40Ab14E9A", + "name": "Furucombo IOU COMBO Token", + "symbol": "rCOMBO", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/rCOMBO.svg" + }, + { + "chainId": 1, + "address": "0x53a901d48795C58f485cBB38df08FA96a24669D5", + "name": "Curve.fi ETH/rETH", + "symbol": "rCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/rCRV.png" + }, + { + "chainId": 1, + "address": "0x9559Aaa82d9649C7A7b220E7c461d2E74c9a3593", + "name": "StaFi", + "symbol": "rETH", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/rETH.svg" + }, + { + "chainId": 1, + "address": "0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D", + "name": "renBTC", + "symbol": "renBTC", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/renBTC.png" + }, + { + "chainId": 1, + "address": "0x49849C98ae39Fff122806C06791Fa73784FB3675", + "name": "Curve.fi renBTC/wBTC", + "symbol": "renCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/renCRV.png" + }, + { + "chainId": 1, + "address": "0xD5147bc8e386d91Cc5DBE72099DAC6C9b99276F5", + "name": "renFIL", + "symbol": "renFIL", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/renFIL.png" + }, + { + "chainId": 1, + "address": "0xC2Ee6b0334C261ED60C72f6054450b61B8f18E35", + "name": "Curve.fi RSV/DAI/USDC/USDT", + "symbol": "rsv3CRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/rsv3CRV.png" + }, + { + "chainId": 1, + "address": "0xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6", + "name": "Synth sBTC", + "symbol": "sBTC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/sBTC.svg" + }, + { + "chainId": 1, + "address": "0xC25a3A3b969415c80451098fa907EC722572917F", + "name": "Curve.fi DAI/USDC/USDT/sUSD", + "symbol": "sCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/sCRV.png" + }, + { + "chainId": 1, + "address": "0x5e74C9036fb86BD7eCdcb084a0673EFc32eA31cb", + "name": "Synth sETH", + "symbol": "sETH", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/sETH.svg" + }, + { + "chainId": 1, + "address": "0xFe2e637202056d30016725477c5da089Ab0A043A", + "name": "StakeWise Staked ETH2", + "symbol": "sETH2", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/sETH2.png" + }, + { + "chainId": 1, + "address": "0xD71eCFF9342A5Ced620049e616c5035F1dB98620", + "name": "Synth sEUR", + "symbol": "sEUR", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/sEUR.svg" + }, + { + "chainId": 1, + "address": "0xbBC455cb4F1B9e4bFC4B73970d360c8f032EfEE6", + "name": "Synth sLINK", + "symbol": "sLINK", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/sLINK.svg" + }, + { + "chainId": 1, + "address": "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51", + "name": "Synth sUSD", + "symbol": "sUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/sUSD.svg" + }, + { + "chainId": 1, + "address": "0x02d341CcB60fAaf662bC0554d13778015d1b285C", + "name": "Curve.fi aDAI/aSUSD", + "symbol": "saCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/saCRV.png" + }, + { + "chainId": 1, + "address": "0x075b1bb99792c9E1041bA13afEf80C91a1e70fB3", + "name": "Curve.fi renBTC/wBTC/sBTC", + "symbol": "sbtcCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/sbtcCRV.png" + }, + { + "chainId": 1, + "address": "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84", + "name": "Lido Staked Ether", + "symbol": "stETH", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/stETH.svg" + }, + { + "chainId": 1, + "address": "0x64eda51d3Ad40D56b9dFc5554E06F94e1Dd786Fd", + "name": "Curve.fi tBTC/sbtcCrv", + "symbol": "tbtcCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/tbtcCRV.png" + }, + { + "chainId": 1, + "address": "0x97E2768e8E73511cA874545DC5Ff8067eB19B787", + "name": "Curve.fi USDK/DAI/USDC/USDT", + "symbol": "usdk3CRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/usdk3CRV.png" + }, + { + "chainId": 1, + "address": "0x4f3E8F405CF5aFC05D68142F3783bDfE13811522", + "name": "Curve.fi USDN/DAI/USDC/USDT", + "symbol": "usdn3CRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/usdn3CRV.png" + }, + { + "chainId": 1, + "address": "0x3383c5a8969Dc413bfdDc9656Eb80A1408E4bA20", + "name": "Wrapped ANATHA", + "symbol": "wANATHA", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/wANATHA.png" + }, + { + "chainId": 1, + "address": "0x0d438F3b5175Bebc262bF23753C1E53d03432bDE", + "name": "Wrapped NXM", + "symbol": "wNXM", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/wNXM.png" + }, + { + "chainId": 1, + "address": "0xECbF566944250ddE88322581024E611419715f7A", + "name": "xBTC", + "symbol": "xBTC", + "decimals": 9, + "logoURI": "https://cdn.furucombo.app/assets/img/token/xBTC.png" + }, + { + "chainId": 1, + "address": "0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272", + "name": "SushiBar", + "symbol": "xSUSHI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/xSUSHI.png" + }, + { + "chainId": 1, + "address": "0x9cA85572E6A3EbF24dEDd195623F188735A5179f", + "name": "yearn v1 Curve 3pool yVault", + "symbol": "y3Crv", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/y3Crv.png" + }, + { + "chainId": 1, + "address": "0xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8", + "name": "Curve.fi yDAI/yUSDC/yUSDT/yTUSD", + "symbol": "yCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yCRV.png" + }, + { + "chainId": 1, + "address": "0xACd43E627e64355f1861cEC6d3a6688B31a6F952", + "name": "yearn v1 DAI yVault", + "symbol": "yDAI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yDAI.png" + }, + { + "chainId": 1, + "address": "0xec0d8D3ED5477106c6D4ea27D90a60e594693C90", + "name": "yearn v1 GUSD yVault", + "symbol": "yGUSD", + "decimals": 2, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yGUSD.png" + }, + { + "chainId": 1, + "address": "0x881b06da56BB5675c54E4Ed311c21E54C5025298", + "name": "yearn v1 LINK yVault", + "symbol": "yLINK", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yLINK.png" + }, + { + "chainId": 1, + "address": "0x37d19d1c4E1fa9DC47bD1eA12f742a0887eDa74a", + "name": "yearn v1 TrueUSD yVault", + "symbol": "yTUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yTUSD.png" + }, + { + "chainId": 1, + "address": "0x5dbcF33D8c2E976c6b560249878e6F1491Bca25c", + "name": "yearn v1 Curve YPool yVault", + "symbol": "yUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yUSD.png" + }, + { + "chainId": 1, + "address": "0x597aD1e0c13Bfe8025993D9e79C69E1c0233522e", + "name": "yearn v1 USDC yVault", + "symbol": "yUSDC", + "decimals": 6, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yUSDC.png" + }, + { + "chainId": 1, + "address": "0x2f08119C6f07c006695E079AAFc638b8789FAf18", + "name": "yearn v1 USDT yVault", + "symbol": "yUSDT", + "decimals": 6, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yUSDT.png" + }, + { + "chainId": 1, + "address": "0xe1237aA7f535b0CC33Fd973D66cBf830354D16c7", + "name": "yearn v1 WETH yVault", + "symbol": "yWETH", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yWETH.svg" + }, + { + "chainId": 1, + "address": "0xBA2E7Fed597fd0E3e70f5130BcDbbFE06bB94fe1", + "name": "yearn v1 YFI yVault", + "symbol": "yYFI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yYFI.png" + }, + { + "chainId": 1, + "address": "0x29E240CFD7946BA20895a7a02eDb25C210f9f324", + "name": "yearn v1 aLINK yVault", + "symbol": "yaLINK", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yaLINK.png" + }, + { + "chainId": 1, + "address": "0x7Ff566E1d69DEfF32a7b244aE7276b9f90e9D0f6", + "name": "yearn v1 Curve RenWSBTC yVault", + "symbol": "ycrvRenWSBTC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ycrvRenWSBTC.png" + }, + { + "chainId": 1, + "address": "0xD905e2eaeBe188fc92179b6350807D8bd91Db0D8", + "name": "Curve.fi DAI/USDC/USDT/PAX", + "symbol": "ypaxCrv", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/ypaxCrv.png" + }, + { + "chainId": 1, + "address": "0xB8C3B7A2A618C552C23B1E4701109a9E756Bab67", + "name": "yearn v2 1INCH yVault", + "symbol": "yv1INCH", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yv1INCH.png" + }, + { + "chainId": 1, + "address": "0xd9788f3931Ede4D5018184E198699dC6d66C1915", + "name": "yearn v2 AAVE yVault", + "symbol": "yvAAVE", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvAAVE.png" + }, + { + "chainId": 1, + "address": "0x9d409a0A012CFbA9B15F6D4B36Ac57A46966Ab9a", + "name": "yearn v2 Compounding veCRV yVault", + "symbol": "yvBOOST", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvBOOST.png" + }, + { + "chainId": 1, + "address": "0x4A3FE75762017DB0eD73a71C9A06db7768DB5e66", + "name": "yearn v2 COMP yVault", + "symbol": "yvCOMP", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCOMP.png" + }, + { + "chainId": 1, + "address": "0xE537B5cc158EB71037D4125BDD7538421981E6AA", + "name": "yearn v2 Curve 3Crypto Pool yVault", + "symbol": "yvCurve-3Crypto", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-3Crypto.png" + }, + { + "chainId": 1, + "address": "0x84E13785B5a27879921D6F685f041421C7F482dA", + "name": "yearn v2 Curve 3pool yVault", + "symbol": "yvCurve-3pool", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-3pool.png" + }, + { + "chainId": 1, + "address": "0x39CAF13a104FF567f71fd2A4c68C026FDB6E740B", + "name": "yearn v2 Curve Aave Pool yVault", + "symbol": "yvCurve-Aave", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-Aave.png" + }, + { + "chainId": 1, + "address": "0x8fA3A9ecd9EFb07A8CE90A6eb014CF3c0E3B32Ef", + "name": "yearn v2 Curve BBTC Pool yVault", + "symbol": "yvCurve-BBTC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-BBTC.png" + }, + { + "chainId": 1, + "address": "0x6Ede7F19df5df6EF23bD5B9CeDb651580Bdf56Ca", + "name": "yearn v2 Curve BUSD Pool yVault", + "symbol": "yvCurve-BUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-BUSD.png" + }, + { + "chainId": 1, + "address": "0xD6Ea40597Be05c201845c0bFd2e96A60bACde267", + "name": "yearn v2 Curve Compound Pool yVault", + "symbol": "yvCurve-Compound", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-Compound.png" + }, + { + "chainId": 1, + "address": "0x30FCf7c6cDfC46eC237783D94Fc78553E79d4E9C", + "name": "yearn v2 Curve DUSD Pool yVault", + "symbol": "yvCurve-DUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-DUSD.png" + }, + { + "chainId": 1, + "address": "0x25212Df29073FfFA7A67399AcEfC2dd75a831A1A", + "name": "yearn v2 Curve EURS Pool yVault", + "symbol": "yvCurve-EURS", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-EURS.png" + }, + { + "chainId": 1, + "address": "0x0d4EA8536F9A13e4FBa16042a46c30f092b06aA5", + "name": "yearn v2 Curve EURT Pool yVault", + "symbol": "yvCurve-EURT", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-EURT.png" + }, + { + "chainId": 1, + "address": "0xB4AdA607B9d6b2c9Ee07A275e9616B84AC560139", + "name": "yearn v2 Curve FRAX Pool yVault", + "symbol": "yvCurve-FRAX", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-FRAX.png" + }, + { + "chainId": 1, + "address": "0x2a38B9B0201Ca39B17B460eD2f11e4929559071E", + "name": "yearn v2 Curve GUSD Pool yVault", + "symbol": "yvCurve-GUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-GUSD.png" + }, + { + "chainId": 1, + "address": "0x625b7DF2fa8aBe21B0A976736CDa4775523aeD1E", + "name": "yearn v2 Curve HBTC Pool yVault", + "symbol": "yvCurve-HBTC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-HBTC.png" + }, + { + "chainId": 1, + "address": "0x054AF22E1519b020516D72D749221c24756385C9", + "name": "yearn v2 Curve HUSD Pool yVault", + "symbol": "yvCurve-HUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-HUSD.png" + }, + { + "chainId": 1, + "address": "0x27b7b1ad7288079A66d12350c828D3C00A6F07d7", + "name": "yearn v2 Curve Iron Bank Pool yVault", + "symbol": "yvCurve-IB", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-IB.png" + }, + { + "chainId": 1, + "address": "0xf2db9a7c0ACd427A680D640F02d90f6186E71725", + "name": "yearn v2 Curve LINK Pool yVault", + "symbol": "yvCurve-LINK", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-LINK.png" + }, + { + "chainId": 1, + "address": "0x5fA5B62c8AF877CB37031e0a3B2f34A78e3C56A6", + "name": "yearn v2 Curve LUSD Pool yVault", + "symbol": "yvCurve-LUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-LUSD.png" + }, + { + "chainId": 1, + "address": "0xf8768814b88281DE4F532a3beEfA5b85B69b9324", + "name": "yearn v2 Curve TUSD Pool yVault", + "symbol": "yvCurve-TUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-TUSD.png" + }, + { + "chainId": 1, + "address": "0x3B96d491f067912D18563d56858Ba7d6EC67a6fa", + "name": "yearn v2 Curve USDN Pool yVault", + "symbol": "yvCurve-USDN", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-USDN.png" + }, + { + "chainId": 1, + "address": "0xC4dAf3b5e2A9e93861c3FBDd25f1e943B8D87417", + "name": "yearn v2 Curve USDP Pool yVault", + "symbol": "yvCurve-USDP", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-USDP.png" + }, + { + "chainId": 1, + "address": "0x1C6a9783F812b3Af3aBbf7de64c3cD7CC7D1af44", + "name": "yearn v2 Curve UST Pool yVault", + "symbol": "yvCurve-UST", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-UST.png" + }, + { + "chainId": 1, + "address": "0xA74d4B67b3368E83797a35382AFB776bAAE4F5C8", + "name": "yearn v2 Curve alUSD Pool yVault", + "symbol": "yvCurve-alUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-alUSD.png" + }, + { + "chainId": 1, + "address": "0x132d8D2C76Db3812403431fAcB00F3453Fc42125", + "name": "yearn v2 Curve ankrETH Pool yVault", + "symbol": "yvCurve-ankrETH", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-ankrETH.png" + }, + { + "chainId": 1, + "address": "0x8cc94ccd0f3841a468184aCA3Cc478D2148E1757", + "name": "yearn v2 Curve mUSD Pool yVault", + "symbol": "yvCurve-mUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-mUSD.png" + }, + { + "chainId": 1, + "address": "0xe9Dc63083c464d6EDcCFf23444fF3CFc6886f6FB", + "name": "yearn v2 Curve oBTC Pool yVault", + "symbol": "yvCurve-oBTC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-oBTC.png" + }, + { + "chainId": 1, + "address": "0x3c5DF3077BcF800640B5DAE8c91106575a4826E6", + "name": "yearn v2 Curve pBTC Pool yVault", + "symbol": "yvCurve-pBTC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-pBTC.png" + }, + { + "chainId": 1, + "address": "0xBfedbcbe27171C418CDabC2477042554b1904857", + "name": "yearn v2 Curve rETH Pool yVault", + "symbol": "yvCurve-rETH", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-rETH.png" + }, + { + "chainId": 1, + "address": "0x7047F90229a057C13BF847C0744D646CFb6c9E1A", + "name": "yearn v2 Curve renBTC Pool yVault", + "symbol": "yvCurve-renBTC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-renBTC.png" + }, + { + "chainId": 1, + "address": "0xb4D1Be44BfF40ad6e506edf43156577a3f8672eC", + "name": "yearn v2 Curve sAave Pool yVault", + "symbol": "yvCurve-sAave", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-sAave.png" + }, + { + "chainId": 1, + "address": "0x8414Db07a7F743dEbaFb402070AB01a4E0d2E45e", + "name": "yearn v2 Curve sBTC Pool yVault", + "symbol": "yvCurve-sBTC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-sBTC.png" + }, + { + "chainId": 1, + "address": "0x986b4AFF588a109c09B50A03f42E4110E29D353F", + "name": "yearn v2 Curve sETH Pool yVault", + "symbol": "yvCurve-sETH", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-sETH.png" + }, + { + "chainId": 1, + "address": "0x5a770DbD3Ee6bAF2802D29a901Ef11501C44797A", + "name": "yearn v2 Curve sUSD Pool yVault", + "symbol": "yvCurve-sUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-sUSD.png" + }, + { + "chainId": 1, + "address": "0xdCD90C7f6324cfa40d7169ef80b12031770B4325", + "name": "yearn v2 Curve stETH Pool yVault", + "symbol": "yvCurve-stETH", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-stETH.png" + }, + { + "chainId": 1, + "address": "0x23D3D0f1c697247d5e0a9efB37d8b0ED0C464f7f", + "name": "yearn v2 Curve tBTC Pool yVault", + "symbol": "yvCurve-tBTC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-tBTC.png" + }, + { + "chainId": 1, + "address": "0x3D980E50508CFd41a13837A60149927a11c03731", + "name": "yearn v2 Curve triCrypto Pool yVault", + "symbol": "yvCurve-triCrypto", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-triCrypto.png" + }, + { + "chainId": 1, + "address": "0x8ee57c05741aA9DB947A744E713C15d4d19D8822", + "name": "yearn v2 Curve yBUSD Pool yVault", + "symbol": "yvCurve-yBUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-yBUSD.png" + }, + { + "chainId": 1, + "address": "0x4B5BfD52124784745c1071dcB244C6688d2533d3", + "name": "yearn v2 Curve Y Pool yVault", + "symbol": "yvCurve-yUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvCurve-yUSD.png" + }, + { + "chainId": 1, + "address": "0xdA816459F1AB5631232FE5e97a05BBBb94970c95", + "name": "yearn v2 DAI yVault", + "symbol": "yvDAI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvDAI.png" + }, + { + "chainId": 1, + "address": "0xe11ba472F74869176652C35D30dB89854b5ae84D", + "name": "yearn v2 HEGIC yVault", + "symbol": "yvHEGIC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvHEGIC.png" + }, + { + "chainId": 1, + "address": "0x671a912C10bba0CFA74Cfc2d6Fba9BA1ed9530B2", + "name": "yearn v2 LINK yVault", + "symbol": "yvLINK", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvLINK.png" + }, + { + "chainId": 1, + "address": "0x873fB544277FD7b977B196a826459a69E27eA4ea", + "name": "yearn v2 RAI yVault", + "symbol": "yvRAI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvRAI.png" + }, + { + "chainId": 1, + "address": "0xF29AE508698bDeF169B89834F76704C3B205aedf", + "name": "yearn v2 SNX yVault", + "symbol": "yvSNX", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvSNX.png" + }, + { + "chainId": 1, + "address": "0x6d765CbE5bC922694afE112C140b8878b9FB0390", + "name": "yearn v2 SUSHI yVault", + "symbol": "yvSUSHI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvSUSHI.png" + }, + { + "chainId": 1, + "address": "0xFD0877d9095789cAF24c98F7CCe092fa8E120775", + "name": "yearn v2 TUSD yVault", + "symbol": "yvTUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvTUSD.png" + }, + { + "chainId": 1, + "address": "0xFBEB78a723b8087fD2ea7Ef1afEc93d35E8Bed42", + "name": "yearn v2 UNI yVault", + "symbol": "yvUNI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvUNI.png" + }, + { + "chainId": 1, + "address": "0x5f18C75AbDAe578b483E5F43f12a39cF75b973a9", + "name": "yearn v2 USDC yVault", + "symbol": "yvUSDC", + "decimals": 6, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvUSDC.png" + }, + { + "chainId": 1, + "address": "0x7Da96a3891Add058AdA2E826306D812C638D87a7", + "name": "yearn v2 USDT yVault", + "symbol": "yvUSDT", + "decimals": 6, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvUSDT.png" + }, + { + "chainId": 1, + "address": "0xA696a63cc78DfFa1a63E9E50587C197387FF6C7E", + "name": "yearn v2 WBTC yVault", + "symbol": "yvWBTC", + "decimals": 8, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvWBTC.png" + }, + { + "chainId": 1, + "address": "0xa258C4606Ca8206D8aA700cE2143D7db854D168c", + "name": "yearn v2 WETH yVault", + "symbol": "yvWETH", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvWETH.png" + }, + { + "chainId": 1, + "address": "0xE14d13d8B3b85aF791b2AADD661cDBd5E6097Db1", + "name": "yearn v2 YFI yVault", + "symbol": "yvYFI", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvYFI.png" + }, + { + "chainId": 1, + "address": "0x03403154afc09Ce8e44C3B185C82C6aD5f86b9ab", + "name": "yearn v1 Curve a3CRV yVault", + "symbol": "yva3CRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yva3CRV.png" + }, + { + "chainId": 1, + "address": "0xE625F5923303f1CE7A43ACFEFd11fd12f30DbcA4", + "name": "yearn v1 Curve AnkrETH Pool yVault", + "symbol": "yvankrCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvankrCRV.png" + }, + { + "chainId": 1, + "address": "0xA8B1Cb4ed612ee179BDeA16CCa6Ba596321AE52D", + "name": "yearn v1 Curve bBTC/sbtcCRV yVault", + "symbol": "yvbBTC-sbtcCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvbBTC-sbtcCRV.png" + }, + { + "chainId": 1, + "address": "0x629c759D1E83eFbF63d84eb3868B564d9521C129", + "name": "yearn v1 Curve Compound Pool yVault", + "symbol": "yvcDAI+cUSDC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvcDAI+cUSDC.png" + }, + { + "chainId": 1, + "address": "0x2994529C0652D127b7842094103715ec5299bBed", + "name": "yearn v1 Curve BUSD yVault", + "symbol": "yvcrvBUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvcrvBUSD.png" + }, + { + "chainId": 1, + "address": "0x5334e150B938dd2b6bd040D9c4a03Cff0cED3765", + "name": "yearn v1 Curve RenWBTC yVault", + "symbol": "yvcrvRenWBTC", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvcrvRenWBTC.png" + }, + { + "chainId": 1, + "address": "0x5533ed0a3b83F70c3c4a1f69Ef5546D3D4713E44", + "name": "yearn v1 Curve sUSD Pool yVault", + "symbol": "yvcrvSUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvcrvSUSD.png" + }, + { + "chainId": 1, + "address": "0x8e6741b456a074F0Bc45B8b82A755d4aF7E965dF", + "name": "yearn v1 Curve DUSD Pool yVault", + "symbol": "yvdusd3CRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvdusd3CRV.png" + }, + { + "chainId": 1, + "address": "0xc5bDdf9843308380375a611c18B50Fb9341f502A", + "name": "yearn v1 veCRV-DAO yVault", + "symbol": "yveCRV-DAO", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yveCRV-DAO.png" + }, + { + "chainId": 1, + "address": "0x98B058b2CBacF5E99bC7012DF757ea7CFEbd35BC", + "name": "yearn v1 Curve EURS Pool yVault", + "symbol": "yveursCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yveursCRV.png" + }, + { + "chainId": 1, + "address": "0xcC7E70A958917cCe67B4B87a8C30E6297451aE98", + "name": "yearn v1 Curve GUSD Pool yVault", + "symbol": "yvgusd3CRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvgusd3CRV.png" + }, + { + "chainId": 1, + "address": "0x46AFc2dfBd1ea0c0760CAD8262A5838e803A37e5", + "name": "yearn v1 Curve hBTC Pool yVault", + "symbol": "yvhCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvhCRV.png" + }, + { + "chainId": 1, + "address": "0x39546945695DCb1c037C836925B355262f551f55", + "name": "yearn v1 Curve HUSD Pool yVault", + "symbol": "yvhusd3CRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvhusd3CRV.png" + }, + { + "chainId": 1, + "address": "0x96Ea6AF74Af09522fCB4c28C269C26F59a31ced6", + "name": "yearn v1 Curve LINK Pool yVault", + "symbol": "yvlinkCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvlinkCRV.png" + }, + { + "chainId": 1, + "address": "0xE0db48B4F71752C4bEf16De1DBD042B82976b8C7", + "name": "yearn v1 mStable USD yVault", + "symbol": "yvmUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvmUSD.png" + }, + { + "chainId": 1, + "address": "0x0FCDAeDFb8A7DfDa2e9838564c5A1665d856AFDF", + "name": "yearn v1 Curve mUSD Pool yVault", + "symbol": "yvmusd3CRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvmusd3CRV.png" + }, + { + "chainId": 1, + "address": "0x7F83935EcFe4729c4Ea592Ab2bC1A32588409797", + "name": "yearn v1 Curve oBTC/sbtcCRV yVault", + "symbol": "yvoBTC-sbtcCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvoBTC-sbtcCRV.png" + }, + { + "chainId": 1, + "address": "0x123964EbE096A920dae00Fb795FFBfA0c9Ff4675", + "name": "yearn v1 Curve pBTC/sbtcCRV yVault", + "symbol": "yvpBTC-sbtcCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvpBTC-sbtcCRV.png" + }, + { + "chainId": 1, + "address": "0xa5cA62D95D24A4a350983D5B8ac4EB8638887396", + "name": "yearn v2 sUSD yVault", + "symbol": "yvsUSD", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvsUSD.png" + }, + { + "chainId": 1, + "address": "0xBacB69571323575C6a5A3b4F9EEde1DC7D31FBc1", + "name": "yearn v1 Curve saCRV yVault", + "symbol": "yvsaCRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvsaCRV.png" + }, + { + "chainId": 1, + "address": "0x07FB4756f67bD46B748b16119E802F1f880fb2CC", + "name": "yearn v1 Curve tbtc/sbtcCrv yVault", + "symbol": "yvtbtc-sbtcCrv", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvtbtc-sbtcCrv.png" + }, + { + "chainId": 1, + "address": "0xFe39Ce91437C76178665D64d7a2694B0f6f17fE3", + "name": "yearn v1 Curve USDN Pool yVault", + "symbol": "yvusdn3CRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvusdn3CRV.png" + }, + { + "chainId": 1, + "address": "0x1B5eb1173D2Bf770e50F10410C9a96F7a8eB6e75", + "name": "yearn v1 Curve USDP Pool yVault", + "symbol": "yvusdp3CRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvusdp3CRV.png" + }, + { + "chainId": 1, + "address": "0xF6C9E9AF314982A4b38366f4AbfAa00595C5A6fC", + "name": "yearn v1 Curve UST Pool yVault", + "symbol": "yvust3CRV", + "decimals": 18, + "logoURI": "https://cdn.furucombo.app/assets/img/token/yvust3CRV.png" + } + ] +} diff --git a/packages/vci/lib/inputs.ts b/packages/vci/lib/inputs.ts new file mode 100644 index 00000000..e4eba9d2 --- /dev/null +++ b/packages/vci/lib/inputs.ts @@ -0,0 +1,74 @@ +import type { BigNumberish } from "ethers"; +import { parseUnits } from "ethers"; +import { FormEventHandler, useMemo } from "react"; +import { usePersistentAtom } from "./jotai"; + +export type FormattedInput = { + value: T; + formattedValue: FormattedType; + resetValue(): void; + onChangeHandler: FormEventHandler; + setValue: (state: T) => void; +}; + +export const bigNumberFormatter = (value: any) => parseUnits(validateInput(value).formatted); + +export const validateInput = (value?: string | number) => { + const formatted = value === "." ? "0" : (`${value || "0"}`.replace(/\.$/, ".0") as any); + return { + formatted, + isValid: value === "" || isFinite(Number(formatted)), + }; +}; + +export const useBigNumberFormattedInput = ( + initState: T | undefined, + config: { + isPersistent?: boolean; + stateScopeOrId?: string; + }, +): FormattedInput => { + const isPersistent = config?.isPersistent && config.stateScopeOrId; + const [value, setValue] = usePersistentAtom(isPersistent ? config.stateScopeOrId : undefined, initState); + const formattedValue = useMemo(() => bigNumberFormatter(value as any), [value]); + + const onChangeHandler: FormEventHandler = ({ currentTarget: { value } }) => { + setValue(validateInput(value).isValid ? (value as any) : 0); + }; + + const resetValue = () => setValue("" as any); + + return { + value: value as any, + resetValue, + formattedValue, + onChangeHandler, + setValue, + }; +}; + +export const useFormattedInputHandler = ( + initState: T | undefined, + config: { + formatter: (value: T) => T; + isPersistent?: boolean; + stateScopeOrId?: string; + }, +): FormattedInput => { + const isPersistent = config?.isPersistent && config.stateScopeOrId; + const [value, setValue] = usePersistentAtom(isPersistent ? config.stateScopeOrId : undefined, initState); + + const onChangeHandler: FormEventHandler = ({ currentTarget: { value } }) => { + setValue(config.formatter(value as any)); + }; + + const resetValue = () => setValue("" as any); + + return { + value: value as any, + formattedValue: value as any, + resetValue, + onChangeHandler, + setValue, + }; +}; diff --git a/packages/vci/lib/jotai.ts b/packages/vci/lib/jotai.ts new file mode 100644 index 00000000..4d5b89ff --- /dev/null +++ b/packages/vci/lib/jotai.ts @@ -0,0 +1,17 @@ +import { useMemo } from "react"; +import { useAtom, atom } from "jotai"; +import { atomWithStorage } from "jotai/utils"; + +/** + * Jotai aware - persistent hook + * @param scopeOrId LocalStorage scope to store content. + * When undefined data is in memory stored using useState. + */ +export const usePersistentAtom = (scopeOrId: string | undefined, initialValue?: T) => { + const persistentAtom = useMemo(() => { + if (scopeOrId) return atomWithStorage(`popcorn.netowrk.${scopeOrId}`, initialValue as T); + return atom(initialValue as T); + }, [scopeOrId]); + + return useAtom(persistentAtom); +}; diff --git a/packages/vci/lib/prototols.ts b/packages/vci/lib/prototols.ts new file mode 100644 index 00000000..dc88cd07 --- /dev/null +++ b/packages/vci/lib/prototols.ts @@ -0,0 +1,12 @@ +import protocols from "./constants/protocolList.json"; + +export type Protocol = { + chainId: string; + address: string; + name: string; + logoURI: string; +}; + +export const useProtocolList = () => { + return protocols as any as Array; +}; diff --git a/packages/vci/lib/tokens.ts b/packages/vci/lib/tokens.ts new file mode 100644 index 00000000..08b7cc23 --- /dev/null +++ b/packages/vci/lib/tokens.ts @@ -0,0 +1,14 @@ +import tokens from "./constants/tokenList.json"; + +export type Token = { + chainId: number; + address: string; + name: string; + symbol: string; + decimals: number; + logoURI: string; +}; + +export const useTokenList = () => { + return tokens.tokens; +}; diff --git a/packages/vci/next.config.js b/packages/vci/next.config.js new file mode 100644 index 00000000..f531e10c --- /dev/null +++ b/packages/vci/next.config.js @@ -0,0 +1,9 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + reactStrictMode: true, + images: { + domains: ["cdn.furucombo.app", "cryptologos.cc"], + }, +}; + +module.exports = nextConfig; diff --git a/packages/vci/package.json b/packages/vci/package.json new file mode 100644 index 00000000..4178d043 --- /dev/null +++ b/packages/vci/package.json @@ -0,0 +1,21 @@ +{ + "name": "vci", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@headlessui/react": "^1.7.10", + "@next/font": "^13.1.6", + "@rainbow-me/rainbowkit": "^0.9.0", + "autoprefixer": "^10.4.13", + "ethers": "^6.0.3", + "jotai": "^2.0.1", + "tailwindcss": "^3.2.6", + "wagmi": "^0.11.5" + } +} diff --git a/packages/vci/pages/_app.tsx b/packages/vci/pages/_app.tsx new file mode 100644 index 00000000..a60ad4ad --- /dev/null +++ b/packages/vci/pages/_app.tsx @@ -0,0 +1,12 @@ +import "../styles/globals.css"; +import type { AppProps } from "next/app"; +import { Inter } from "@next/font/google"; + +const inter = Inter({ subsets: ["latin"] }); +export default function App({ Component, pageProps }: AppProps) { + return ( +
+ +
+ ); +} diff --git a/packages/vci/pages/_document.tsx b/packages/vci/pages/_document.tsx new file mode 100644 index 00000000..b2fff8b4 --- /dev/null +++ b/packages/vci/pages/_document.tsx @@ -0,0 +1,13 @@ +import { Html, Head, Main, NextScript } from "next/document"; + +export default function Document() { + return ( + + + +
+ + + + ); +} diff --git a/packages/vci/pages/api/hello.ts b/packages/vci/pages/api/hello.ts new file mode 100644 index 00000000..f8bcc7e5 --- /dev/null +++ b/packages/vci/pages/api/hello.ts @@ -0,0 +1,13 @@ +// Next.js API route support: https://nextjs.org/docs/api-routes/introduction +import type { NextApiRequest, NextApiResponse } from 'next' + +type Data = { + name: string +} + +export default function handler( + req: NextApiRequest, + res: NextApiResponse +) { + res.status(200).json({ name: 'John Doe' }) +} diff --git a/packages/vci/pages/index.tsx b/packages/vci/pages/index.tsx new file mode 100644 index 00000000..1dff1eba --- /dev/null +++ b/packages/vci/pages/index.tsx @@ -0,0 +1,18 @@ +import Head from "next/head"; +import Dashboard from "@/components/Dashboard"; + +export default function Home() { + return ( + <> + + VCI - Creator Interface + + + + +
+ +
+ + ); +} diff --git a/packages/vci/postcss.config.js b/packages/vci/postcss.config.js new file mode 100644 index 00000000..33ad091d --- /dev/null +++ b/packages/vci/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/packages/vci/public/favicon.ico b/packages/vci/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4570eb8d9269ad58b17fecbec6d630cded56f507 GIT binary patch literal 39535 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 literal 0 HcmV?d00001 diff --git a/packages/vci/styles/globals.css b/packages/vci/styles/globals.css new file mode 100644 index 00000000..b5c61c95 --- /dev/null +++ b/packages/vci/styles/globals.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/packages/vci/tailwind.config.js b/packages/vci/tailwind.config.js new file mode 100644 index 00000000..844ffe13 --- /dev/null +++ b/packages/vci/tailwind.config.js @@ -0,0 +1,8 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ["./pages/*.{tsx,js}", "./pages/**/*.{tsx,js}", "./components/*.{tsx,js}", "./components/**/*.{tsx,js}"], + theme: { + extend: {}, + }, + plugins: [], +}; diff --git a/packages/vci/tsconfig.json b/packages/vci/tsconfig.json new file mode 100644 index 00000000..62c0343e --- /dev/null +++ b/packages/vci/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "baseUrl": ".", + "paths": { + "@/lib/*": ["./lib/*"], + "@/components/*": ["./components/*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] +} From 53a1bf6cbedf43bd8d613d27af77024e98161478 Mon Sep 17 00:00:00 2001 From: D3Portillo Date: Tue, 14 Feb 2023 16:50:44 +0100 Subject: [PATCH 02/17] CHORES: remove unused /api folder --- packages/vci/pages/api/hello.ts | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 packages/vci/pages/api/hello.ts diff --git a/packages/vci/pages/api/hello.ts b/packages/vci/pages/api/hello.ts deleted file mode 100644 index f8bcc7e5..00000000 --- a/packages/vci/pages/api/hello.ts +++ /dev/null @@ -1,13 +0,0 @@ -// Next.js API route support: https://nextjs.org/docs/api-routes/introduction -import type { NextApiRequest, NextApiResponse } from 'next' - -type Data = { - name: string -} - -export default function handler( - req: NextApiRequest, - res: NextApiResponse -) { - res.status(200).json({ name: 'John Doe' }) -} From 055f830a0cd02afa522018beb829cc0bed36b23d Mon Sep 17 00:00:00 2001 From: D3Portillo Date: Tue, 14 Feb 2023 16:50:59 +0100 Subject: [PATCH 03/17] chores: gitignoring .env file --- packages/vci/.gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/vci/.gitignore b/packages/vci/.gitignore index c87c9b39..2ea65cfe 100644 --- a/packages/vci/.gitignore +++ b/packages/vci/.gitignore @@ -34,3 +34,6 @@ yarn-error.log* # typescript *.tsbuildinfo next-env.d.ts + +# project +.env From b0f5fba043e9bdc798e26772359aece46518efac Mon Sep 17 00:00:00 2001 From: D3Portillo Date: Fri, 3 Mar 2023 15:35:07 +0100 Subject: [PATCH 04/17] chores(package.json): add react-icons --- packages/vci/package.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/vci/package.json b/packages/vci/package.json index 4178d043..0f3b54ab 100644 --- a/packages/vci/package.json +++ b/packages/vci/package.json @@ -11,11 +11,12 @@ "dependencies": { "@headlessui/react": "^1.7.10", "@next/font": "^13.1.6", - "@rainbow-me/rainbowkit": "^0.9.0", + "@rainbow-me/rainbowkit": "^0.11.0", "autoprefixer": "^10.4.13", - "ethers": "^6.0.3", + "ethers": "^5.7.2", "jotai": "^2.0.1", + "react-icons": "^4.7.1", "tailwindcss": "^3.2.6", - "wagmi": "^0.11.5" + "wagmi": "^0.11.7" } } From 9ed2e908031a093b12b2aedf934438c66e2d5ea4 Mon Sep 17 00:00:00 2001 From: D3Portillo Date: Fri, 3 Mar 2023 15:35:31 +0100 Subject: [PATCH 05/17] chores(lib/): add vault, wagmi, and type utilities --- packages/vci/lib/@types/shared.d.ts | 1 + packages/vci/lib/helpers.ts | 2 ++ packages/vci/lib/inputs.ts | 5 +++-- packages/vci/lib/numbers.ts | 2 ++ packages/vci/lib/vaults/constants.ts | 4 ++++ packages/vci/lib/vaults/index.ts | 30 ++++++++++++++++++++++++++++ packages/vci/lib/wagmi.ts | 24 ++++++++++++++++++++++ 7 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 packages/vci/lib/@types/shared.d.ts create mode 100644 packages/vci/lib/helpers.ts create mode 100644 packages/vci/lib/numbers.ts create mode 100644 packages/vci/lib/vaults/constants.ts create mode 100644 packages/vci/lib/vaults/index.ts create mode 100644 packages/vci/lib/wagmi.ts diff --git a/packages/vci/lib/@types/shared.d.ts b/packages/vci/lib/@types/shared.d.ts new file mode 100644 index 00000000..c321d84e --- /dev/null +++ b/packages/vci/lib/@types/shared.d.ts @@ -0,0 +1 @@ +export type Tuple = R["length"] extends N ? R : Tuple; diff --git a/packages/vci/lib/helpers.ts b/packages/vci/lib/helpers.ts new file mode 100644 index 00000000..e32d1be8 --- /dev/null +++ b/packages/vci/lib/helpers.ts @@ -0,0 +1,2 @@ +export function noOp() {} +export const beautifyAddress = (addr: string) => `${addr.substr(0, 4)}...${addr.substr(-5, 5)}`; diff --git a/packages/vci/lib/inputs.ts b/packages/vci/lib/inputs.ts index e4eba9d2..34c36356 100644 --- a/packages/vci/lib/inputs.ts +++ b/packages/vci/lib/inputs.ts @@ -1,5 +1,6 @@ import type { BigNumberish } from "ethers"; -import { parseUnits } from "ethers"; +import { utils } from "ethers"; + import { FormEventHandler, useMemo } from "react"; import { usePersistentAtom } from "./jotai"; @@ -11,7 +12,7 @@ export type FormattedInput = { setValue: (state: T) => void; }; -export const bigNumberFormatter = (value: any) => parseUnits(validateInput(value).formatted); +export const bigNumberFormatter = (value: any) => utils.parseUnits(validateInput(value).formatted); export const validateInput = (value?: string | number) => { const formatted = value === "." ? "0" : (`${value || "0"}`.replace(/\.$/, ".0") as any); diff --git a/packages/vci/lib/numbers.ts b/packages/vci/lib/numbers.ts new file mode 100644 index 00000000..1d8c5a66 --- /dev/null +++ b/packages/vci/lib/numbers.ts @@ -0,0 +1,2 @@ +import { constants } from "ethers"; +export const ZERO = constants.Zero; diff --git a/packages/vci/lib/vaults/constants.ts b/packages/vci/lib/vaults/constants.ts new file mode 100644 index 00000000..73eecfa8 --- /dev/null +++ b/packages/vci/lib/vaults/constants.ts @@ -0,0 +1,4 @@ +export const STRUCT_VAULT_FEES = "(uint64,uint64,uint64,uint64)"; +export const STRUCT_INIT_PARAMS = `(address,address,${STRUCT_VAULT_FEES},address,address)`; +export const STRUCT_DEPLOYMENT_ARGS = "(bytes32,bytes)"; +export const STRUCT_VAULT_METADATA = "(address, address, address, string, address[8], address, uint256)"; diff --git a/packages/vci/lib/vaults/index.ts b/packages/vci/lib/vaults/index.ts new file mode 100644 index 00000000..98f6b739 --- /dev/null +++ b/packages/vci/lib/vaults/index.ts @@ -0,0 +1,30 @@ +import type { Tuple } from "@/lib/@types/shared"; +import type { BigNumberish } from "ethers"; +import { useTypedWriteCall } from "@/lib/wagmi"; +import { STRUCT_INIT_PARAMS, STRUCT_DEPLOYMENT_ARGS, STRUCT_VAULT_METADATA } from "@/lib/vaults/constants"; + +export const ABI_VAULT_CONTROLLER = [ + `function deployVault(${STRUCT_INIT_PARAMS},${STRUCT_DEPLOYMENT_ARGS},${STRUCT_DEPLOYMENT_ARGS},address,bytes,${STRUCT_VAULT_METADATA},uint256) external returns (address vault)`, +]; + +export const useDeployVault = (args: VaultDeployProps) => { + return useTypedWriteCall({ + abi: [ABI_VAULT_CONTROLLER], + functionName: "deployVault", + args, + }); +}; + +/** + * @TODO Use new wagmi ABI parser for human readable + * @see https://twitter.com/wagmi_sh/status/1631017966505541633 + */ +type VaultDeployProps = [ + [string, string, [BigNumberish, BigNumberish, BigNumberish, BigNumberish], string, string], + [any, any], + [any, any], + string, + any, + [string, string, string, string, Tuple, string, BigNumberish], + BigNumberish, +]; diff --git a/packages/vci/lib/wagmi.ts b/packages/vci/lib/wagmi.ts new file mode 100644 index 00000000..3bb53f16 --- /dev/null +++ b/packages/vci/lib/wagmi.ts @@ -0,0 +1,24 @@ +import { useContractRead, useContractWrite, usePrepareContractWrite } from "wagmi"; + +export type ContractWriteArgs = Partial[0]>; + +export const useTypedReadCall = (config: ContractWriteArgs) => { + const chainId = config?.chainId; + return useContractRead({ + ...(config as any), + chainId: chainId ? Number(chainId) : chainId, + }) as ReturnType & { data?: TypeData }; +}; + +export const useTypedWriteCall = (config: ContractWriteArgs) => { + const chainId = config?.chainId; + const { config: preparedConfig } = usePrepareContractWrite({ + ...(config as any), + chainId: chainId ? Number(chainId) : chainId, + }); + + return useContractWrite({ + ...preparedConfig, + ...(config as any), + }) as ReturnType & { data?: TypeData }; +}; From 877475424dca0277c1926686eb1b4cb26d90280c Mon Sep 17 00:00:00 2001 From: D3Portillo Date: Fri, 3 Mar 2023 15:36:39 +0100 Subject: [PATCH 06/17] enh(_app.tsx): update font - Roboto --- packages/vci/pages/_app.tsx | 49 ++++++++++++++++++++++++++++++++++--- 1 file changed, 45 insertions(+), 4 deletions(-) diff --git a/packages/vci/pages/_app.tsx b/packages/vci/pages/_app.tsx index a60ad4ad..3593ebac 100644 --- a/packages/vci/pages/_app.tsx +++ b/packages/vci/pages/_app.tsx @@ -1,12 +1,53 @@ import "../styles/globals.css"; +import "@rainbow-me/rainbowkit/styles.css"; import type { AppProps } from "next/app"; -import { Inter } from "@next/font/google"; -const inter = Inter({ subsets: ["latin"] }); +import { Roboto } from "@next/font/google"; +import { WagmiConfig, createClient, configureChains } from "wagmi"; +import { goerli } from "wagmi/chains"; +import { publicProvider } from "wagmi/providers/public"; +import { getDefaultWallets, RainbowKitProvider } from "@rainbow-me/rainbowkit"; +import { Toaster } from "react-hot-toast"; + +const { provider, chains } = configureChains([goerli], [publicProvider()]); + +const { connectors } = getDefaultWallets({ + appName: "app.pop.network", + chains, +}); + +const client = createClient({ + autoConnect: false, + provider, + connectors, +}); + +const nextFont = Roboto({ + weight: ["400", "700", "900"], + subsets: [], +}); + export default function App({ Component, pageProps }: AppProps) { return ( -
- +
+ + + + + diff --git a/packages/vci/public/images/icons/polygon.svg b/packages/vci/public/images/icons/polygon.svg new file mode 100644 index 00000000..af6e4e85 --- /dev/null +++ b/packages/vci/public/images/icons/polygon.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/packages/vci/public/images/icons/testNetLogo.png b/packages/vci/public/images/icons/testNetLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..64dd6da2eb5881504a2beced7e9a716e1df99293 GIT binary patch literal 24343 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 Date: Mon, 20 Mar 2023 13:20:49 +0100 Subject: [PATCH 17/17] show why the cta is disabled --- packages/vci/components/Dashboard.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/vci/components/Dashboard.tsx b/packages/vci/components/Dashboard.tsx index c8944ebe..6186e246 100644 --- a/packages/vci/components/Dashboard.tsx +++ b/packages/vci/components/Dashboard.tsx @@ -37,7 +37,7 @@ function Dashboard() { Setup New Vault
- + @@ -54,6 +54,11 @@ function Dashboard() { Preview Vault +
+

ValidFees: {String(validFees)}

+

ValidAdapter: {String(validAdapter)}

+

ValidAdapterConfig: {String(validAdapterConfig)}

+
);