live update (#626)
* Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544) Bumps @splinetool/runtime from 0.9.477 to 0.9.482. --- updated-dependencies: - dependency-name: "@splinetool/runtime" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545) Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0. - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0) --- updated-dependencies: - dependency-name: "@sentry/nextjs" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Mp 3245 usehlsvaults hook (#541) * ✨ routing and pages for HLS * ✨ create hooks for fetching HLS vaults and Strategies * Share accounts (#539) * feat: do not redirect to wallet on portfolio page * fix: use connected wallet for AccountMenu * fix: fixed ghost AccountDetails * feat: created ShareBar and share functionality * fix: don’t show shareBar if no address is present * fix: stupid 'next/navigation' * tidy: format * fix: fixed tests * ✨ routing and pages for HLS (#538) * 🐛 use useAccountIds * fix: fixed the tests * fix: accountIds is now a suspense --------- Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com> * 🐛 fix build --------- Co-authored-by: Linkie Link <linkielink.dev@gmail.com> * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * added hatched health masks (#552) * added hatched health masks * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * sneak: change filled to used * fix: fixed the foregroundColor on increase and my ocd * ♻️ refactor table (Farm) (#555) * ♻️ refactor table (Farm) * 🧽 clean up PR * 🧽 clean up PR * Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554) Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix: rename withdraw to unlend (#557) * Full refactor tables (#556) * 📈 Improve structure generic Table component * ♻️ Update Borrow Table and overall structure of Table comp * ♻️ Update Lend table * ✨ add loading state for lend table * 🧪 Fix unit tests * ✨ Add available HLS Vaults page (#558) * Table updates (#559) * fix: adjusted table colors and hover interactions * fix: added actionButtons back and changed lend to APY * fix: build update * tidy: fixed the CircularProgress indicators on the loading modals * fix: relative import * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * Mp 3480 persist last trading pair (#578) * MP-3480: remove favourite asset and prepare localStore * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * MP-3480: persist trading pair * fix: updated according to feedback * fix: remove pair from Trading View header --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com> * post update hotfixes (#580) * fix: fixed showing 0 on farm page if no desposited vaults * fix: chnage USDC’s name to Noble * v2.0.1 (#579) (#582) * Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544) Bumps @splinetool/runtime from 0.9.477 to 0.9.482. --- updated-dependencies: - dependency-name: "@splinetool/runtime" dependency-type: direct:production update-type: version-update:semver-patch ... * Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-minor ... * Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545) Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0. - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0) --- updated-dependencies: - dependency-name: "@sentry/nextjs" dependency-type: direct:production update-type: version-update:semver-minor ... * Mp 3245 usehlsvaults hook (#541) * ✨ routing and pages for HLS * ✨ create hooks for fetching HLS vaults and Strategies * Share accounts (#539) * feat: do not redirect to wallet on portfolio page * fix: use connected wallet for AccountMenu * fix: fixed ghost AccountDetails * feat: created ShareBar and share functionality * fix: don’t show shareBar if no address is present * fix: stupid 'next/navigation' * tidy: format * fix: fixed tests * ✨ routing and pages for HLS (#538) * 🐛 use useAccountIds * fix: fixed the tests * fix: accountIds is now a suspense --------- * 🐛 fix build --------- * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * added hatched health masks (#552) * added hatched health masks * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * sneak: change filled to used * fix: fixed the foregroundColor on increase and my ocd * ♻️ refactor table (Farm) (#555) * ♻️ refactor table (Farm) * 🧽 clean up PR * 🧽 clean up PR * Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554) Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... * fix: rename withdraw to unlend (#557) * Full refactor tables (#556) * 📈 Improve structure generic Table component * ♻️ Update Borrow Table and overall structure of Table comp * ♻️ Update Lend table * ✨ add loading state for lend table * 🧪 Fix unit tests * ✨ Add available HLS Vaults page (#558) * Table updates (#559) * fix: adjusted table colors and hover interactions * fix: added actionButtons back and changed lend to APY * fix: build update * tidy: fixed the CircularProgress indicators on the loading modals * fix: relative import * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * Mp 3480 persist last trading pair (#578) * MP-3480: remove favourite asset and prepare localStore * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * MP-3480: persist trading pair * fix: updated according to feedback * fix: remove pair from Trading View header --------- --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Linkie Link <linkielink.dev@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * v2.0.1 (#579) (#583) * Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544) Bumps @splinetool/runtime from 0.9.477 to 0.9.482. --- updated-dependencies: - dependency-name: "@splinetool/runtime" dependency-type: direct:production update-type: version-update:semver-patch ... * Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-minor ... * Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545) Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0. - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0) --- updated-dependencies: - dependency-name: "@sentry/nextjs" dependency-type: direct:production update-type: version-update:semver-minor ... * Mp 3245 usehlsvaults hook (#541) * ✨ routing and pages for HLS * ✨ create hooks for fetching HLS vaults and Strategies * Share accounts (#539) * feat: do not redirect to wallet on portfolio page * fix: use connected wallet for AccountMenu * fix: fixed ghost AccountDetails * feat: created ShareBar and share functionality * fix: don’t show shareBar if no address is present * fix: stupid 'next/navigation' * tidy: format * fix: fixed tests * ✨ routing and pages for HLS (#538) * 🐛 use useAccountIds * fix: fixed the tests * fix: accountIds is now a suspense --------- * 🐛 fix build --------- * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * added hatched health masks (#552) * added hatched health masks * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * sneak: change filled to used * fix: fixed the foregroundColor on increase and my ocd * ♻️ refactor table (Farm) (#555) * ♻️ refactor table (Farm) * 🧽 clean up PR * 🧽 clean up PR * Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554) Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... * fix: rename withdraw to unlend (#557) * Full refactor tables (#556) * 📈 Improve structure generic Table component * ♻️ Update Borrow Table and overall structure of Table comp * ♻️ Update Lend table * ✨ add loading state for lend table * 🧪 Fix unit tests * ✨ Add available HLS Vaults page (#558) * Table updates (#559) * fix: adjusted table colors and hover interactions * fix: added actionButtons back and changed lend to APY * fix: build update * tidy: fixed the CircularProgress indicators on the loading modals * fix: relative import * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * Mp 3480 persist last trading pair (#578) * MP-3480: remove favourite asset and prepare localStore * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * MP-3480: persist trading pair * fix: updated according to feedback * fix: remove pair from Trading View header --------- --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com> * Asset select overflow (#584) * v2.0.1 (#579) * Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544) Bumps @splinetool/runtime from 0.9.477 to 0.9.482. --- updated-dependencies: - dependency-name: "@splinetool/runtime" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545) Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0. - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0) --- updated-dependencies: - dependency-name: "@sentry/nextjs" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Mp 3245 usehlsvaults hook (#541) * ✨ routing and pages for HLS * ✨ create hooks for fetching HLS vaults and Strategies * Share accounts (#539) * feat: do not redirect to wallet on portfolio page * fix: use connected wallet for AccountMenu * fix: fixed ghost AccountDetails * feat: created ShareBar and share functionality * fix: don’t show shareBar if no address is present * fix: stupid 'next/navigation' * tidy: format * fix: fixed tests * ✨ routing and pages for HLS (#538) * 🐛 use useAccountIds * fix: fixed the tests * fix: accountIds is now a suspense --------- Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com> * 🐛 fix build --------- Co-authored-by: Linkie Link <linkielink.dev@gmail.com> * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * added hatched health masks (#552) * added hatched health masks * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * sneak: change filled to used * fix: fixed the foregroundColor on increase and my ocd * ♻️ refactor table (Farm) (#555) * ♻️ refactor table (Farm) * 🧽 clean up PR * 🧽 clean up PR * Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554) Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix: rename withdraw to unlend (#557) * Full refactor tables (#556) * 📈 Improve structure generic Table component * ♻️ Update Borrow Table and overall structure of Table comp * ♻️ Update Lend table * ✨ add loading state for lend table * 🧪 Fix unit tests * ✨ Add available HLS Vaults page (#558) * Table updates (#559) * fix: adjusted table colors and hover interactions * fix: added actionButtons back and changed lend to APY * fix: build update * tidy: fixed the CircularProgress indicators on the loading modals * fix: relative import * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * Mp 3480 persist last trading pair (#578) * MP-3480: remove favourite asset and prepare localStore * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * MP-3480: persist trading pair * fix: updated according to feedback * fix: remove pair from Trading View header --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com> * Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544) Bumps @splinetool/runtime from 0.9.477 to 0.9.482. --- updated-dependencies: - dependency-name: "@splinetool/runtime" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545) Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0. - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0) --- updated-dependencies: - dependency-name: "@sentry/nextjs" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Mp 3245 usehlsvaults hook (#541) * ✨ routing and pages for HLS * ✨ create hooks for fetching HLS vaults and Strategies * Share accounts (#539) * feat: do not redirect to wallet on portfolio page * fix: use connected wallet for AccountMenu * fix: fixed ghost AccountDetails * feat: created ShareBar and share functionality * fix: don’t show shareBar if no address is present * fix: stupid 'next/navigation' * tidy: format * fix: fixed tests * ✨ routing and pages for HLS (#538) * 🐛 use useAccountIds * fix: fixed the tests * fix: accountIds is now a suspense --------- Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com> * 🐛 fix build --------- Co-authored-by: Linkie Link <linkielink.dev@gmail.com> * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * added hatched health masks (#552) * added hatched health masks * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * sneak: change filled to used * fix: fixed the foregroundColor on increase and my ocd * ♻️ refactor table (Farm) (#555) * ♻️ refactor table (Farm) * 🧽 clean up PR * 🧽 clean up PR * fix: rename withdraw to unlend (#557) * Full refactor tables (#556) * 📈 Improve structure generic Table component * ♻️ Update Borrow Table and overall structure of Table comp * ♻️ Update Lend table * ✨ add loading state for lend table * 🧪 Fix unit tests * ✨ Add available HLS Vaults page (#558) * Table updates (#559) * fix: adjusted table colors and hover interactions * fix: added actionButtons back and changed lend to APY * fix: build update * tidy: fixed the CircularProgress indicators on the loading modals * fix: relative import * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * post update hotfixes (#580) * fix: fixed showing 0 on farm page if no desposited vaults * fix: chnage USDC’s name to Noble * v2.0.1 (#579) (#582) * Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544) Bumps @splinetool/runtime from 0.9.477 to 0.9.482. --- updated-dependencies: - dependency-name: "@splinetool/runtime" dependency-type: direct:production update-type: version-update:semver-patch ... * Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-minor ... * Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545) Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0. - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0) --- updated-dependencies: - dependency-name: "@sentry/nextjs" dependency-type: direct:production update-type: version-update:semver-minor ... * Mp 3245 usehlsvaults hook (#541) * ✨ routing and pages for HLS * ✨ create hooks for fetching HLS vaults and Strategies * Share accounts (#539) * feat: do not redirect to wallet on portfolio page * fix: use connected wallet for AccountMenu * fix: fixed ghost AccountDetails * feat: created ShareBar and share functionality * fix: don’t show shareBar if no address is present * fix: stupid 'next/navigation' * tidy: format * fix: fixed tests * ✨ routing and pages for HLS (#538) * 🐛 use useAccountIds * fix: fixed the tests * fix: accountIds is now a suspense --------- * 🐛 fix build --------- * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * added hatched health masks (#552) * added hatched health masks * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * sneak: change filled to used * fix: fixed the foregroundColor on increase and my ocd * ♻️ refactor table (Farm) (#555) * ♻️ refactor table (Farm) * 🧽 clean up PR * 🧽 clean up PR * Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554) Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... * fix: rename withdraw to unlend (#557) * Full refactor tables (#556) * 📈 Improve structure generic Table component * ♻️ Update Borrow Table and overall structure of Table comp * ♻️ Update Lend table * ✨ add loading state for lend table * 🧪 Fix unit tests * ✨ Add available HLS Vaults page (#558) * Table updates (#559) * fix: adjusted table colors and hover interactions * fix: added actionButtons back and changed lend to APY * fix: build update * tidy: fixed the CircularProgress indicators on the loading modals * fix: relative import * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * Mp 3480 persist last trading pair (#578) * MP-3480: remove favourite asset and prepare localStore * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * MP-3480: persist trading pair * fix: updated according to feedback * fix: remove pair from Trading View header --------- --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Linkie Link <linkielink.dev@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * v2.0.1 (#579) (#583) * Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544) Bumps @splinetool/runtime from 0.9.477 to 0.9.482. --- updated-dependencies: - dependency-name: "@splinetool/runtime" dependency-type: direct:production update-type: version-update:semver-patch ... * Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-minor ... * Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545) Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0. - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0) --- updated-dependencies: - dependency-name: "@sentry/nextjs" dependency-type: direct:production update-type: version-update:semver-minor ... * Mp 3245 usehlsvaults hook (#541) * ✨ routing and pages for HLS * ✨ create hooks for fetching HLS vaults and Strategies * Share accounts (#539) * feat: do not redirect to wallet on portfolio page * fix: use connected wallet for AccountMenu * fix: fixed ghost AccountDetails * feat: created ShareBar and share functionality * fix: don’t show shareBar if no address is present * fix: stupid 'next/navigation' * tidy: format * fix: fixed tests * ✨ routing and pages for HLS (#538) * 🐛 use useAccountIds * fix: fixed the tests * fix: accountIds is now a suspense --------- * 🐛 fix build --------- * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * added hatched health masks (#552) * added hatched health masks * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * sneak: change filled to used * fix: fixed the foregroundColor on increase and my ocd * ♻️ refactor table (Farm) (#555) * ♻️ refactor table (Farm) * 🧽 clean up PR * 🧽 clean up PR * Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554) Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... * fix: rename withdraw to unlend (#557) * Full refactor tables (#556) * 📈 Improve structure generic Table component * ♻️ Update Borrow Table and overall structure of Table comp * ♻️ Update Lend table * ✨ add loading state for lend table * 🧪 Fix unit tests * ✨ Add available HLS Vaults page (#558) * Table updates (#559) * fix: adjusted table colors and hover interactions * fix: added actionButtons back and changed lend to APY * fix: build update * tidy: fixed the CircularProgress indicators on the loading modals * fix: relative import * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * Mp 3480 persist last trading pair (#578) * MP-3480: remove favourite asset and prepare localStore * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * MP-3480: persist trading pair * fix: updated according to feedback * fix: remove pair from Trading View header --------- --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com> * fix: fixed the asset select overflow --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com> * fix: fixed the AccountDetails position * fix: update * Hotfixes v2.0.1 (#581) (#585) * Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544) Bumps @splinetool/runtime from 0.9.477 to 0.9.482. --- updated-dependencies: - dependency-name: "@splinetool/runtime" dependency-type: direct:production update-type: version-update:semver-patch ... * Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-minor ... * Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545) Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0. - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0) --- updated-dependencies: - dependency-name: "@sentry/nextjs" dependency-type: direct:production update-type: version-update:semver-minor ... * Mp 3245 usehlsvaults hook (#541) * ✨ routing and pages for HLS * ✨ create hooks for fetching HLS vaults and Strategies * Share accounts (#539) * feat: do not redirect to wallet on portfolio page * fix: use connected wallet for AccountMenu * fix: fixed ghost AccountDetails * feat: created ShareBar and share functionality * fix: don’t show shareBar if no address is present * fix: stupid 'next/navigation' * tidy: format * fix: fixed tests * ✨ routing and pages for HLS (#538) * 🐛 use useAccountIds * fix: fixed the tests * fix: accountIds is now a suspense --------- * 🐛 fix build --------- * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * added hatched health masks (#552) * added hatched health masks * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * sneak: change filled to used * fix: fixed the foregroundColor on increase and my ocd * ♻️ refactor table (Farm) (#555) * ♻️ refactor table (Farm) * 🧽 clean up PR * 🧽 clean up PR * Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554) Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... * fix: rename withdraw to unlend (#557) * Full refactor tables (#556) * 📈 Improve structure generic Table component * ♻️ Update Borrow Table and overall structure of Table comp * ♻️ Update Lend table * ✨ add loading state for lend table * 🧪 Fix unit tests * ✨ Add available HLS Vaults page (#558) * Table updates (#559) * fix: adjusted table colors and hover interactions * fix: added actionButtons back and changed lend to APY * fix: build update * tidy: fixed the CircularProgress indicators on the loading modals * fix: relative import * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * Mp 3480 persist last trading pair (#578) * MP-3480: remove favourite asset and prepare localStore * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * MP-3480: persist trading pair * fix: updated according to feedback * fix: remove pair from Trading View header --------- * post update hotfixes (#580) * fix: fixed showing 0 on farm page if no desposited vaults * fix: chnage USDC’s name to Noble * v2.0.1 (#579) (#582) * Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544) Bumps @splinetool/runtime from 0.9.477 to 0.9.482. --- updated-dependencies: - dependency-name: "@splinetool/runtime" dependency-type: direct:production update-type: version-update:semver-patch ... * Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-minor ... * Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545) Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0. - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0) --- updated-dependencies: - dependency-name: "@sentry/nextjs" dependency-type: direct:production update-type: version-update:semver-minor ... * Mp 3245 usehlsvaults hook (#541) * ✨ routing and pages for HLS * ✨ create hooks for fetching HLS vaults and Strategies * Share accounts (#539) * feat: do not redirect to wallet on portfolio page * fix: use connected wallet for AccountMenu * fix: fixed ghost AccountDetails * feat: created ShareBar and share functionality * fix: don’t show shareBar if no address is present * fix: stupid 'next/navigation' * tidy: format * fix: fixed tests * ✨ routing and pages for HLS (#538) * 🐛 use useAccountIds * fix: fixed the tests * fix: accountIds is now a suspense --------- * 🐛 fix build --------- * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * added hatched health masks (#552) * added hatched health masks * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * sneak: change filled to used * fix: fixed the foregroundColor on increase and my ocd * ♻️ refactor table (Farm) (#555) * ♻️ refactor table (Farm) * 🧽 clean up PR * 🧽 clean up PR * Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554) Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... * fix: rename withdraw to unlend (#557) * Full refactor tables (#556) * 📈 Improve structure generic Table component * ♻️ Update Borrow Table and overall structure of Table comp * ♻️ Update Lend table * ✨ add loading state for lend table * 🧪 Fix unit tests * ✨ Add available HLS Vaults page (#558) * Table updates (#559) * fix: adjusted table colors and hover interactions * fix: added actionButtons back and changed lend to APY * fix: build update * tidy: fixed the CircularProgress indicators on the loading modals * fix: relative import * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * Mp 3480 persist last trading pair (#578) * MP-3480: remove favourite asset and prepare localStore * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * MP-3480: persist trading pair * fix: updated according to feedback * fix: remove pair from Trading View header --------- --------- * v2.0.1 (#579) (#583) * Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544) Bumps @splinetool/runtime from 0.9.477 to 0.9.482. --- updated-dependencies: - dependency-name: "@splinetool/runtime" dependency-type: direct:production update-type: version-update:semver-patch ... * Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-minor ... * Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545) Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0. - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0) --- updated-dependencies: - dependency-name: "@sentry/nextjs" dependency-type: direct:production update-type: version-update:semver-minor ... * Mp 3245 usehlsvaults hook (#541) * ✨ routing and pages for HLS * ✨ create hooks for fetching HLS vaults and Strategies * Share accounts (#539) * feat: do not redirect to wallet on portfolio page * fix: use connected wallet for AccountMenu * fix: fixed ghost AccountDetails * feat: created ShareBar and share functionality * fix: don’t show shareBar if no address is present * fix: stupid 'next/navigation' * tidy: format * fix: fixed tests * ✨ routing and pages for HLS (#538) * 🐛 use useAccountIds * fix: fixed the tests * fix: accountIds is now a suspense --------- * 🐛 fix build --------- * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * added hatched health masks (#552) * added hatched health masks * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * sneak: change filled to used * fix: fixed the foregroundColor on increase and my ocd * ♻️ refactor table (Farm) (#555) * ♻️ refactor table (Farm) * 🧽 clean up PR * 🧽 clean up PR * Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554) Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... * fix: rename withdraw to unlend (#557) * Full refactor tables (#556) * 📈 Improve structure generic Table component * ♻️ Update Borrow Table and overall structure of Table comp * ♻️ Update Lend table * ✨ add loading state for lend table * 🧪 Fix unit tests * ✨ Add available HLS Vaults page (#558) * Table updates (#559) * fix: adjusted table colors and hover interactions * fix: added actionButtons back and changed lend to APY * fix: build update * tidy: fixed the CircularProgress indicators on the loading modals * fix: relative import * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * Mp 3480 persist last trading pair (#578) * MP-3480: remove favourite asset and prepare localStore * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * MP-3480: persist trading pair * fix: updated according to feedback * fix: remove pair from Trading View header --------- --------- * Asset select overflow (#584) * v2.0.1 (#579) * Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544) Bumps @splinetool/runtime from 0.9.477 to 0.9.482. --- updated-dependencies: - dependency-name: "@splinetool/runtime" dependency-type: direct:production update-type: version-update:semver-patch ... * Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-minor ... * Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545) Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0. - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0) --- updated-dependencies: - dependency-name: "@sentry/nextjs" dependency-type: direct:production update-type: version-update:semver-minor ... * Mp 3245 usehlsvaults hook (#541) * ✨ routing and pages for HLS * ✨ create hooks for fetching HLS vaults and Strategies * Share accounts (#539) * feat: do not redirect to wallet on portfolio page * fix: use connected wallet for AccountMenu * fix: fixed ghost AccountDetails * feat: created ShareBar and share functionality * fix: don’t show shareBar if no address is present * fix: stupid 'next/navigation' * tidy: format * fix: fixed tests * ✨ routing and pages for HLS (#538) * 🐛 use useAccountIds * fix: fixed the tests * fix: accountIds is now a suspense --------- * 🐛 fix build --------- * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * added hatched health masks (#552) * added hatched health masks * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * sneak: change filled to used * fix: fixed the foregroundColor on increase and my ocd * ♻️ refactor table (Farm) (#555) * ♻️ refactor table (Farm) * 🧽 clean up PR * 🧽 clean up PR * Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554) Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... * fix: rename withdraw to unlend (#557) * Full refactor tables (#556) * 📈 Improve structure generic Table component * ♻️ Update Borrow Table and overall structure of Table comp * ♻️ Update Lend table * ✨ add loading state for lend table * 🧪 Fix unit tests * ✨ Add available HLS Vaults page (#558) * Table updates (#559) * fix: adjusted table colors and hover interactions * fix: added actionButtons back and changed lend to APY * fix: build update * tidy: fixed the CircularProgress indicators on the loading modals * fix: relative import * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * Mp 3480 persist last trading pair (#578) * MP-3480: remove favourite asset and prepare localStore * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * MP-3480: persist trading pair * fix: updated according to feedback * fix: remove pair from Trading View header --------- --------- * Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544) Bumps @splinetool/runtime from 0.9.477 to 0.9.482. --- updated-dependencies: - dependency-name: "@splinetool/runtime" dependency-type: direct:production update-type: version-update:semver-patch ... * Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-minor ... * Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545) Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0. - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0) --- updated-dependencies: - dependency-name: "@sentry/nextjs" dependency-type: direct:production update-type: version-update:semver-minor ... * Mp 3245 usehlsvaults hook (#541) * ✨ routing and pages for HLS * ✨ create hooks for fetching HLS vaults and Strategies * Share accounts (#539) * feat: do not redirect to wallet on portfolio page * fix: use connected wallet for AccountMenu * fix: fixed ghost AccountDetails * feat: created ShareBar and share functionality * fix: don’t show shareBar if no address is present * fix: stupid 'next/navigation' * tidy: format * fix: fixed tests * ✨ routing and pages for HLS (#538) * 🐛 use useAccountIds * fix: fixed the tests * fix: accountIds is now a suspense --------- * 🐛 fix build --------- * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * added hatched health masks (#552) * added hatched health masks * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * sneak: change filled to used * fix: fixed the foregroundColor on increase and my ocd * ♻️ refactor table (Farm) (#555) * ♻️ refactor table (Farm) * 🧽 clean up PR * 🧽 clean up PR * fix: rename withdraw to unlend (#557) * Full refactor tables (#556) * 📈 Improve structure generic Table component * ♻️ Update Borrow Table and overall structure of Table comp * ♻️ Update Lend table * ✨ add loading state for lend table * 🧪 Fix unit tests * ✨ Add available HLS Vaults page (#558) * Table updates (#559) * fix: adjusted table colors and hover interactions * fix: added actionButtons back and changed lend to APY * fix: build update * tidy: fixed the CircularProgress indicators on the loading modals * fix: relative import * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * post update hotfixes (#580) * fix: fixed showing 0 on farm page if no desposited vaults * fix: chnage USDC’s name to Noble * v2.0.1 (#579) (#582) * Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544) Bumps @splinetool/runtime from 0.9.477 to 0.9.482. --- updated-dependencies: - dependency-name: "@splinetool/runtime" dependency-type: direct:production update-type: version-update:semver-patch ... * Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-minor ... * Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545) Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0. - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0) --- updated-dependencies: - dependency-name: "@sentry/nextjs" dependency-type: direct:production update-type: version-update:semver-minor ... * Mp 3245 usehlsvaults hook (#541) * ✨ routing and pages for HLS * ✨ create hooks for fetching HLS vaults and Strategies * Share accounts (#539) * feat: do not redirect to wallet on portfolio page * fix: use connected wallet for AccountMenu * fix: fixed ghost AccountDetails * feat: created ShareBar and share functionality * fix: don’t show shareBar if no address is present * fix: stupid 'next/navigation' * tidy: format * fix: fixed tests * ✨ routing and pages for HLS (#538) * 🐛 use useAccountIds * fix: fixed the tests * fix: accountIds is now a suspense --------- * 🐛 fix build --------- * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * added hatched health masks (#552) * added hatched health masks * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * sneak: change filled to used * fix: fixed the foregroundColor on increase and my ocd * ♻️ refactor table (Farm) (#555) * ♻️ refactor table (Farm) * 🧽 clean up PR * 🧽 clean up PR * Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554) Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... * fix: rename withdraw to unlend (#557) * Full refactor tables (#556) * 📈 Improve structure generic Table component * ♻️ Update Borrow Table and overall structure of Table comp * ♻️ Update Lend table * ✨ add loading state for lend table * 🧪 Fix unit tests * ✨ Add available HLS Vaults page (#558) * Table updates (#559) * fix: adjusted table colors and hover interactions * fix: added actionButtons back and changed lend to APY * fix: build update * tidy: fixed the CircularProgress indicators on the loading modals * fix: relative import * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * Mp 3480 persist last trading pair (#578) * MP-3480: remove favourite asset and prepare localStore * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * MP-3480: persist trading pair * fix: updated according to feedback * fix: remove pair from Trading View header --------- --------- * v2.0.1 (#579) (#583) * Build(deps): bump @splinetool/runtime from 0.9.477 to 0.9.482 (#544) Bumps @splinetool/runtime from 0.9.477 to 0.9.482. --- updated-dependencies: - dependency-name: "@splinetool/runtime" dependency-type: direct:production update-type: version-update:semver-patch ... * Build(deps-dev): bump @types/node from 20.7.0 to 20.8.6 (#548) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.7.0 to 20.8.6. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-minor ... * Build(deps): bump @sentry/nextjs from 7.73.0 to 7.74.0 (#545) Bumps [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) from 7.73.0 to 7.74.0. - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.73.0...7.74.0) --- updated-dependencies: - dependency-name: "@sentry/nextjs" dependency-type: direct:production update-type: version-update:semver-minor ... * Mp 3245 usehlsvaults hook (#541) * ✨ routing and pages for HLS * ✨ create hooks for fetching HLS vaults and Strategies * Share accounts (#539) * feat: do not redirect to wallet on portfolio page * fix: use connected wallet for AccountMenu * fix: fixed ghost AccountDetails * feat: created ShareBar and share functionality * fix: don’t show shareBar if no address is present * fix: stupid 'next/navigation' * tidy: format * fix: fixed tests * ✨ routing and pages for HLS (#538) * 🐛 use useAccountIds * fix: fixed the tests * fix: accountIds is now a suspense --------- * 🐛 fix build --------- * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * added hatched health masks (#552) * added hatched health masks * Mp 2837 pre commit hook (#549) * MP-2837: added husys and lint-staged * MP-2837: enabled lint-staged * MP-2837: setup .prettierignore * MP-2837: setup .prettierignore * MP-3483: all Depo. Caps are now % filled (#551) * MP-3487: changed the copy of the bridging intro screen (#553) * MP-3482: replaced Max LTV with Max. Leverage (#550) * sneak: change filled to used * fix: fixed the foregroundColor on increase and my ocd * ♻️ refactor table (Farm) (#555) * ♻️ refactor table (Farm) * 🧽 clean up PR * 🧽 clean up PR * Build(deps): bump @babel/traverse from 7.21.2 to 7.23.2 (#554) Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.2 to 7.23.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... * fix: rename withdraw to unlend (#557) * Full refactor tables (#556) * 📈 Improve structure generic Table component * ♻️ Update Borrow Table and overall structure of Table comp * ♻️ Update Lend table * ✨ add loading state for lend table * 🧪 Fix unit tests * ✨ Add available HLS Vaults page (#558) * Table updates (#559) * fix: adjusted table colors and hover interactions * fix: added actionButtons back and changed lend to APY * fix: build update * tidy: fixed the CircularProgress indicators on the loading modals * fix: relative import * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * Mp 3480 persist last trading pair (#578) * MP-3480: remove favourite asset and prepare localStore * env: updated shuttle, keplr and version (#566) * fix: fixed dust left when trying to buy max amount without leverage (#565) * feat: added squidrouter to the bridges (#561) * feat: added squidrouter to the bridges * fix: copy update * MP-3521: updated the APR calculation (#572) * Table fixes (#563) * fix: fixed the sorting of the tables * fix: added sorting functions * fix: farm sorting for deposit cap * fix: fixed Row types * Build(deps-dev): bump prettier-plugin-tailwindcss from 0.5.5 to 0.5.6 (#567) Bumps [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) from 0.5.5 to 0.5.6. - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.5.5...v0.5.6) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch ... * Build(deps): bump react-router-dom from 6.16.0 to 6.17.0 (#571) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.16.0 to 6.17.0. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.17.0/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-minor ... * ✨ HLS: Add info modal (#573) * MP-3484: remember summaryAccount tabs and auto expand both (#574) * User feedback (#575) * feat: added debt indicator and adjusted the borrowModal * fix: wallet interaction fix * Add usdc noble (#576) * env: added USDC.n * env: updated usdc noble variables * fix: fixed the pool on USDC for devnet purposes * 🐛 Fix initial status of chart (#577) * MP-3480: persist trading pair * fix: updated according to feedback * fix: remove pair from Trading View header --------- --------- * fix: fixed the asset select overflow --------- * fix: fixed the AccountDetails position * fix: update --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix: prevent permanent account updates by trade page (#587) * fix: keep the selected accountId if its present int the url (#588) * Link changelog (#589) * env: update RPC endpoint * feat: added changelog link to the footer version * Refactor balances table (#590) * env: update env.example after last sync * tidy: refactored AccountBalancesTable * fix: updated isCard to hideCard * fix: do update the health on sliding the margin back to 0 (#593) * fix: disable highlighting on non-expandable rows (#592) * Healthfactor adjustments (#594) * fix: do update the health on sliding the margin back to 0 * MP-3531: first updates on the health bars * fix: added exponential function for health percentage * fix: build fix * tidy: refactor * tidy: cleanup * feat: added new curve * fix: base set to 3.5 * env: version update * 🌟 Add HLS Vault Modal (#595) * 🌟 Add HLS Vault Modal * 🛠️ Fix failing build * fix: keep the selected accountId if its present int the url (#588) * Link changelog (#589) * env: update RPC endpoint * feat: added changelog link to the footer version * Refactor balances table (#590) * env: update env.example after last sync * tidy: refactored AccountBalancesTable * fix: updated isCard to hideCard * fix: do update the health on sliding the margin back to 0 (#593) * fix: disable highlighting on non-expandable rows (#592) * Healthfactor adjustments (#594) * fix: do update the health on sliding the margin back to 0 * MP-3531: first updates on the health bars * fix: added exponential function for health percentage * fix: build fix * tidy: refactor * tidy: cleanup * feat: added new curve * fix: base set to 3.5 * env: version update * 🌟 Add HLS Vault Modal * Use `DisplayCurrency` in subtitle header * 🔥Remove redundant component --------- Co-authored-by: Linkie Link <linkielink.dev@gmail.com> * fix: if HF > 1 and health === 0, return health 1 (#601) * MP-3540: added liquidity warning (#605) * Oracle update button (#606) * feat: added a resync button to the header * fix: updated the text * fix: remove pulsing * fix: fixed the checkbox not being clickable after select (#608) * Mp 3360 create vault position (#607) * 🔧 Small fixes * ✨ Deposit into HLS Vault + Groudnwork for HLS Staking * Adjusted according to feedback * Adjusted according to feedback * Build(deps-dev): bump eslint-config-next from 13.5.4 to 14.0.0 (#599) Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 13.5.4 to 14.0.0. - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/commits/v14.0.0/packages/eslint-config-next) --- updated-dependencies: - dependency-name: eslint-config-next dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build(deps): bump recharts from 2.8.0 to 2.9.0 (#598) Bumps [recharts](https://github.com/recharts/recharts) from 2.8.0 to 2.9.0. - [Release notes](https://github.com/recharts/recharts/releases) - [Changelog](https://github.com/recharts/recharts/blob/master/CHANGELOG.md) - [Commits](https://github.com/recharts/recharts/compare/v2.8.0...v2.9.0) --- updated-dependencies: - dependency-name: recharts dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build(deps-dev): bump @types/react from 18.2.28 to 18.2.33 (#596) Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.2.28 to 18.2.33. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) --- updated-dependencies: - dependency-name: "@types/react" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build(deps): bump crypto-js from 4.1.1 to 4.2.0 (#591) Bumps [crypto-js](https://github.com/brix/crypto-js) from 4.1.1 to 4.2.0. - [Commits](https://github.com/brix/crypto-js/compare/4.1.1...4.2.0) --- updated-dependencies: - dependency-name: crypto-js dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Build(deps-dev): bump @types/lodash.throttle from 4.1.7 to 4.1.8 (#569) Bumps [@types/lodash.throttle](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash.throttle) from 4.1.7 to 4.1.8. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash.throttle) --- updated-dependencies: - dependency-name: "@types/lodash.throttle" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix: waiting for script to be ready (#609) * fix: show a loading state of the trading chart (#610) * fix: show a loading state of the trading chart * tidy: refactor * Feedback implementation (#611) * env: update wallet volnurabilities * fix: always render TradingChart container * fix: amounts can be a fraction of MIN_AMOUNT * feat: added clickaway handler * tidy: refactor * fix: size below 0.00001 is possible for BTC and WETH * fix: fixed tests * Mp 3367 staking interactions (#613) * ♻️ Refactor borrowRate to be in full numbers * ✨Enter into HLS Staking strategy * ✨HLS Staking deposited table + Portfolio pages * tidy: refactored the masks for HealthBar --------- Co-authored-by: Linkie Link <linkielink.dev@gmail.com> * ✨Added dropdown button (#614) * ✨Add basic modal for HLS staking (#615) * Hls staking manage actions (#622) * ✨Add basic modal for HLS staking * ✨UI components for Manage * ✨All Manage actions (except change lev) * 🐛hls intro icons + checkbox, hide repay when no debt, clickable dropdown * fix build * Pyth history feed (#623) * MP-3556: first PythDataFeed class * fix: fixed the timestamp * fix: fixed the chart data * fix: fixed the prices * fix: fixed the math and decimal scale * tidy: refactor * fix: update the pythFeedId * fix: updated OsmosisTheGraphDataFeed * fix: add a fallback for non pyth data * tidy: refactor * fix: adjusted to feedback --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com>
This commit is contained in:
parent
e4b145bf75
commit
e0ed58a388
@ -28,7 +28,8 @@ NEXT_PUBLIC_ZAPPER=osmo17qwvc70pzc9mudr8t02t3pl74hhqsgwnskl734p4hug3s8mkerdqzduf
|
|||||||
NEXT_PUBLIC_PARAMS=osmo1nlmdxt9ctql2jr47qd4fpgzg84cjswxyw6q99u4y4u4q6c2f5ksq7ysent
|
NEXT_PUBLIC_PARAMS=osmo1nlmdxt9ctql2jr47qd4fpgzg84cjswxyw6q99u4y4u4q6c2f5ksq7ysent
|
||||||
NEXT_PUBLIC_PYTH_ENDPOINT=https://hermes.pyth.network/api
|
NEXT_PUBLIC_PYTH_ENDPOINT=https://hermes.pyth.network/api
|
||||||
NEXT_PUBLIC_MAINNET_REST=https://osmosis-node.marsprotocol.io/GGSFGSFGFG34/osmosis-rpc-front/
|
NEXT_PUBLIC_MAINNET_REST=https://osmosis-node.marsprotocol.io/GGSFGSFGFG34/osmosis-rpc-front/
|
||||||
NEXT_PUBLIC_CANDLES_ENDPOINT=https://osmosis-candles.marsprotocol.io/
|
NEXT_PUBLIC_CANDLES_ENDPOINT_THE_GRAPH=https://osmosis-candles.marsprotocol.io/
|
||||||
|
NEXT_PUBLIC_CANDLES_ENDPOINT_PYTH=https://benchmarks.pyth.network
|
||||||
NEXT_PUBLIC_WALLET_CONNECT_ID=d93fdffb159bae5ec87d8fee4cdbb045
|
NEXT_PUBLIC_WALLET_CONNECT_ID=d93fdffb159bae5ec87d8fee4cdbb045
|
||||||
CHARTING_LIBRARY_REPOSITORY=github.com/tradingview/charting_library
|
CHARTING_LIBRARY_REPOSITORY=github.com/tradingview/charting_library
|
||||||
CHARTING_LIBRARY_ACCESS_TOKEN=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
|
CHARTING_LIBRARY_ACCESS_TOKEN=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
|
||||||
|
@ -13,12 +13,10 @@ export default async function getHLSStakingAccounts(
|
|||||||
const hlsAccountsWithStrategy: HLSAccountWithStrategy[] = []
|
const hlsAccountsWithStrategy: HLSAccountWithStrategy[] = []
|
||||||
|
|
||||||
activeAccounts.forEach((account) => {
|
activeAccounts.forEach((account) => {
|
||||||
if (account.deposits.length === 0 || account.debts.length === 0) return
|
if (account.deposits.length === 0) return
|
||||||
|
|
||||||
const strategy = hlsStrategies.find(
|
const strategy = hlsStrategies.find(
|
||||||
(strategy) =>
|
(strategy) => strategy.denoms.deposit === account.deposits.at(0).denom,
|
||||||
strategy.denoms.deposit === account.deposits.at(0).denom &&
|
|
||||||
strategy.denoms.borrow === account.debts.at(0).denom,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if (!strategy) return
|
if (!strategy) return
|
||||||
|
@ -1,10 +1,5 @@
|
|||||||
import { getSwapperQueryClient } from 'api/cosmwasm-client'
|
import { getSwapperQueryClient } from 'api/cosmwasm-client'
|
||||||
|
|
||||||
interface Route {
|
|
||||||
pool_id: string
|
|
||||||
token_out_denom: string
|
|
||||||
}
|
|
||||||
|
|
||||||
export default async function getSwapRoute(denomIn: string, denomOut: string): Promise<Route[]> {
|
export default async function getSwapRoute(denomIn: string, denomOut: string): Promise<Route[]> {
|
||||||
try {
|
try {
|
||||||
const swapperClient = await getSwapperQueryClient()
|
const swapperClient = await getSwapperQueryClient()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import React, { useMemo } from 'react'
|
import React, { ReactElement, useMemo } from 'react'
|
||||||
|
|
||||||
import { CircularProgress } from 'components/CircularProgress'
|
import { CircularProgress } from 'components/CircularProgress'
|
||||||
import Text from 'components/Text'
|
import Text from 'components/Text'
|
||||||
@ -8,7 +8,7 @@ import { BN } from 'utils/helpers'
|
|||||||
interface Props {
|
interface Props {
|
||||||
health: number
|
health: number
|
||||||
healthFactor: number
|
healthFactor: number
|
||||||
children: React.ReactNode
|
children: ReactElement
|
||||||
}
|
}
|
||||||
|
|
||||||
function HealthTooltipContent({ health, healthFactor }: { health: number; healthFactor: number }) {
|
function HealthTooltipContent({ health, healthFactor }: { health: number; healthFactor: number }) {
|
||||||
|
@ -2,7 +2,7 @@ import { useCallback } from 'react'
|
|||||||
|
|
||||||
import Button from 'components/Button'
|
import Button from 'components/Button'
|
||||||
import ActionButton from 'components/Button/ActionButton'
|
import ActionButton from 'components/Button/ActionButton'
|
||||||
import { Plus, ReceiptCheck } from 'components/Icons'
|
import { HandCoins, Plus } from 'components/Icons'
|
||||||
import useStore from 'store'
|
import useStore from 'store'
|
||||||
import { getEnabledMarketAssets } from 'utils/assets'
|
import { getEnabledMarketAssets } from 'utils/assets'
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ export default function BorrowActionButtons(props: Props) {
|
|||||||
className='min-w-40 text-center'
|
className='min-w-40 text-center'
|
||||||
/>
|
/>
|
||||||
{debt && (
|
{debt && (
|
||||||
<Button color='tertiary' leftIcon={<ReceiptCheck />} text='Repay' onClick={repayHandler} />
|
<Button color='tertiary' leftIcon={<HandCoins />} text='Repay' onClick={repayHandler} />
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
@ -2,6 +2,7 @@ import Button from 'components/Button'
|
|||||||
import { ChevronDown } from 'components/Icons'
|
import { ChevronDown } from 'components/Icons'
|
||||||
import Text from 'components/Text'
|
import Text from 'components/Text'
|
||||||
import { Tooltip } from 'components/Tooltip'
|
import { Tooltip } from 'components/Tooltip'
|
||||||
|
import useToggle from 'hooks/useToggle'
|
||||||
|
|
||||||
interface Props extends ButtonProps {
|
interface Props extends ButtonProps {
|
||||||
items: DropDownItem[]
|
items: DropDownItem[]
|
||||||
@ -9,6 +10,7 @@ interface Props extends ButtonProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default function DropDownButton(props: Props) {
|
export default function DropDownButton(props: Props) {
|
||||||
|
const [isOpen, toggleIsOpen] = useToggle(false)
|
||||||
return (
|
return (
|
||||||
<Tooltip
|
<Tooltip
|
||||||
content={<DropDown {...props} />}
|
content={<DropDown {...props} />}
|
||||||
@ -17,8 +19,15 @@ export default function DropDownButton(props: Props) {
|
|||||||
contentClassName='!bg-white/10 border border-white/20 backdrop-blur-xl !p-0'
|
contentClassName='!bg-white/10 border border-white/20 backdrop-blur-xl !p-0'
|
||||||
interactive
|
interactive
|
||||||
hideArrow
|
hideArrow
|
||||||
|
visible={isOpen}
|
||||||
|
onClickOutside={() => toggleIsOpen(false)}
|
||||||
>
|
>
|
||||||
<Button rightIcon={<ChevronDown />} iconClassName='w-3 h-3' {...props} />
|
<Button
|
||||||
|
onClick={() => toggleIsOpen()}
|
||||||
|
rightIcon={<ChevronDown />}
|
||||||
|
iconClassName='w-3 h-3'
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -43,7 +52,7 @@ function DropDownItem(props: DropDownItem) {
|
|||||||
onClick={props.onClick}
|
onClick={props.onClick}
|
||||||
className=' px-4 py-3 flex gap-2 items-center hover:bg-white/5 w-full [&:not(:last-child)]:border-b border-white/10'
|
className=' px-4 py-3 flex gap-2 items-center hover:bg-white/5 w-full [&:not(:last-child)]:border-b border-white/10'
|
||||||
>
|
>
|
||||||
<div className='h-5 w-5 flex justify-center'>{props.icon}</div>
|
<div className='flex justify-center w-5 h-5'>{props.icon}</div>
|
||||||
<Text size='sm'>{props.text}</Text>
|
<Text size='sm'>{props.text}</Text>
|
||||||
</button>
|
</button>
|
||||||
)
|
)
|
||||||
|
@ -13,13 +13,9 @@ interface Props {
|
|||||||
export default function Checkbox(props: Props) {
|
export default function Checkbox(props: Props) {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<label
|
<label className='flex items-center gap-2 border-white cursor-pointer'>
|
||||||
className='flex items-center gap-2 border-white cursor-pointer'
|
|
||||||
htmlFor={`${props.name}-id}`}
|
|
||||||
>
|
|
||||||
<input
|
<input
|
||||||
onChange={() => props.onChange(props.checked)}
|
onChange={() => props.onChange(props.checked)}
|
||||||
id={`${props.name}-id`}
|
|
||||||
name={props.name}
|
name={props.name}
|
||||||
checked={props.checked}
|
checked={props.checked}
|
||||||
type='checkbox'
|
type='checkbox'
|
||||||
|
@ -2,7 +2,7 @@ import classNames from 'classnames'
|
|||||||
import { useCallback } from 'react'
|
import { useCallback } from 'react'
|
||||||
|
|
||||||
import ActionButton from 'components/Button/ActionButton'
|
import ActionButton from 'components/Button/ActionButton'
|
||||||
import { Enter } from 'components/Icons'
|
import { Circle, Enter, TrashBin, Wallet } from 'components/Icons'
|
||||||
import Loading from 'components/Loading'
|
import Loading from 'components/Loading'
|
||||||
import Text from 'components/Text'
|
import Text from 'components/Text'
|
||||||
import { LocalStorageKeys } from 'constants/localStorageKeys'
|
import { LocalStorageKeys } from 'constants/localStorageKeys'
|
||||||
@ -91,18 +91,18 @@ export default function Deposit(props: Props) {
|
|||||||
|
|
||||||
const INFO_ITEMS = [
|
const INFO_ITEMS = [
|
||||||
{
|
{
|
||||||
icon: <Enter width={16} height={16} />,
|
icon: <Circle />,
|
||||||
title: 'One account, one position',
|
title: 'One account, one position',
|
||||||
description:
|
description:
|
||||||
'A minted HLS account can only have a single position tied to it, in order to limit risk.',
|
'A minted HLS account can only have a single position tied to it, in order to limit risk.',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: <Enter />,
|
icon: <Wallet />,
|
||||||
title: 'Funded from your wallet',
|
title: 'Funded from your wallet',
|
||||||
description: 'To fund your HLS position, funds will have to come directly from your wallet.',
|
description: 'To fund your HLS position, funds will have to come directly from your wallet.',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: <Enter />,
|
icon: <TrashBin />,
|
||||||
title: 'Accounts are reusable',
|
title: 'Accounts are reusable',
|
||||||
description:
|
description:
|
||||||
'If you exited a position from a minted account, this account can be reused for a new position.',
|
'If you exited a position from a minted account, this account can be reused for a new position.',
|
||||||
|
@ -1,32 +1,68 @@
|
|||||||
import React from 'react'
|
import React, { useCallback, useMemo } from 'react'
|
||||||
|
|
||||||
import DropDownButton from 'components/Button/DropDownButton'
|
import DropDownButton from 'components/Button/DropDownButton'
|
||||||
import { ArrowDownLine, HandCoins, Plus } from 'components/Icons'
|
import { ArrowDownLine, Cross, HandCoins, Plus, Scale } from 'components/Icons'
|
||||||
|
import useCloseHlsStakingPosition from 'hooks/HLS/useClosePositionActions'
|
||||||
|
import useStore from 'store'
|
||||||
|
|
||||||
export const MANAGE_META = { id: 'manage' }
|
export const MANAGE_META = { id: 'manage' }
|
||||||
|
|
||||||
const ITEMS: DropDownItem[] = [
|
|
||||||
{
|
|
||||||
icon: <Plus width={16} />,
|
|
||||||
text: 'Deposit more',
|
|
||||||
onClick: () => {},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: <HandCoins />,
|
|
||||||
text: 'Repay',
|
|
||||||
onClick: () => {},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: <ArrowDownLine />,
|
|
||||||
text: 'Withdraw',
|
|
||||||
onClick: () => {},
|
|
||||||
},
|
|
||||||
]
|
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
account: HLSAccountWithStrategy
|
account: HLSAccountWithStrategy
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function Manage(props: Props) {
|
export default function Manage(props: Props) {
|
||||||
|
const openModal = useCallback(
|
||||||
|
(action: HlsStakingManageAction) =>
|
||||||
|
useStore.setState({
|
||||||
|
hlsManageModal: {
|
||||||
|
accountId: props.account.id,
|
||||||
|
staking: { strategy: props.account.strategy, action },
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
[props.account.id, props.account.strategy],
|
||||||
|
)
|
||||||
|
|
||||||
|
const actions = useCloseHlsStakingPosition({ account: props.account })
|
||||||
|
|
||||||
|
const closeHlsStakingPosition = useStore((s) => s.closeHlsStakingPosition)
|
||||||
|
|
||||||
|
const hasNoDebt = useMemo(() => props.account.debts.length === 0, [props.account.debts.length])
|
||||||
|
|
||||||
|
const ITEMS: DropDownItem[] = useMemo(
|
||||||
|
() => [
|
||||||
|
{
|
||||||
|
icon: <Scale width={16} />,
|
||||||
|
text: 'Change leverage',
|
||||||
|
onClick: () => openModal('leverage'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: <Plus width={16} />,
|
||||||
|
text: 'Deposit more',
|
||||||
|
onClick: () => openModal('deposit'),
|
||||||
|
},
|
||||||
|
...(hasNoDebt
|
||||||
|
? []
|
||||||
|
: [
|
||||||
|
{
|
||||||
|
icon: <HandCoins width={16} />,
|
||||||
|
text: 'Repay',
|
||||||
|
onClick: () => openModal('repay'),
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
{
|
||||||
|
icon: <ArrowDownLine width={16} />,
|
||||||
|
text: 'Withdraw',
|
||||||
|
onClick: () => openModal('withdraw'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: <Cross width={14} />,
|
||||||
|
text: 'Close Position',
|
||||||
|
onClick: () => closeHlsStakingPosition({ accountId: props.account.id, actions }),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
[actions, closeHlsStakingPosition, openModal, props.account.id],
|
||||||
|
)
|
||||||
|
|
||||||
return <DropDownButton items={ITEMS} text='Manage' color='tertiary' />
|
return <DropDownButton items={ITEMS} text='Manage' color='tertiary' />
|
||||||
}
|
}
|
||||||
|
10
src/components/Icons/Circle.svg
Normal file
10
src/components/Icons/Circle.svg
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0_5007_284)">
|
||||||
|
<path d="M8.00016 14.6654C11.6821 14.6654 14.6668 11.6806 14.6668 7.9987C14.6668 4.3168 11.6821 1.33203 8.00016 1.33203C4.31826 1.33203 1.3335 4.3168 1.3335 7.9987C1.3335 11.6806 4.31826 14.6654 8.00016 14.6654Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_5007_284">
|
||||||
|
<rect width="16" height="16" fill="currentColor"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 567 B |
5
src/components/Icons/Scale.svg
Normal file
5
src/components/Icons/Scale.svg
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g id="scales-02">
|
||||||
|
<path id="Icon" d="M2.50047 13H8.50047M15.5005 13H21.5005M12.0005 7V21M12.0005 7C13.3812 7 14.5005 5.88071 14.5005 4.5M12.0005 7C10.6198 7 9.50047 5.88071 9.50047 4.5M4.00047 21L20.0005 21M4.00047 4.50001L9.50047 4.5M9.50047 4.5C9.50047 3.11929 10.6198 2 12.0005 2C13.3812 2 14.5005 3.11929 14.5005 4.5M14.5005 4.5L20.0005 4.5M8.88091 14.3364C8.48022 15.8706 7.11858 17 5.50047 17C3.88237 17 2.52073 15.8706 2.12004 14.3364C2.0873 14.211 2.07093 14.1483 2.06935 13.8979C2.06838 13.7443 2.12544 13.3904 2.17459 13.2449C2.25478 13.0076 2.34158 12.8737 2.51519 12.6059L5.50047 8L8.48576 12.6059C8.65937 12.8737 8.74617 13.0076 8.82636 13.2449C8.87551 13.3904 8.93257 13.7443 8.9316 13.8979C8.93002 14.1483 8.91365 14.211 8.88091 14.3364ZM21.8809 14.3364C21.4802 15.8706 20.1186 17 18.5005 17C16.8824 17 15.5207 15.8706 15.12 14.3364C15.0873 14.211 15.0709 14.1483 15.0693 13.8979C15.0684 13.7443 15.1254 13.3904 15.1746 13.2449C15.2548 13.0076 15.3416 12.8737 15.5152 12.6059L18.5005 8L21.4858 12.6059C21.6594 12.8737 21.7462 13.0076 21.8264 13.2449C21.8755 13.3904 21.9326 13.7443 21.9316 13.8979C21.93 14.1483 21.9137 14.211 21.8809 14.3364Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
@ -14,6 +14,7 @@ export { default as ChevronDown } from 'components/Icons/ChevronDown.svg'
|
|||||||
export { default as ChevronLeft } from 'components/Icons/ChevronLeft.svg'
|
export { default as ChevronLeft } from 'components/Icons/ChevronLeft.svg'
|
||||||
export { default as ChevronRight } from 'components/Icons/ChevronRight.svg'
|
export { default as ChevronRight } from 'components/Icons/ChevronRight.svg'
|
||||||
export { default as ChevronUp } from 'components/Icons/ChevronUp.svg'
|
export { default as ChevronUp } from 'components/Icons/ChevronUp.svg'
|
||||||
|
export { default as Circle } from 'components/Icons/Circle.svg'
|
||||||
export { default as Compass } from 'components/Icons/Compass.svg'
|
export { default as Compass } from 'components/Icons/Compass.svg'
|
||||||
export { default as Copy } from 'components/Icons/Copy.svg'
|
export { default as Copy } from 'components/Icons/Copy.svg'
|
||||||
export { default as Cross } from 'components/Icons/Cross.svg'
|
export { default as Cross } from 'components/Icons/Cross.svg'
|
||||||
@ -43,6 +44,7 @@ export { default as PlusCircled } from 'components/Icons/PlusCircled.svg'
|
|||||||
export { default as PlusSquared } from 'components/Icons/PlusSquared.svg'
|
export { default as PlusSquared } from 'components/Icons/PlusSquared.svg'
|
||||||
export { default as Questionmark } from 'components/Icons/Questionmark.svg'
|
export { default as Questionmark } from 'components/Icons/Questionmark.svg'
|
||||||
export { default as ReceiptCheck } from 'components/Icons/ReceiptCheck.svg'
|
export { default as ReceiptCheck } from 'components/Icons/ReceiptCheck.svg'
|
||||||
|
export { default as Scale } from 'components/Icons/Scale.svg'
|
||||||
export { default as Search } from 'components/Icons/Search.svg'
|
export { default as Search } from 'components/Icons/Search.svg'
|
||||||
export { default as Shield } from 'components/Icons/Shield.svg'
|
export { default as Shield } from 'components/Icons/Shield.svg'
|
||||||
export { default as SortAsc } from 'components/Icons/SortAsc.svg'
|
export { default as SortAsc } from 'components/Icons/SortAsc.svg'
|
||||||
|
@ -4,7 +4,7 @@ import { ReactNode, useEffect, useRef } from 'react'
|
|||||||
import EscButton from 'components/Button/EscButton'
|
import EscButton from 'components/Button/EscButton'
|
||||||
import Card from 'components/Card'
|
import Card from 'components/Card'
|
||||||
|
|
||||||
interface Props {
|
export interface ModalProps {
|
||||||
header: string | ReactNode
|
header: string | ReactNode
|
||||||
headerClassName?: string
|
headerClassName?: string
|
||||||
hideCloseBtn?: boolean
|
hideCloseBtn?: boolean
|
||||||
@ -18,7 +18,7 @@ interface Props {
|
|||||||
dialogId?: string
|
dialogId?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function Modal(props: Props) {
|
export default function Modal(props: ModalProps) {
|
||||||
const ref: React.RefObject<HTMLDialogElement> = useRef(null)
|
const ref: React.RefObject<HTMLDialogElement> = useRef(null)
|
||||||
const modalClassName = props.modalClassName ?? 'max-w-modal'
|
const modalClassName = props.modalClassName ?? 'max-w-modal'
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ function AlertDialog(props: Props) {
|
|||||||
)}
|
)}
|
||||||
{checkbox && (
|
{checkbox && (
|
||||||
<Checkbox
|
<Checkbox
|
||||||
name='aleart-toggle'
|
name='hls-info-toggle'
|
||||||
checked={toggle}
|
checked={toggle}
|
||||||
onChange={handleCheckboxClick}
|
onChange={handleCheckboxClick}
|
||||||
text={checkbox.text}
|
text={checkbox.text}
|
||||||
|
@ -2,7 +2,7 @@ import React from 'react'
|
|||||||
|
|
||||||
import Button from 'components/Button'
|
import Button from 'components/Button'
|
||||||
import { ArrowRight } from 'components/Icons'
|
import { ArrowRight } from 'components/Icons'
|
||||||
import LeverageSummary from 'components/Modals/HLS/LeverageSummary'
|
import LeverageSummary from 'components/Modals/HLS/Deposit/LeverageSummary'
|
||||||
import TokenInputWithSlider from 'components/TokenInput/TokenInputWithSlider'
|
import TokenInputWithSlider from 'components/TokenInput/TokenInputWithSlider'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
@ -1,7 +1,6 @@
|
|||||||
import React, { useMemo } from 'react'
|
import React, { useMemo } from 'react'
|
||||||
|
|
||||||
import { FormattedNumber } from 'components/FormattedNumber'
|
import SummaryItems from 'components/SummaryItems'
|
||||||
import Text from 'components/Text'
|
|
||||||
import useBorrowAsset from 'hooks/useBorrowAsset'
|
import useBorrowAsset from 'hooks/useBorrowAsset'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
@ -12,7 +11,7 @@ interface Props {
|
|||||||
export default function LeverageSummary(props: Props) {
|
export default function LeverageSummary(props: Props) {
|
||||||
const borrowAsset = useBorrowAsset(props.asset.denom)
|
const borrowAsset = useBorrowAsset(props.asset.denom)
|
||||||
|
|
||||||
const items: { title: string; amount: number; options: FormatOptions }[] = useMemo(() => {
|
const items: SummaryItem[] = useMemo(() => {
|
||||||
return [
|
return [
|
||||||
// TODO: Get APY numbers
|
// TODO: Get APY numbers
|
||||||
{
|
{
|
||||||
@ -33,18 +32,5 @@ export default function LeverageSummary(props: Props) {
|
|||||||
]
|
]
|
||||||
}, [borrowAsset?.borrowRate, props.asset.symbol, props.positionValue])
|
}, [borrowAsset?.borrowRate, props.asset.symbol, props.positionValue])
|
||||||
|
|
||||||
return (
|
return <SummaryItems items={items} />
|
||||||
<div className='grid grid-cols-2 gap-2'>
|
|
||||||
{items.map((item) => (
|
|
||||||
<React.Fragment key={item.title}>
|
|
||||||
<Text className='text-white/60 text-xs'>{item.title}</Text>
|
|
||||||
<FormattedNumber
|
|
||||||
className='place-self-end text-xs'
|
|
||||||
amount={item.amount}
|
|
||||||
options={item.options}
|
|
||||||
/>
|
|
||||||
</React.Fragment>
|
|
||||||
))}
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
}
|
}
|
@ -3,7 +3,7 @@ import React from 'react'
|
|||||||
import AmountAndValue from 'components/AmountAndValue'
|
import AmountAndValue from 'components/AmountAndValue'
|
||||||
import AssetImage from 'components/Asset/AssetImage'
|
import AssetImage from 'components/Asset/AssetImage'
|
||||||
import { FormattedNumber } from 'components/FormattedNumber'
|
import { FormattedNumber } from 'components/FormattedNumber'
|
||||||
import Container from 'components/Modals/HLS/Summary/Container'
|
import Container from 'components/Modals/HLS/Deposit/Summary/Container'
|
||||||
import Text from 'components/Text'
|
import Text from 'components/Text'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
@ -3,8 +3,8 @@ import React, { useMemo } from 'react'
|
|||||||
import DisplayCurrency from 'components/DisplayCurrency'
|
import DisplayCurrency from 'components/DisplayCurrency'
|
||||||
import { FormattedNumber } from 'components/FormattedNumber'
|
import { FormattedNumber } from 'components/FormattedNumber'
|
||||||
import { InfoCircle } from 'components/Icons'
|
import { InfoCircle } from 'components/Icons'
|
||||||
import AprBreakdown from 'components/Modals/HLS/Summary/ApyBreakdown'
|
import AprBreakdown from 'components/Modals/HLS/Deposit/Summary/ApyBreakdown'
|
||||||
import Container from 'components/Modals/HLS/Summary/Container'
|
import Container from 'components/Modals/HLS/Deposit/Summary/Container'
|
||||||
import Text from 'components/Text'
|
import Text from 'components/Text'
|
||||||
import { Tooltip } from 'components/Tooltip'
|
import { Tooltip } from 'components/Tooltip'
|
||||||
import { BNCoin } from 'types/classes/BNCoin'
|
import { BNCoin } from 'types/classes/BNCoin'
|
||||||
@ -63,8 +63,10 @@ export default function YourPosition(props: Props) {
|
|||||||
type='info'
|
type='info'
|
||||||
className='items-center flex gap-2 group-hover/apytooltip:text-white text-white/60 cursor-pointer'
|
className='items-center flex gap-2 group-hover/apytooltip:text-white text-white/60 cursor-pointer'
|
||||||
>
|
>
|
||||||
|
<>
|
||||||
<span className='mt-0.5'>Net APY</span>{' '}
|
<span className='mt-0.5'>Net APY</span>{' '}
|
||||||
<InfoCircle className='w-4 h-4 text-white/40 inline group-hover/apytooltip:text-white transition-all' />
|
<InfoCircle className='w-4 h-4 text-white/40 inline group-hover/apytooltip:text-white transition-all' />
|
||||||
|
</>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</Text>
|
</Text>
|
||||||
<FormattedNumber
|
<FormattedNumber
|
@ -2,8 +2,8 @@ import React from 'react'
|
|||||||
|
|
||||||
import Button from 'components/Button'
|
import Button from 'components/Button'
|
||||||
import { ArrowRight } from 'components/Icons'
|
import { ArrowRight } from 'components/Icons'
|
||||||
import AssetSummary from 'components/Modals/HLS/Summary/AssetSummary'
|
import AssetSummary from 'components/Modals/HLS/Deposit/Summary/AssetSummary'
|
||||||
import YourPosition from 'components/Modals/HLS/Summary/YourPosition'
|
import YourPosition from 'components/Modals/HLS/Deposit/Summary/YourPosition'
|
||||||
import useBorrowAsset from 'hooks/useBorrowAsset'
|
import useBorrowAsset from 'hooks/useBorrowAsset'
|
||||||
import { BNCoin } from 'types/classes/BNCoin'
|
import { BNCoin } from 'types/classes/BNCoin'
|
||||||
|
|
@ -1,9 +1,9 @@
|
|||||||
import React, { useMemo, useState } from 'react'
|
import React, { useMemo, useState } from 'react'
|
||||||
|
|
||||||
import Accordion from 'components/Accordion'
|
import Accordion from 'components/Accordion'
|
||||||
import useStakingController from 'components/Modals/HLS/Content//useStakingController'
|
import useStakingController from 'components/Modals/HLS/Deposit//useStakingController'
|
||||||
import useVaultController from 'components/Modals/HLS/Content//useVaultController'
|
import useVaultController from 'components/Modals/HLS/Deposit//useVaultController'
|
||||||
import useAccordionItems from 'components/Modals/HLS/Content/useAccordionItems'
|
import useAccordionItems from 'components/Modals/HLS/Deposit/useAccordionItems'
|
||||||
import { EMPTY_ACCOUNT_HLS } from 'constants/accounts'
|
import { EMPTY_ACCOUNT_HLS } from 'constants/accounts'
|
||||||
import useAccounts from 'hooks/useAccounts'
|
import useAccounts from 'hooks/useAccounts'
|
||||||
import useCurrentWalletBalance from 'hooks/useCurrentWalletBalance'
|
import useCurrentWalletBalance from 'hooks/useCurrentWalletBalance'
|
||||||
@ -11,17 +11,14 @@ import useIsOpenArray from 'hooks/useIsOpenArray'
|
|||||||
import useVault from 'hooks/useVault'
|
import useVault from 'hooks/useVault'
|
||||||
import useStore from 'store'
|
import useStore from 'store'
|
||||||
import { isAccountEmpty } from 'utils/accounts'
|
import { isAccountEmpty } from 'utils/accounts'
|
||||||
import { getAssetByDenom } from 'utils/assets'
|
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
borrowDenom: string
|
borrowAsset: Asset
|
||||||
collateralDenom: string
|
collateralAsset: Asset
|
||||||
vaultAddress: string | null
|
vaultAddress: string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function Controller(props: Props) {
|
export default function Controller(props: Props) {
|
||||||
const collateralAsset = getAssetByDenom(props.collateralDenom)
|
|
||||||
const borrowAsset = getAssetByDenom(props.borrowDenom)
|
|
||||||
const [selectedAccount, setSelectedAccount] = useState<Account>(EMPTY_ACCOUNT_HLS)
|
const [selectedAccount, setSelectedAccount] = useState<Account>(EMPTY_ACCOUNT_HLS)
|
||||||
const [isOpen, toggleIsOpen] = useIsOpenArray(4, false)
|
const [isOpen, toggleIsOpen] = useIsOpenArray(4, false)
|
||||||
const address = useStore((s) => s.address)
|
const address = useStore((s) => s.address)
|
||||||
@ -30,18 +27,16 @@ export default function Controller(props: Props) {
|
|||||||
() => hlsAccounts.filter((account) => isAccountEmpty(account)),
|
() => hlsAccounts.filter((account) => isAccountEmpty(account)),
|
||||||
[hlsAccounts],
|
[hlsAccounts],
|
||||||
)
|
)
|
||||||
const walletCollateralAsset = useCurrentWalletBalance(props.collateralDenom)
|
const walletCollateralAsset = useCurrentWalletBalance(props.collateralAsset.denom)
|
||||||
const vault = useVault(props.vaultAddress || '')
|
const vault = useVault(props.vaultAddress || '')
|
||||||
|
|
||||||
if (!collateralAsset || !borrowAsset) return null
|
|
||||||
|
|
||||||
if (vault)
|
if (vault)
|
||||||
return (
|
return (
|
||||||
<Vault
|
<Vault
|
||||||
walletCollateralAsset={walletCollateralAsset}
|
walletCollateralAsset={walletCollateralAsset}
|
||||||
vault={vault}
|
vault={vault}
|
||||||
collateralAsset={collateralAsset}
|
collateralAsset={props.collateralAsset}
|
||||||
borrowAsset={borrowAsset}
|
borrowAsset={props.borrowAsset}
|
||||||
emptyHlsAccounts={emptyHlsAccounts}
|
emptyHlsAccounts={emptyHlsAccounts}
|
||||||
hlsAccounts={hlsAccounts}
|
hlsAccounts={hlsAccounts}
|
||||||
isOpen={isOpen}
|
isOpen={isOpen}
|
||||||
@ -54,8 +49,8 @@ export default function Controller(props: Props) {
|
|||||||
return (
|
return (
|
||||||
<StakingContent
|
<StakingContent
|
||||||
walletCollateralAsset={walletCollateralAsset}
|
walletCollateralAsset={walletCollateralAsset}
|
||||||
collateralAsset={collateralAsset}
|
collateralAsset={props.collateralAsset}
|
||||||
borrowAsset={borrowAsset}
|
borrowAsset={props.borrowAsset}
|
||||||
emptyHlsAccounts={emptyHlsAccounts}
|
emptyHlsAccounts={emptyHlsAccounts}
|
||||||
hlsAccounts={hlsAccounts}
|
hlsAccounts={hlsAccounts}
|
||||||
isOpen={isOpen}
|
isOpen={isOpen}
|
@ -1,11 +1,15 @@
|
|||||||
import React, { useMemo } from 'react'
|
import React, { useMemo } from 'react'
|
||||||
|
|
||||||
import CreateAccount from 'components/Modals/HLS/CreateAccount'
|
import CreateAccount from 'components/Modals/HLS/Deposit/CreateAccount'
|
||||||
import Leverage from 'components/Modals/HLS/Leverage'
|
import Leverage from 'components/Modals/HLS/Deposit/Leverage'
|
||||||
import ProvideCollateral from 'components/Modals/HLS/ProvideCollateral'
|
import ProvideCollateral from 'components/Modals/HLS/Deposit/ProvideCollateral'
|
||||||
import SelectAccount from 'components/Modals/HLS/SelectAccount'
|
import SelectAccount from 'components/Modals/HLS/Deposit/SelectAccount'
|
||||||
import { CollateralSubTitle, LeverageSubTitle, SubTitle } from 'components/Modals/HLS/SubTitles'
|
import {
|
||||||
import Summary from 'components/Modals/HLS/Summary'
|
CollateralSubTitle,
|
||||||
|
LeverageSubTitle,
|
||||||
|
SubTitle,
|
||||||
|
} from 'components/Modals/HLS/Deposit/SubTitles'
|
||||||
|
import Summary from 'components/Modals/HLS/Deposit/Summary'
|
||||||
import { BN } from 'utils/helpers'
|
import { BN } from 'utils/helpers'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
@ -1,14 +1,10 @@
|
|||||||
import { useCallback, useMemo } from 'react'
|
import { useCallback, useMemo } from 'react'
|
||||||
|
|
||||||
import { DEFAULT_SETTINGS } from 'constants/defaultSettings'
|
|
||||||
import { LocalStorageKeys } from 'constants/localStorageKeys'
|
|
||||||
import useDepositHlsVault from 'hooks/useDepositHlsVault'
|
import useDepositHlsVault from 'hooks/useDepositHlsVault'
|
||||||
import useHealthComputer from 'hooks/useHealthComputer'
|
import useHealthComputer from 'hooks/useHealthComputer'
|
||||||
import useLocalStorage from 'hooks/useLocalStorage'
|
|
||||||
import { useUpdatedAccount } from 'hooks/useUpdatedAccount'
|
import { useUpdatedAccount } from 'hooks/useUpdatedAccount'
|
||||||
import useStore from 'store'
|
import useStore from 'store'
|
||||||
import { BNCoin } from 'types/classes/BNCoin'
|
import { BNCoin } from 'types/classes/BNCoin'
|
||||||
import { Action } from 'types/generated/mars-credit-manager/MarsCreditManager.types'
|
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
borrowAsset: Asset
|
borrowAsset: Asset
|
||||||
@ -16,9 +12,8 @@ interface Props {
|
|||||||
selectedAccount: Account
|
selectedAccount: Account
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function useVaultController(props: Props) {
|
export default function useStakingController(props: Props) {
|
||||||
const { collateralAsset, borrowAsset, selectedAccount } = props
|
const { collateralAsset, borrowAsset, selectedAccount } = props
|
||||||
const [slippage] = useLocalStorage<number>(LocalStorageKeys.SLIPPAGE, DEFAULT_SETTINGS.slippage)
|
|
||||||
const addToStakingStrategy = useStore((s) => s.addToStakingStrategy)
|
const addToStakingStrategy = useStore((s) => s.addToStakingStrategy)
|
||||||
|
|
||||||
const {
|
const {
|
||||||
@ -28,40 +23,14 @@ export default function useVaultController(props: Props) {
|
|||||||
setBorrowAmount,
|
setBorrowAmount,
|
||||||
borrowAmount,
|
borrowAmount,
|
||||||
positionValue,
|
positionValue,
|
||||||
|
borrowCoin,
|
||||||
|
depositCoin,
|
||||||
|
actions,
|
||||||
} = useDepositHlsVault({
|
} = useDepositHlsVault({
|
||||||
collateralDenom: collateralAsset.denom,
|
collateralDenom: collateralAsset.denom,
|
||||||
borrowDenom: borrowAsset.denom,
|
borrowDenom: borrowAsset.denom,
|
||||||
})
|
})
|
||||||
|
|
||||||
const depositCoin = useMemo(
|
|
||||||
() => BNCoin.fromDenomAndBigNumber(collateralAsset.denom, depositAmount),
|
|
||||||
[collateralAsset.denom, depositAmount],
|
|
||||||
)
|
|
||||||
|
|
||||||
const borrowCoin = useMemo(
|
|
||||||
() => BNCoin.fromDenomAndBigNumber(borrowAsset.denom, borrowAmount),
|
|
||||||
[borrowAsset.denom, borrowAmount],
|
|
||||||
)
|
|
||||||
|
|
||||||
const actions: Action[] = useMemo(
|
|
||||||
() => [
|
|
||||||
{
|
|
||||||
deposit: depositCoin.toCoin(),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
borrow: borrowCoin.toCoin(),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
swap_exact_in: {
|
|
||||||
denom_out: collateralAsset.denom,
|
|
||||||
slippage: slippage.toString(),
|
|
||||||
coin_in: BNCoin.fromDenomAndBigNumber(borrowAsset.denom, borrowAmount).toActionCoin(),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[borrowAmount, borrowAsset.denom, borrowCoin, collateralAsset.denom, depositCoin, slippage],
|
|
||||||
)
|
|
||||||
|
|
||||||
const { updatedAccount, addDeposits } = useUpdatedAccount(selectedAccount)
|
const { updatedAccount, addDeposits } = useUpdatedAccount(selectedAccount)
|
||||||
const { computeMaxBorrowAmount } = useHealthComputer(updatedAccount)
|
const { computeMaxBorrowAmount } = useHealthComputer(updatedAccount)
|
||||||
|
|
@ -3,23 +3,22 @@ import React from 'react'
|
|||||||
import DoubleLogo from 'components/DoubleLogo'
|
import DoubleLogo from 'components/DoubleLogo'
|
||||||
import HLSTag from 'components/HLS/HLSTag'
|
import HLSTag from 'components/HLS/HLSTag'
|
||||||
import Text from 'components/Text'
|
import Text from 'components/Text'
|
||||||
import { getAssetByDenom } from 'utils/assets'
|
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
primaryDenom: string
|
primaryAsset: Asset
|
||||||
secondaryDenom: string
|
secondaryAsset: Asset
|
||||||
|
action?: HlsStakingManageAction
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function Header(props: Props) {
|
export default function Header(props: Props) {
|
||||||
const primaryAsset = getAssetByDenom(props.primaryDenom)
|
|
||||||
const secondaryAsset = getAssetByDenom(props.secondaryDenom)
|
|
||||||
|
|
||||||
if (!primaryAsset || !secondaryAsset) return null
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='flex items-center gap-2'>
|
<div className='flex items-center gap-2'>
|
||||||
<DoubleLogo primaryDenom={props.primaryDenom} secondaryDenom={props.secondaryDenom} />
|
<DoubleLogo
|
||||||
<Text>{`${primaryAsset.symbol} - ${secondaryAsset.symbol}`}</Text>
|
primaryDenom={props.primaryAsset.denom}
|
||||||
|
secondaryDenom={props.secondaryAsset.denom}
|
||||||
|
/>
|
||||||
|
<Text>{`${props.primaryAsset.symbol}/${props.secondaryAsset.symbol}`}</Text>
|
||||||
|
{props.action && <Text className='capitalize'> - {props.action}</Text>}
|
||||||
<HLSTag />
|
<HLSTag />
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
10
src/components/Modals/HLS/Manage/ChangeLeverage.tsx
Normal file
10
src/components/Modals/HLS/Manage/ChangeLeverage.tsx
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
interface Props {
|
||||||
|
account: Account
|
||||||
|
action: HlsStakingManageAction
|
||||||
|
borrowAsset: Asset
|
||||||
|
collateralAsset: Asset
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function Repay(props: Props) {
|
||||||
|
return <></>
|
||||||
|
}
|
204
src/components/Modals/HLS/Manage/Deposit.tsx
Normal file
204
src/components/Modals/HLS/Manage/Deposit.tsx
Normal file
@ -0,0 +1,204 @@
|
|||||||
|
import BigNumber from 'bignumber.js'
|
||||||
|
import React, { useCallback, useEffect, useMemo } from 'react'
|
||||||
|
|
||||||
|
import Button from 'components/Button'
|
||||||
|
import Divider from 'components/Divider'
|
||||||
|
import SummaryItems from 'components/SummaryItems'
|
||||||
|
import Switch from 'components/Switch'
|
||||||
|
import Text from 'components/Text'
|
||||||
|
import TokenInputWithSlider from 'components/TokenInput/TokenInputWithSlider'
|
||||||
|
import { BN_ZERO } from 'constants/math'
|
||||||
|
import useDepositActions from 'hooks/HLS/useDepositActions'
|
||||||
|
import useBorrowAsset from 'hooks/useBorrowAsset'
|
||||||
|
import useCurrentWalletBalance from 'hooks/useCurrentWalletBalance'
|
||||||
|
import useHealthComputer from 'hooks/useHealthComputer'
|
||||||
|
import usePrices from 'hooks/usePrices'
|
||||||
|
import useToggle from 'hooks/useToggle'
|
||||||
|
import { useUpdatedAccount } from 'hooks/useUpdatedAccount'
|
||||||
|
import useStore from 'store'
|
||||||
|
import { BNCoin } from 'types/classes/BNCoin'
|
||||||
|
import { calculateAccountLeverage } from 'utils/accounts'
|
||||||
|
import { byDenom } from 'utils/array'
|
||||||
|
import { getCoinAmount, getCoinValue } from 'utils/formatters'
|
||||||
|
import { BN } from 'utils/helpers'
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
account: Account
|
||||||
|
action: HlsStakingManageAction
|
||||||
|
borrowAsset: Asset
|
||||||
|
collateralAsset: Asset
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function Deposit(props: Props) {
|
||||||
|
const { addedDeposits, addedDebts, updatedAccount, simulateHlsStakingDeposit } =
|
||||||
|
useUpdatedAccount(props.account)
|
||||||
|
const { computeMaxBorrowAmount } = useHealthComputer(updatedAccount)
|
||||||
|
const { data: prices } = usePrices()
|
||||||
|
const [keepLeverage, toggleKeepLeverage] = useToggle(true)
|
||||||
|
const collateralAssetAmountInWallet = BN(
|
||||||
|
useCurrentWalletBalance(props.collateralAsset.denom)?.amount || '0',
|
||||||
|
)
|
||||||
|
const addToStakingStrategy = useStore((s) => s.addToStakingStrategy)
|
||||||
|
const borrowRate = useBorrowAsset(props.borrowAsset.denom)?.borrowRate || 0
|
||||||
|
|
||||||
|
const currentLeverage = useMemo(
|
||||||
|
() => calculateAccountLeverage(props.account, prices).toNumber(),
|
||||||
|
[prices, props.account],
|
||||||
|
)
|
||||||
|
|
||||||
|
const depositCoin = useMemo(
|
||||||
|
() =>
|
||||||
|
BNCoin.fromDenomAndBigNumber(
|
||||||
|
props.collateralAsset.denom,
|
||||||
|
addedDeposits.find(byDenom(props.collateralAsset.denom))?.amount || BN_ZERO,
|
||||||
|
),
|
||||||
|
[addedDeposits, props.collateralAsset.denom],
|
||||||
|
)
|
||||||
|
|
||||||
|
const borrowCoin = useMemo(
|
||||||
|
() =>
|
||||||
|
BNCoin.fromDenomAndBigNumber(
|
||||||
|
props.borrowAsset.denom,
|
||||||
|
addedDebts.find(byDenom(props.borrowAsset.denom))?.amount || BN_ZERO,
|
||||||
|
),
|
||||||
|
[addedDebts, props.borrowAsset.denom],
|
||||||
|
)
|
||||||
|
|
||||||
|
const maxBorrowAmount = useMemo(
|
||||||
|
() => computeMaxBorrowAmount(props.collateralAsset.denom, 'deposit'),
|
||||||
|
[computeMaxBorrowAmount, props.collateralAsset.denom],
|
||||||
|
)
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (borrowCoin.amount.isGreaterThan(maxBorrowAmount)) {
|
||||||
|
simulateHlsStakingDeposit(
|
||||||
|
BNCoin.fromDenomAndBigNumber(props.collateralAsset.denom, depositCoin.amount),
|
||||||
|
BNCoin.fromDenomAndBigNumber(props.borrowAsset.denom, maxBorrowAmount),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}, [
|
||||||
|
borrowCoin.amount,
|
||||||
|
depositCoin.amount,
|
||||||
|
maxBorrowAmount,
|
||||||
|
props.borrowAsset.denom,
|
||||||
|
props.collateralAsset.denom,
|
||||||
|
simulateHlsStakingDeposit,
|
||||||
|
])
|
||||||
|
|
||||||
|
const actions = useDepositActions({ depositCoin, borrowCoin })
|
||||||
|
|
||||||
|
const currentDebt: BigNumber = useMemo(
|
||||||
|
() => props.account.debts.find(byDenom(props.borrowAsset.denom)).amount || BN_ZERO,
|
||||||
|
[props.account.debts, props.borrowAsset.denom],
|
||||||
|
)
|
||||||
|
|
||||||
|
const handleDeposit = useCallback(() => {
|
||||||
|
useStore.setState({ hlsManageModal: null })
|
||||||
|
addToStakingStrategy({
|
||||||
|
accountId: props.account.id,
|
||||||
|
actions,
|
||||||
|
depositCoin,
|
||||||
|
borrowCoin,
|
||||||
|
})
|
||||||
|
}, [actions, addToStakingStrategy, borrowCoin, depositCoin, props.account.id])
|
||||||
|
|
||||||
|
const handleOnChange = useCallback(
|
||||||
|
(amount: BigNumber) => {
|
||||||
|
let additionalDebt = BN_ZERO
|
||||||
|
|
||||||
|
if (currentLeverage > 1 && keepLeverage) {
|
||||||
|
const depositValue = getCoinValue(
|
||||||
|
BNCoin.fromDenomAndBigNumber(props.collateralAsset.denom, amount),
|
||||||
|
prices,
|
||||||
|
)
|
||||||
|
const borrowValue = BN(currentLeverage - 1).times(depositValue)
|
||||||
|
additionalDebt = getCoinAmount(props.borrowAsset.denom, borrowValue, prices)
|
||||||
|
}
|
||||||
|
|
||||||
|
simulateHlsStakingDeposit(
|
||||||
|
BNCoin.fromDenomAndBigNumber(props.collateralAsset.denom, amount),
|
||||||
|
BNCoin.fromDenomAndBigNumber(props.borrowAsset.denom, additionalDebt),
|
||||||
|
)
|
||||||
|
},
|
||||||
|
[
|
||||||
|
currentLeverage,
|
||||||
|
keepLeverage,
|
||||||
|
prices,
|
||||||
|
props.borrowAsset.denom,
|
||||||
|
props.collateralAsset.denom,
|
||||||
|
simulateHlsStakingDeposit,
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
const items: SummaryItem[] = useMemo(
|
||||||
|
() => [
|
||||||
|
...(keepLeverage
|
||||||
|
? [
|
||||||
|
{
|
||||||
|
title: 'Borrow rate',
|
||||||
|
amount: borrowRate,
|
||||||
|
options: {
|
||||||
|
suffix: `%`,
|
||||||
|
minDecimals: 2,
|
||||||
|
maxDecimals: 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Additional Borrow Amount',
|
||||||
|
amount: borrowCoin.amount.toNumber(),
|
||||||
|
options: {
|
||||||
|
suffix: ` ${props.borrowAsset.symbol}`,
|
||||||
|
abbreviated: true,
|
||||||
|
decimals: props.borrowAsset.decimals,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'New Debt Amount',
|
||||||
|
amount: currentDebt.plus(borrowCoin.amount).toNumber(),
|
||||||
|
options: {
|
||||||
|
suffix: ` ${props.borrowAsset.symbol}`,
|
||||||
|
abbreviated: true,
|
||||||
|
decimals: props.borrowAsset.decimals,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
: []),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
borrowCoin.amount,
|
||||||
|
borrowRate,
|
||||||
|
currentDebt,
|
||||||
|
keepLeverage,
|
||||||
|
props.borrowAsset.decimals,
|
||||||
|
props.borrowAsset.symbol,
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<div>
|
||||||
|
<TokenInputWithSlider
|
||||||
|
amount={depositCoin.amount}
|
||||||
|
asset={props.collateralAsset}
|
||||||
|
max={collateralAssetAmountInWallet}
|
||||||
|
onChange={handleOnChange}
|
||||||
|
maxText='In Wallet'
|
||||||
|
/>
|
||||||
|
<Divider className='my-6' />
|
||||||
|
<div className='flex flex-wrap flex-1 items-center justify-between'>
|
||||||
|
<div>
|
||||||
|
<Text className='w-full mb-1'>Keep leverage</Text>
|
||||||
|
<Text size='xs' className='text-white/50'>
|
||||||
|
Automatically borrow more funds to keep leverage
|
||||||
|
</Text>
|
||||||
|
</div>
|
||||||
|
<Switch name='keep-leverage' checked={keepLeverage} onChange={toggleKeepLeverage} />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className='flex flex-col gap-4'>
|
||||||
|
<SummaryItems items={items} />
|
||||||
|
<Button onClick={handleDeposit} text='Deposit' disabled={depositCoin.amount.isZero()} />
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
98
src/components/Modals/HLS/Manage/Repay.tsx
Normal file
98
src/components/Modals/HLS/Manage/Repay.tsx
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
import BigNumber from 'bignumber.js'
|
||||||
|
import { useCallback, useMemo } from 'react'
|
||||||
|
|
||||||
|
import Button from 'components/Button'
|
||||||
|
import SummaryItems from 'components/SummaryItems'
|
||||||
|
import TokenInputWithSlider from 'components/TokenInput/TokenInputWithSlider'
|
||||||
|
import { BN_ZERO } from 'constants/math'
|
||||||
|
import useCurrentWalletBalance from 'hooks/useCurrentWalletBalance'
|
||||||
|
import { useUpdatedAccount } from 'hooks/useUpdatedAccount'
|
||||||
|
import useStore from 'store'
|
||||||
|
import { BNCoin } from 'types/classes/BNCoin'
|
||||||
|
import { byDenom } from 'utils/array'
|
||||||
|
import { BN } from 'utils/helpers'
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
account: Account
|
||||||
|
action: HlsStakingManageAction
|
||||||
|
borrowAsset: Asset
|
||||||
|
collateralAsset: Asset
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function Repay(props: Props) {
|
||||||
|
const { removeDebts, removedDebts } = useUpdatedAccount(props.account)
|
||||||
|
const borrowAssetAmountInWallet = BN(
|
||||||
|
useCurrentWalletBalance(props.borrowAsset.denom)?.amount || '0',
|
||||||
|
)
|
||||||
|
const repay = useStore((s) => s.repay)
|
||||||
|
|
||||||
|
const currentDebt: BigNumber = useMemo(
|
||||||
|
() => props.account.debts.find(byDenom(props.borrowAsset.denom)).amount || BN_ZERO,
|
||||||
|
[props.account.debts, props.borrowAsset.denom],
|
||||||
|
)
|
||||||
|
|
||||||
|
const repayAmount: BigNumber = useMemo(
|
||||||
|
() => removedDebts.find(byDenom(props.borrowAsset.denom))?.amount || BN_ZERO,
|
||||||
|
[removedDebts, props.borrowAsset.denom],
|
||||||
|
)
|
||||||
|
|
||||||
|
const maxRepayAmount = useMemo(
|
||||||
|
() => BigNumber.min(borrowAssetAmountInWallet.toNumber(), currentDebt),
|
||||||
|
[borrowAssetAmountInWallet, currentDebt],
|
||||||
|
)
|
||||||
|
|
||||||
|
const items: SummaryItem[] = useMemo(
|
||||||
|
() => [
|
||||||
|
{
|
||||||
|
title: 'Total Debt Repayable',
|
||||||
|
amount: currentDebt.toNumber(),
|
||||||
|
options: {
|
||||||
|
suffix: ` ${props.borrowAsset.symbol}`,
|
||||||
|
abbreviated: true,
|
||||||
|
decimals: props.borrowAsset.decimals,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'New Debt Amount',
|
||||||
|
amount: currentDebt.minus(repayAmount).toNumber(),
|
||||||
|
options: {
|
||||||
|
suffix: ` ${props.borrowAsset.symbol}`,
|
||||||
|
abbreviated: true,
|
||||||
|
decimals: props.borrowAsset.decimals,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
[currentDebt, props.borrowAsset.decimals, props.borrowAsset.symbol, repayAmount],
|
||||||
|
)
|
||||||
|
|
||||||
|
const handleRepay = useCallback(() => {
|
||||||
|
useStore.setState({ hlsManageModal: null })
|
||||||
|
repay({
|
||||||
|
accountId: props.account.id,
|
||||||
|
coin: BNCoin.fromDenomAndBigNumber(props.borrowAsset.denom, repayAmount),
|
||||||
|
fromWallet: true,
|
||||||
|
})
|
||||||
|
}, [props.account.id, props.borrowAsset.denom, repay, repayAmount])
|
||||||
|
|
||||||
|
const handleOnChange = useCallback(
|
||||||
|
(amount: BigNumber) =>
|
||||||
|
removeDebts([BNCoin.fromDenomAndBigNumber(props.borrowAsset.denom, amount)]),
|
||||||
|
[props.borrowAsset.denom, removeDebts],
|
||||||
|
)
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<TokenInputWithSlider
|
||||||
|
amount={removedDebts.find(byDenom(props.borrowAsset.denom))?.amount || BN_ZERO}
|
||||||
|
asset={props.borrowAsset}
|
||||||
|
max={maxRepayAmount}
|
||||||
|
onChange={handleOnChange}
|
||||||
|
maxText='In Wallet'
|
||||||
|
/>
|
||||||
|
<div className='flex flex-col gap-4'>
|
||||||
|
<SummaryItems items={items} />
|
||||||
|
<Button onClick={handleRepay} text='Repay' />
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
62
src/components/Modals/HLS/Manage/Withdraw.tsx
Normal file
62
src/components/Modals/HLS/Manage/Withdraw.tsx
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
import React, { useCallback, useMemo } from 'react'
|
||||||
|
|
||||||
|
import Button from 'components/Button'
|
||||||
|
import TokenInputWithSlider from 'components/TokenInput/TokenInputWithSlider'
|
||||||
|
import { BN_ZERO } from 'constants/math'
|
||||||
|
import useHealthComputer from 'hooks/useHealthComputer'
|
||||||
|
import { useUpdatedAccount } from 'hooks/useUpdatedAccount'
|
||||||
|
import useStore from 'store'
|
||||||
|
import { BNCoin } from 'types/classes/BNCoin'
|
||||||
|
import { byDenom } from 'utils/array'
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
account: Account
|
||||||
|
action: HlsStakingManageAction
|
||||||
|
borrowAsset: Asset
|
||||||
|
collateralAsset: Asset
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function Withdraw(props: Props) {
|
||||||
|
const { removedDeposits, removeDeposits, updatedAccount } = useUpdatedAccount(props.account)
|
||||||
|
const { computeMaxWithdrawAmount } = useHealthComputer(updatedAccount)
|
||||||
|
const withdraw = useStore((s) => s.withdraw)
|
||||||
|
const handleChange = useCallback(
|
||||||
|
(amount: BigNumber) =>
|
||||||
|
removeDeposits([BNCoin.fromDenomAndBigNumber(props.collateralAsset.denom, amount)]),
|
||||||
|
[removeDeposits, props.collateralAsset.denom],
|
||||||
|
)
|
||||||
|
|
||||||
|
const removedDeposit = useMemo(
|
||||||
|
() => removedDeposits.find(byDenom(props.collateralAsset.denom)),
|
||||||
|
[props.collateralAsset.denom, removedDeposits],
|
||||||
|
)
|
||||||
|
|
||||||
|
const maxWithdrawAmount = useMemo(() => {
|
||||||
|
const currentWithdrawAmount = removedDeposit?.amount || BN_ZERO
|
||||||
|
const extraWithdrawAmount = computeMaxWithdrawAmount(props.collateralAsset.denom)
|
||||||
|
return currentWithdrawAmount.plus(extraWithdrawAmount)
|
||||||
|
}, [computeMaxWithdrawAmount, props.collateralAsset.denom, removedDeposit?.amount])
|
||||||
|
|
||||||
|
const onClick = useCallback(() => {
|
||||||
|
useStore.setState({ hlsManageModal: null })
|
||||||
|
withdraw({
|
||||||
|
accountId: props.account.id,
|
||||||
|
coins: [{ coin: removedDeposit }],
|
||||||
|
borrow: [],
|
||||||
|
reclaims: [],
|
||||||
|
})
|
||||||
|
}, [props.account.id, removedDeposit, withdraw])
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<TokenInputWithSlider
|
||||||
|
amount={removedDeposit?.amount || BN_ZERO}
|
||||||
|
asset={props.collateralAsset}
|
||||||
|
max={maxWithdrawAmount}
|
||||||
|
onChange={handleChange}
|
||||||
|
maxText='Available'
|
||||||
|
/>
|
||||||
|
<Button onClick={onClick} text='Withdraw' disabled={removedDeposit?.amount?.isZero()} />
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
74
src/components/Modals/HLS/Manage/index.tsx
Normal file
74
src/components/Modals/HLS/Manage/index.tsx
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
import React, { useCallback } from 'react'
|
||||||
|
|
||||||
|
import Header from 'components/Modals/HLS/Header'
|
||||||
|
import ChangeLeverage from 'components/Modals/HLS/Manage/ChangeLeverage'
|
||||||
|
import Deposit from 'components/Modals/HLS/Manage/Deposit'
|
||||||
|
import Repay from 'components/Modals/HLS/Manage/Repay'
|
||||||
|
import Withdraw from 'components/Modals/HLS/Manage/Withdraw'
|
||||||
|
import ModalContentWithSummary from 'components/Modals/ModalContentWithSummary'
|
||||||
|
import useAccount from 'hooks/useAccount'
|
||||||
|
import useStore from 'store'
|
||||||
|
import { getAssetByDenom } from 'utils/assets'
|
||||||
|
|
||||||
|
export default function HlsManageModalController() {
|
||||||
|
const modal = useStore((s) => s.hlsManageModal)
|
||||||
|
const { data: account } = useAccount(modal?.accountId)
|
||||||
|
const collateralAsset = getAssetByDenom(modal?.staking.strategy.denoms.deposit || '')
|
||||||
|
const borrowAsset = getAssetByDenom(modal?.staking.strategy.denoms.borrow || '')
|
||||||
|
|
||||||
|
if (!modal || !collateralAsset || !borrowAsset || !account) return null
|
||||||
|
|
||||||
|
return (
|
||||||
|
<HlsModal
|
||||||
|
account={account}
|
||||||
|
action={modal.staking.action}
|
||||||
|
collateralAsset={collateralAsset}
|
||||||
|
borrowAsset={borrowAsset}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
account: Account
|
||||||
|
action: HlsStakingManageAction
|
||||||
|
borrowAsset: Asset
|
||||||
|
collateralAsset: Asset
|
||||||
|
}
|
||||||
|
|
||||||
|
function HlsModal(props: Props) {
|
||||||
|
const updatedAccount = useStore((s) => s.updatedAccount)
|
||||||
|
function handleClose() {
|
||||||
|
useStore.setState({ hlsManageModal: null })
|
||||||
|
}
|
||||||
|
|
||||||
|
const ContentComponent = useCallback(() => {
|
||||||
|
switch (props.action) {
|
||||||
|
case 'deposit':
|
||||||
|
return <Deposit {...props} />
|
||||||
|
case 'withdraw':
|
||||||
|
return <Withdraw {...props} />
|
||||||
|
case 'repay':
|
||||||
|
return <Repay {...props} />
|
||||||
|
case 'leverage':
|
||||||
|
return <ChangeLeverage {...props} />
|
||||||
|
default:
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}, [props])
|
||||||
|
|
||||||
|
return (
|
||||||
|
<ModalContentWithSummary
|
||||||
|
account={props.account}
|
||||||
|
header={
|
||||||
|
<Header
|
||||||
|
action={props.action}
|
||||||
|
primaryAsset={props.collateralAsset}
|
||||||
|
secondaryAsset={props.borrowAsset}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
onClose={handleClose}
|
||||||
|
content={<ContentComponent />}
|
||||||
|
isContentCard
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
@ -1,36 +1,42 @@
|
|||||||
import React from 'react'
|
import React from 'react'
|
||||||
|
|
||||||
import Modal from 'components/Modal'
|
import Modal from 'components/Modal'
|
||||||
import Content from 'components/Modals/HLS/Content'
|
import Content from 'components/Modals/HLS/Deposit'
|
||||||
import Header from 'components/Modals/HLS/Header'
|
import Header from 'components/Modals/HLS/Header'
|
||||||
import useStore from 'store'
|
import useStore from 'store'
|
||||||
|
import { getAssetByDenom } from 'utils/assets'
|
||||||
|
|
||||||
export default function HlsModalController() {
|
export default function HlsModalController() {
|
||||||
const modal = useStore((s) => s.hlsModal)
|
const modal = useStore((s) => s.hlsModal)
|
||||||
|
|
||||||
|
const primaryAsset = getAssetByDenom(
|
||||||
|
modal?.vault?.denoms.primary || modal?.strategy?.denoms.deposit || '',
|
||||||
|
)
|
||||||
|
const secondaryAsset = getAssetByDenom(
|
||||||
|
modal?.vault?.denoms.secondary || modal?.strategy?.denoms.borrow || '',
|
||||||
|
)
|
||||||
|
|
||||||
|
if (!primaryAsset || !secondaryAsset) return null
|
||||||
|
|
||||||
if (modal?.vault)
|
if (modal?.vault)
|
||||||
return (
|
return (
|
||||||
<HlsModal
|
<HlsModal
|
||||||
collateralDenom={modal.vault.denoms.primary}
|
primaryAsset={primaryAsset}
|
||||||
borrowDenom={modal.vault.denoms.secondary}
|
secondaryAsset={secondaryAsset}
|
||||||
vaultAddress={modal.vault.address}
|
vaultAddress={modal.vault.address}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
if (modal?.strategy)
|
if (modal?.strategy)
|
||||||
return (
|
return (
|
||||||
<HlsModal
|
<HlsModal primaryAsset={primaryAsset} secondaryAsset={secondaryAsset} vaultAddress={null} />
|
||||||
collateralDenom={modal.strategy.denoms.deposit}
|
|
||||||
borrowDenom={modal.strategy.denoms.borrow}
|
|
||||||
vaultAddress={null}
|
|
||||||
/>
|
|
||||||
)
|
)
|
||||||
|
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
borrowDenom: string
|
primaryAsset: Asset
|
||||||
collateralDenom: string
|
secondaryAsset: Asset
|
||||||
vaultAddress: string | null
|
vaultAddress: string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,15 +47,15 @@ function HlsModal(props: Props) {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal
|
<Modal
|
||||||
header={<Header primaryDenom={props.collateralDenom} secondaryDenom={props.borrowDenom} />}
|
header={<Header primaryAsset={props.primaryAsset} secondaryAsset={props.secondaryAsset} />}
|
||||||
headerClassName='gradient-header pl-2 pr-2.5 py-3 border-b-white/5 border-b'
|
headerClassName='gradient-header pl-2 pr-2.5 py-3 border-b-white/5 border-b'
|
||||||
contentClassName='flex flex-col p-6'
|
contentClassName='flex flex-col p-6'
|
||||||
modalClassName='max-w-modal-md'
|
modalClassName='max-w-modal-md'
|
||||||
onClose={handleClose}
|
onClose={handleClose}
|
||||||
>
|
>
|
||||||
<Content
|
<Content
|
||||||
collateralDenom={props.collateralDenom}
|
collateralAsset={props.primaryAsset}
|
||||||
borrowDenom={props.borrowDenom}
|
borrowAsset={props.secondaryAsset}
|
||||||
vaultAddress={props.vaultAddress}
|
vaultAddress={props.vaultAddress}
|
||||||
/>
|
/>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
38
src/components/Modals/ModalContentWithSummary.tsx
Normal file
38
src/components/Modals/ModalContentWithSummary.tsx
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
import classNames from 'classnames'
|
||||||
|
import React from 'react'
|
||||||
|
|
||||||
|
import AccountSummary from 'components/Account/AccountSummary'
|
||||||
|
import Card from 'components/Card'
|
||||||
|
import Modal, { ModalProps } from 'components/Modal'
|
||||||
|
import useStore from 'store'
|
||||||
|
|
||||||
|
interface Props extends ModalProps {
|
||||||
|
account: Account
|
||||||
|
isContentCard?: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function ModalContentWithSummary(props: Props) {
|
||||||
|
const updatedAccount = useStore((s) => s.updatedAccount)
|
||||||
|
return (
|
||||||
|
<Modal
|
||||||
|
{...props}
|
||||||
|
headerClassName={classNames(
|
||||||
|
'gradient-header pl-2 pr-2.5 py-3 border-b-white/5 border-b',
|
||||||
|
props.headerClassName,
|
||||||
|
)}
|
||||||
|
contentClassName={classNames('flex items-start flex-1 gap-6 p-6', props.contentClassName)}
|
||||||
|
>
|
||||||
|
{props.isContentCard ? (
|
||||||
|
<Card
|
||||||
|
className='flex flex-1 p-4 bg-white/5'
|
||||||
|
contentClassName='gap-6 flex flex-col justify-between h-full min-h-[380px]'
|
||||||
|
>
|
||||||
|
{props.content}
|
||||||
|
</Card>
|
||||||
|
) : (
|
||||||
|
props.content
|
||||||
|
)}
|
||||||
|
<AccountSummary account={updatedAccount || props.account} />
|
||||||
|
</Modal>
|
||||||
|
)
|
||||||
|
}
|
@ -5,6 +5,7 @@ import {
|
|||||||
BorrowModal,
|
BorrowModal,
|
||||||
FundAndWithdrawModal,
|
FundAndWithdrawModal,
|
||||||
GetStartedModal,
|
GetStartedModal,
|
||||||
|
HlsManageModal,
|
||||||
HlsModal,
|
HlsModal,
|
||||||
LendAndReclaimModalController,
|
LendAndReclaimModalController,
|
||||||
SettingsModal,
|
SettingsModal,
|
||||||
@ -30,6 +31,7 @@ export default function ModalsContainer() {
|
|||||||
<WalletAssets />
|
<WalletAssets />
|
||||||
<AlertDialogController />
|
<AlertDialogController />
|
||||||
<HlsModal />
|
<HlsModal />
|
||||||
|
<HlsManageModal />
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -11,3 +11,4 @@ export { default as VaultModal } from 'components/Modals/Vault'
|
|||||||
export { default as WalletAssets } from 'components/Modals/WalletAssets'
|
export { default as WalletAssets } from 'components/Modals/WalletAssets'
|
||||||
export { default as WithdrawFromVaultsModal } from 'components/Modals/WithdrawFromVaultsModal'
|
export { default as WithdrawFromVaultsModal } from 'components/Modals/WithdrawFromVaultsModal'
|
||||||
export { default as HlsModal } from 'components/Modals/HLS'
|
export { default as HlsModal } from 'components/Modals/HLS'
|
||||||
|
export { default as HlsManageModal } from 'components/Modals/HLS/Manage'
|
||||||
|
25
src/components/SummaryItems.tsx
Normal file
25
src/components/SummaryItems.tsx
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import React from 'react'
|
||||||
|
|
||||||
|
import { FormattedNumber } from 'components/FormattedNumber'
|
||||||
|
import Text from 'components/Text'
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
items: SummaryItem[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function SummaryItems(props: Props) {
|
||||||
|
return (
|
||||||
|
<div className='grid grid-cols-2 gap-2'>
|
||||||
|
{props.items.map((item) => (
|
||||||
|
<React.Fragment key={item.title}>
|
||||||
|
<Text className='text-white/60 text-sm'>{item.title}</Text>
|
||||||
|
<FormattedNumber
|
||||||
|
className='place-self-end text-sm'
|
||||||
|
amount={item.amount}
|
||||||
|
options={item.options}
|
||||||
|
/>
|
||||||
|
</React.Fragment>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
import Tippy from '@tippyjs/react'
|
import Tippy, { TippyProps } from '@tippyjs/react'
|
||||||
import classNames from 'classnames'
|
import classNames from 'classnames'
|
||||||
import { ReactNode } from 'react'
|
import { ReactNode } from 'react'
|
||||||
|
|
||||||
@ -8,10 +8,9 @@ import { DEFAULT_SETTINGS } from 'constants/defaultSettings'
|
|||||||
import { LocalStorageKeys } from 'constants/localStorageKeys'
|
import { LocalStorageKeys } from 'constants/localStorageKeys'
|
||||||
import useLocalStorage from 'hooks/useLocalStorage'
|
import useLocalStorage from 'hooks/useLocalStorage'
|
||||||
|
|
||||||
interface Props {
|
interface Props extends TippyProps {
|
||||||
content: ReactNode | string
|
content: ReactNode | string
|
||||||
type: TooltipType
|
type: TooltipType
|
||||||
children?: ReactNode | string
|
|
||||||
className?: string
|
className?: string
|
||||||
delay?: number
|
delay?: number
|
||||||
interactive?: boolean
|
interactive?: boolean
|
||||||
@ -45,6 +44,7 @@ export const Tooltip = (props: Props) => {
|
|||||||
className={props.contentClassName}
|
className={props.contentClassName}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
{...props}
|
||||||
>
|
>
|
||||||
{props.children ? (
|
{props.children ? (
|
||||||
<span
|
<span
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
import { defaultSymbolInfo } from 'components/Trade/TradeChart/constants'
|
import { defaultSymbolInfo } from 'components/Trade/TradeChart/constants'
|
||||||
import { ASSETS } from 'constants/assets'
|
import { ASSETS } from 'constants/assets'
|
||||||
import { ENV } from 'constants/env'
|
import { ENV } from 'constants/env'
|
||||||
|
import { MILLISECONDS_PER_MINUTE } from 'constants/math'
|
||||||
|
import { byDenom } from 'utils/array'
|
||||||
import { getAssetByDenom, getEnabledMarketAssets } from 'utils/assets'
|
import { getAssetByDenom, getEnabledMarketAssets } from 'utils/assets'
|
||||||
import {
|
import {
|
||||||
Bar,
|
Bar,
|
||||||
@ -14,8 +16,19 @@ import {
|
|||||||
ResolveCallback,
|
ResolveCallback,
|
||||||
} from 'utils/charting_library'
|
} from 'utils/charting_library'
|
||||||
import { BN } from 'utils/helpers'
|
import { BN } from 'utils/helpers'
|
||||||
|
import { devideByPotentiallyZero } from 'utils/math'
|
||||||
|
|
||||||
interface BarQueryData {
|
interface PythBarQueryData {
|
||||||
|
s: string
|
||||||
|
t: number[]
|
||||||
|
o: number[]
|
||||||
|
h: number[]
|
||||||
|
l: number[]
|
||||||
|
c: number[]
|
||||||
|
v: number[]
|
||||||
|
}
|
||||||
|
|
||||||
|
interface TheGraphBarQueryData {
|
||||||
close: string
|
close: string
|
||||||
high: string
|
high: string
|
||||||
low: string
|
low: string
|
||||||
@ -26,41 +39,40 @@ interface BarQueryData {
|
|||||||
|
|
||||||
export const PAIR_SEPARATOR = '<>'
|
export const PAIR_SEPARATOR = '<>'
|
||||||
|
|
||||||
export class OsmosisTheGraphDataFeed implements IDatafeedChartApi {
|
export class DataFeed implements IDatafeedChartApi {
|
||||||
candlesEndpoint = ENV.CANDLES_ENDPOINT
|
candlesEndpoint = ENV.CANDLES_ENDPOINT_PYTH
|
||||||
|
candlesEndpointTheGraph = ENV.CANDLES_ENDPOINT_THE_GRAPH
|
||||||
debug = false
|
debug = false
|
||||||
exchangeName = 'Osmosis'
|
enabledMarketAssetDenoms: string[] = []
|
||||||
|
batchSize = 1000
|
||||||
baseDecimals: number = 6
|
baseDecimals: number = 6
|
||||||
baseDenom: string = 'uosmo'
|
baseDenom: string = 'uosmo'
|
||||||
batchSize = 1000
|
intervalsTheGraph: { [key: string]: string } = {
|
||||||
enabledMarketAssetDenoms: string[] = []
|
|
||||||
pairs: { baseAsset: string; quoteAsset: string }[] = []
|
|
||||||
pairsWithData: string[] = []
|
|
||||||
intervals: { [key: string]: string } = {
|
|
||||||
'15': '15m',
|
'15': '15m',
|
||||||
'30': '30m',
|
'30': '30m',
|
||||||
'60': '1h',
|
'60': '1h',
|
||||||
'240': '4h',
|
'240': '4h',
|
||||||
'1D': '1d',
|
'1D': '1d',
|
||||||
}
|
}
|
||||||
minutesPerInterval: { [key: string]: number } = {
|
millisecondsPerInterval: { [key: string]: number } = {
|
||||||
'15': 15,
|
'15': MILLISECONDS_PER_MINUTE * 15,
|
||||||
'30': 30,
|
'30': MILLISECONDS_PER_MINUTE * 30,
|
||||||
'60': 60,
|
'60': MILLISECONDS_PER_MINUTE * 60,
|
||||||
'240': 60 * 4,
|
'240': MILLISECONDS_PER_MINUTE * 240,
|
||||||
'1D': 60 * 24,
|
'1D': MILLISECONDS_PER_MINUTE * 1440,
|
||||||
}
|
}
|
||||||
|
pairs: { baseAsset: string; quoteAsset: string }[] = []
|
||||||
|
pairsWithData: string[] = []
|
||||||
supportedPools: string[] = []
|
supportedPools: string[] = []
|
||||||
supportedResolutions = ['15', '30', '60', '4h', 'D'] as ResolutionString[]
|
supportedResolutions = ['15', '30', '60', '240', 'D'] as ResolutionString[]
|
||||||
|
|
||||||
constructor(debug = false, baseDecimals: number, baseDenom: string) {
|
constructor(debug = false, baseDecimals: number, baseDenom: string) {
|
||||||
if (debug) console.log('Start TheGraph charting library datafeed')
|
if (debug) console.log('Start charting library datafeed')
|
||||||
this.debug = debug
|
this.debug = debug
|
||||||
this.baseDecimals = baseDecimals
|
this.baseDecimals = baseDecimals
|
||||||
this.baseDenom = baseDenom
|
this.baseDenom = baseDenom
|
||||||
const enabledMarketAssets = getEnabledMarketAssets()
|
const enabledMarketAssets = getEnabledMarketAssets()
|
||||||
this.enabledMarketAssetDenoms = enabledMarketAssets.map((asset) => asset.mainnetDenom)
|
this.enabledMarketAssetDenoms = enabledMarketAssets.map((asset) => asset.denom)
|
||||||
this.supportedPools = enabledMarketAssets
|
this.supportedPools = enabledMarketAssets
|
||||||
.map((asset) => asset.poolId?.toString())
|
.map((asset) => asset.poolId?.toString())
|
||||||
.filter((poolId) => typeof poolId === 'string') as string[]
|
.filter((poolId) => typeof poolId === 'string') as string[]
|
||||||
@ -69,8 +81,8 @@ export class OsmosisTheGraphDataFeed implements IDatafeedChartApi {
|
|||||||
getDescription(pairName: string) {
|
getDescription(pairName: string) {
|
||||||
const denom1 = pairName.split(PAIR_SEPARATOR)[0]
|
const denom1 = pairName.split(PAIR_SEPARATOR)[0]
|
||||||
const denom2 = pairName.split(PAIR_SEPARATOR)[1]
|
const denom2 = pairName.split(PAIR_SEPARATOR)[1]
|
||||||
const asset1 = ASSETS.find((asset) => asset.mainnetDenom === denom1)
|
const asset1 = ASSETS.find(byDenom(denom1))
|
||||||
const asset2 = ASSETS.find((asset) => asset.mainnetDenom === denom2)
|
const asset2 = ASSETS.find(byDenom(denom2))
|
||||||
return `${asset1?.symbol}/${asset2?.symbol}`
|
return `${asset1?.symbol}/${asset2?.symbol}`
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,7 +103,7 @@ export class OsmosisTheGraphDataFeed implements IDatafeedChartApi {
|
|||||||
}
|
}
|
||||||
}`
|
}`
|
||||||
|
|
||||||
return fetch(this.candlesEndpoint, {
|
return fetch(this.candlesEndpointTheGraph, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: { 'Content-Type': 'application/json' },
|
headers: { 'Content-Type': 'application/json' },
|
||||||
body: JSON.stringify({ query }),
|
body: JSON.stringify({ query }),
|
||||||
@ -131,10 +143,11 @@ export class OsmosisTheGraphDataFeed implements IDatafeedChartApi {
|
|||||||
full_name: this.getDescription(pairName),
|
full_name: this.getDescription(pairName),
|
||||||
description: this.getDescription(pairName),
|
description: this.getDescription(pairName),
|
||||||
ticker: this.getDescription(pairName),
|
ticker: this.getDescription(pairName),
|
||||||
exchange: this.exchangeName,
|
exchange: this.getExchangeName(pairName),
|
||||||
listed_exchange: this.exchangeName,
|
listed_exchange: this.getExchangeName(pairName),
|
||||||
supported_resolutions: this.supportedResolutions,
|
supported_resolutions: this.supportedResolutions,
|
||||||
base_name: [this.getDescription(pairName)],
|
base_name: [this.getDescription(pairName)],
|
||||||
|
pricescale: this.getPriceScale(pairName),
|
||||||
} as LibrarySymbolInfo
|
} as LibrarySymbolInfo
|
||||||
onResolve(info)
|
onResolve(info)
|
||||||
})
|
})
|
||||||
@ -146,11 +159,45 @@ export class OsmosisTheGraphDataFeed implements IDatafeedChartApi {
|
|||||||
periodParams: PeriodParams,
|
periodParams: PeriodParams,
|
||||||
onResult: HistoryCallback,
|
onResult: HistoryCallback,
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
const interval = this.intervals[resolution]
|
try {
|
||||||
|
let bars = [] as Bar[]
|
||||||
|
const pythFeedIds = this.getPythFeedIds(symbolInfo.full_name)
|
||||||
|
const now = new Date().getTime()
|
||||||
|
const to = BN(now).dividedBy(1000).integerValue().toNumber()
|
||||||
|
const from = BN(now)
|
||||||
|
.minus(this.batchSize * this.millisecondsPerInterval[resolution])
|
||||||
|
.dividedBy(1000)
|
||||||
|
.integerValue()
|
||||||
|
.toNumber()
|
||||||
|
const pythFeedId1 = pythFeedIds[0]
|
||||||
|
const pythFeedId2 = pythFeedIds[1]
|
||||||
|
|
||||||
|
if (pythFeedId1 && pythFeedId2) {
|
||||||
|
const asset1Bars = this.queryBarData(pythFeedId1, resolution, from, to)
|
||||||
|
const asset2Bars = this.queryBarData(pythFeedId2, resolution, from, to)
|
||||||
|
|
||||||
|
await Promise.all([asset1Bars, asset2Bars]).then(([asset1Bars, asset2Bars]) => {
|
||||||
|
bars = this.combineBars(asset1Bars, asset2Bars)
|
||||||
|
onResult(bars)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
await this.getBarsFromTheGraph(symbolInfo, resolution, to).then((bars) => onResult(bars))
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error)
|
||||||
|
return onResult([], { noData: true })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getBarsFromTheGraph(
|
||||||
|
symbolInfo: LibrarySymbolInfo,
|
||||||
|
resolution: ResolutionString,
|
||||||
|
to: number,
|
||||||
|
) {
|
||||||
let pair1 = this.getPairName(symbolInfo.full_name)
|
let pair1 = this.getPairName(symbolInfo.full_name)
|
||||||
let pair2: string = ''
|
let pair2: string = ''
|
||||||
let pair3: string = ''
|
let pair3: string = ''
|
||||||
|
let theGraphBars = [] as Bar[]
|
||||||
|
|
||||||
if (!this.pairsWithData.includes(pair1)) {
|
if (!this.pairsWithData.includes(pair1)) {
|
||||||
if (this.debug) console.log('Pair does not have data, need to combine with other pairs')
|
if (this.debug) console.log('Pair does not have data, need to combine with other pairs')
|
||||||
@ -181,29 +228,32 @@ export class OsmosisTheGraphDataFeed implements IDatafeedChartApi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const pair1Bars = this.queryBarData(
|
const pair1Bars = this.queryBarDataTheGraph(
|
||||||
pair1.split(PAIR_SEPARATOR)[0],
|
pair1.split(PAIR_SEPARATOR)[0],
|
||||||
pair1.split(PAIR_SEPARATOR)[1],
|
pair1.split(PAIR_SEPARATOR)[1],
|
||||||
interval,
|
resolution,
|
||||||
|
to,
|
||||||
)
|
)
|
||||||
|
|
||||||
let pair2Bars: Promise<Bar[]> | null = null
|
let pair2Bars: Promise<Bar[]> | null = null
|
||||||
|
|
||||||
if (pair2) {
|
if (pair2) {
|
||||||
pair2Bars = this.queryBarData(
|
pair2Bars = this.queryBarDataTheGraph(
|
||||||
pair2.split(PAIR_SEPARATOR)[0],
|
pair2.split(PAIR_SEPARATOR)[0],
|
||||||
pair2.split(PAIR_SEPARATOR)[1],
|
pair2.split(PAIR_SEPARATOR)[1],
|
||||||
interval,
|
resolution,
|
||||||
|
to,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
let pair3Bars: Promise<Bar[]> | null = null
|
let pair3Bars: Promise<Bar[]> | null = null
|
||||||
|
|
||||||
if (pair3) {
|
if (pair3) {
|
||||||
pair3Bars = this.queryBarData(
|
pair3Bars = this.queryBarDataTheGraph(
|
||||||
pair3.split(PAIR_SEPARATOR)[0],
|
pair3.split(PAIR_SEPARATOR)[0],
|
||||||
pair3.split(PAIR_SEPARATOR)[1],
|
pair3.split(PAIR_SEPARATOR)[1],
|
||||||
interval,
|
resolution,
|
||||||
|
to,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -212,7 +262,6 @@ export class OsmosisTheGraphDataFeed implements IDatafeedChartApi {
|
|||||||
let bars = pair1Bars
|
let bars = pair1Bars
|
||||||
|
|
||||||
if (!bars.length) {
|
if (!bars.length) {
|
||||||
onResult([], { noData: true })
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -225,20 +274,55 @@ export class OsmosisTheGraphDataFeed implements IDatafeedChartApi {
|
|||||||
|
|
||||||
const filler = Array.from({ length: this.batchSize - bars.length }).map((_, index) => ({
|
const filler = Array.from({ length: this.batchSize - bars.length }).map((_, index) => ({
|
||||||
time:
|
time:
|
||||||
(bars[0]?.time || new Date().getTime()) - index * this.minutesPerInterval[resolution],
|
(bars[0]?.time || new Date().getTime()) -
|
||||||
|
(index * this.millisecondsPerInterval[resolution]) / 1000,
|
||||||
close: 0,
|
close: 0,
|
||||||
open: 0,
|
open: 0,
|
||||||
high: 0,
|
high: 0,
|
||||||
low: 0,
|
low: 0,
|
||||||
volume: 0,
|
volume: 0,
|
||||||
}))
|
}))
|
||||||
|
theGraphBars = [...filler, ...bars]
|
||||||
onResult([...filler, ...bars])
|
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
return theGraphBars
|
||||||
}
|
}
|
||||||
|
|
||||||
async queryBarData(quote: string, base: string, interval: string): Promise<Bar[]> {
|
async queryBarData(
|
||||||
|
feedSymbol: string,
|
||||||
|
resolution: ResolutionString,
|
||||||
|
from: PeriodParams['from'],
|
||||||
|
to: PeriodParams['to'],
|
||||||
|
): Promise<Bar[]> {
|
||||||
|
const URI = new URL('/v1/shims/tradingview/history', this.candlesEndpoint)
|
||||||
|
const params = new URLSearchParams(URI.search)
|
||||||
|
|
||||||
|
params.append('to', to.toString())
|
||||||
|
params.append('from', from.toString())
|
||||||
|
params.append('resolution', resolution)
|
||||||
|
params.append('symbol', feedSymbol)
|
||||||
|
URI.search = params.toString()
|
||||||
|
|
||||||
|
return fetch(URI)
|
||||||
|
.then((res) => res.json())
|
||||||
|
.then((json) => {
|
||||||
|
return this.resolveBarData(json, resolution, to)
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
if (this.debug) console.error(err)
|
||||||
|
throw err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryBarDataTheGraph(
|
||||||
|
quote: string,
|
||||||
|
base: string,
|
||||||
|
resolution: ResolutionString,
|
||||||
|
to: PeriodParams['to'],
|
||||||
|
): Promise<Bar[]> {
|
||||||
|
const interval = this.intervalsTheGraph[resolution]
|
||||||
|
|
||||||
const query = `
|
const query = `
|
||||||
{
|
{
|
||||||
candles(
|
candles(
|
||||||
@ -262,14 +346,20 @@ export class OsmosisTheGraphDataFeed implements IDatafeedChartApi {
|
|||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
return fetch(this.candlesEndpoint, {
|
return fetch(this.candlesEndpointTheGraph, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: { 'Content-Type': 'application/json' },
|
headers: { 'Content-Type': 'application/json' },
|
||||||
body: JSON.stringify({ query }),
|
body: JSON.stringify({ query }),
|
||||||
})
|
})
|
||||||
.then((res) => res.json())
|
.then((res) => res.json())
|
||||||
.then((json: { data?: { candles: BarQueryData[] } }) => {
|
.then((json: { data?: { candles: TheGraphBarQueryData[] } }) => {
|
||||||
return this.resolveBarData(json.data?.candles.reverse() || [], base, quote)
|
return this.resolveBarDataTheGraph(
|
||||||
|
json.data?.candles.reverse() || [],
|
||||||
|
base,
|
||||||
|
quote,
|
||||||
|
resolution,
|
||||||
|
to,
|
||||||
|
)
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
if (this.debug) console.error(err)
|
if (this.debug) console.error(err)
|
||||||
@ -277,12 +367,35 @@ export class OsmosisTheGraphDataFeed implements IDatafeedChartApi {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
resolveBarData(bars: BarQueryData[], toDenom: string, fromDenom: string) {
|
resolveBarData(data: PythBarQueryData, resolution: ResolutionString, to: number) {
|
||||||
|
let barData = [] as Bar[]
|
||||||
|
|
||||||
|
if (data['s'] === 'ok') {
|
||||||
|
barData = data['t'].map((timestamp, index) => ({
|
||||||
|
time: timestamp * 1000,
|
||||||
|
close: data['c'][index],
|
||||||
|
open: data['o'][index],
|
||||||
|
high: data['h'][index],
|
||||||
|
low: data['l'][index],
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.fillBarData(barData, resolution, to)
|
||||||
|
}
|
||||||
|
|
||||||
|
resolveBarDataTheGraph(
|
||||||
|
bars: TheGraphBarQueryData[],
|
||||||
|
toDenom: string,
|
||||||
|
fromDenom: string,
|
||||||
|
resolution: ResolutionString,
|
||||||
|
to: number,
|
||||||
|
) {
|
||||||
|
let barData = [] as Bar[]
|
||||||
const toDecimals = getAssetByDenom(toDenom)?.decimals || 6
|
const toDecimals = getAssetByDenom(toDenom)?.decimals || 6
|
||||||
const fromDecimals = getAssetByDenom(fromDenom)?.decimals || 6
|
const fromDecimals = getAssetByDenom(fromDenom)?.decimals || 6
|
||||||
const additionalDecimals = toDecimals - fromDecimals
|
const additionalDecimals = toDecimals - fromDecimals
|
||||||
|
|
||||||
return bars.map((bar) => ({
|
barData = bars.map((bar) => ({
|
||||||
time: BN(bar.timestamp).multipliedBy(1000).toNumber(),
|
time: BN(bar.timestamp).multipliedBy(1000).toNumber(),
|
||||||
close: BN(bar.close).shiftedBy(additionalDecimals).toNumber(),
|
close: BN(bar.close).shiftedBy(additionalDecimals).toNumber(),
|
||||||
open: BN(bar.open).shiftedBy(additionalDecimals).toNumber(),
|
open: BN(bar.open).shiftedBy(additionalDecimals).toNumber(),
|
||||||
@ -290,23 +403,40 @@ export class OsmosisTheGraphDataFeed implements IDatafeedChartApi {
|
|||||||
low: BN(bar.low).shiftedBy(additionalDecimals).toNumber(),
|
low: BN(bar.low).shiftedBy(additionalDecimals).toNumber(),
|
||||||
volume: BN(bar.volume).shiftedBy(additionalDecimals).toNumber(),
|
volume: BN(bar.volume).shiftedBy(additionalDecimals).toNumber(),
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
return this.fillBarData(barData, resolution, to)
|
||||||
|
}
|
||||||
|
|
||||||
|
fillBarData(barData: Bar[], resolution: ResolutionString, to: number) {
|
||||||
|
if (barData.length < this.batchSize) {
|
||||||
|
const filler = Array.from({ length: this.batchSize - barData.length }).map((_, index) => ({
|
||||||
|
time: (barData[0]?.time || to) - index * this.millisecondsPerInterval[resolution],
|
||||||
|
close: 0,
|
||||||
|
open: 0,
|
||||||
|
high: 0,
|
||||||
|
low: 0,
|
||||||
|
volume: 0,
|
||||||
|
}))
|
||||||
|
|
||||||
|
barData = [...filler, ...barData]
|
||||||
|
}
|
||||||
|
|
||||||
|
return barData.length > this.batchSize ? barData.slice(0, this.batchSize) : barData
|
||||||
}
|
}
|
||||||
|
|
||||||
combineBars(pair1Bars: Bar[], pair2Bars: Bar[]): Bar[] {
|
combineBars(pair1Bars: Bar[], pair2Bars: Bar[]): Bar[] {
|
||||||
const bars: Bar[] = []
|
const bars: Bar[] = []
|
||||||
|
|
||||||
pair1Bars.forEach((pair1Bar) => {
|
pair1Bars.forEach((pair1Bar, index) => {
|
||||||
const pair2Bar = pair2Bars.find((pair2Bar) => pair2Bar.time == pair1Bar.time)
|
const pair2Bar = pair2Bars[index]
|
||||||
|
|
||||||
if (pair2Bar) {
|
|
||||||
bars.push({
|
bars.push({
|
||||||
time: pair1Bar.time,
|
time: pair1Bar.time,
|
||||||
open: pair1Bar.open * pair2Bar.open,
|
open: devideByPotentiallyZero(pair1Bar.open, pair2Bar.open),
|
||||||
close: pair1Bar.close * pair2Bar.close,
|
close: devideByPotentiallyZero(pair1Bar.close, pair2Bar.close),
|
||||||
high: pair1Bar.high * pair2Bar.high,
|
high: devideByPotentiallyZero(pair1Bar.high, pair2Bar.high),
|
||||||
low: pair1Bar.low * pair2Bar.low,
|
low: devideByPotentiallyZero(pair1Bar.low, pair2Bar.low),
|
||||||
})
|
})
|
||||||
}
|
|
||||||
})
|
})
|
||||||
return bars
|
return bars
|
||||||
}
|
}
|
||||||
@ -321,6 +451,32 @@ export class OsmosisTheGraphDataFeed implements IDatafeedChartApi {
|
|||||||
return `${asset1?.denom}${PAIR_SEPARATOR}${asset2?.denom}`
|
return `${asset1?.denom}${PAIR_SEPARATOR}${asset2?.denom}`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getPriceScale(name: string) {
|
||||||
|
const denoms = name.split(PAIR_SEPARATOR)
|
||||||
|
const asset2 = ASSETS.find(byDenom(denoms[1]))
|
||||||
|
const decimalsOut = asset2?.decimals ?? 6
|
||||||
|
return BN(1)
|
||||||
|
.shiftedBy(decimalsOut > 8 ? 8 : decimalsOut)
|
||||||
|
.toNumber()
|
||||||
|
}
|
||||||
|
|
||||||
|
getExchangeName(name: string) {
|
||||||
|
const denoms = name.split(PAIR_SEPARATOR)
|
||||||
|
const pythFeedId1 = ASSETS.find(byDenom(denoms[0]))?.pythHistoryFeedId
|
||||||
|
const pythFeedId2 = ASSETS.find(byDenom(denoms[1]))?.pythHistoryFeedId
|
||||||
|
if (!pythFeedId1 || !pythFeedId2) return 'Osmosis'
|
||||||
|
return 'Pyth Oracle'
|
||||||
|
}
|
||||||
|
|
||||||
|
getPythFeedIds(name: string) {
|
||||||
|
if (name.includes(PAIR_SEPARATOR)) return []
|
||||||
|
const [symbol1, symbol2] = name.split('/')
|
||||||
|
const feedId1 = ASSETS.find((asset) => asset.symbol === symbol1)?.pythHistoryFeedId
|
||||||
|
const feedId2 = ASSETS.find((asset) => asset.symbol === symbol2)?.pythHistoryFeedId
|
||||||
|
|
||||||
|
return [feedId1, feedId2]
|
||||||
|
}
|
||||||
|
|
||||||
searchSymbols(): void {
|
searchSymbols(): void {
|
||||||
// Don't allow to search for symbols
|
// Don't allow to search for symbols
|
||||||
}
|
}
|
@ -1,11 +1,8 @@
|
|||||||
import { useEffect, useMemo, useRef } from 'react'
|
import { useEffect, useMemo, useRef } from 'react'
|
||||||
|
|
||||||
import Card from 'components/Card'
|
import Card from 'components/Card'
|
||||||
|
import { DataFeed, PAIR_SEPARATOR } from 'components/Trade/TradeChart/DataFeed'
|
||||||
import { disabledFeatures, enabledFeatures, overrides } from 'components/Trade/TradeChart/constants'
|
import { disabledFeatures, enabledFeatures, overrides } from 'components/Trade/TradeChart/constants'
|
||||||
import {
|
|
||||||
OsmosisTheGraphDataFeed,
|
|
||||||
PAIR_SEPARATOR,
|
|
||||||
} from 'components/Trade/TradeChart/OsmosisTheGraphDataFeed'
|
|
||||||
import useStore from 'store'
|
import useStore from 'store'
|
||||||
import {
|
import {
|
||||||
ChartingLibraryWidgetOptions,
|
ChartingLibraryWidgetOptions,
|
||||||
@ -28,7 +25,7 @@ export const TVChartContainer = (props: Props) => {
|
|||||||
)
|
)
|
||||||
const baseCurrency = useStore((s) => s.baseCurrency)
|
const baseCurrency = useStore((s) => s.baseCurrency)
|
||||||
const dataFeed = useMemo(
|
const dataFeed = useMemo(
|
||||||
() => new OsmosisTheGraphDataFeed(false, baseCurrency.decimals, baseCurrency.denom),
|
() => new DataFeed(false, baseCurrency.decimals, baseCurrency.denom),
|
||||||
[baseCurrency],
|
[baseCurrency],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ export const overrides = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const defaultSymbolInfo: Partial<LibrarySymbolInfo> = {
|
export const defaultSymbolInfo: Partial<LibrarySymbolInfo> = {
|
||||||
listed_exchange: 'Osmosis',
|
listed_exchange: 'Pyth Oracle',
|
||||||
type: 'AMM',
|
type: 'AMM',
|
||||||
session: '24x7',
|
session: '24x7',
|
||||||
minmov: 1,
|
minmov: 1,
|
||||||
|
@ -3,7 +3,6 @@ import { useMemo } from 'react'
|
|||||||
|
|
||||||
import ActionButton from 'components/Button/ActionButton'
|
import ActionButton from 'components/Button/ActionButton'
|
||||||
import { FormattedNumber } from 'components/FormattedNumber'
|
import { FormattedNumber } from 'components/FormattedNumber'
|
||||||
import useSwapRoute from 'hooks/useSwapRoute'
|
|
||||||
import { getAssetByDenom } from 'utils/assets'
|
import { getAssetByDenom } from 'utils/assets'
|
||||||
import { formatAmountWithSymbol, formatPercent } from 'utils/formatters'
|
import { formatAmountWithSymbol, formatPercent } from 'utils/formatters'
|
||||||
|
|
||||||
@ -18,7 +17,9 @@ interface Props {
|
|||||||
borrowAmount: BigNumber
|
borrowAmount: BigNumber
|
||||||
estimatedFee: StdFee
|
estimatedFee: StdFee
|
||||||
buyAction: () => void
|
buyAction: () => void
|
||||||
|
route: Route[]
|
||||||
}
|
}
|
||||||
|
const infoLineClasses = 'flex flex-row justify-between flex-1 mb-1 text-xs text-white'
|
||||||
|
|
||||||
export default function TradeSummary(props: Props) {
|
export default function TradeSummary(props: Props) {
|
||||||
const {
|
const {
|
||||||
@ -32,25 +33,23 @@ export default function TradeSummary(props: Props) {
|
|||||||
borrowAmount,
|
borrowAmount,
|
||||||
estimatedFee,
|
estimatedFee,
|
||||||
showProgressIndicator,
|
showProgressIndicator,
|
||||||
|
route,
|
||||||
} = props
|
} = props
|
||||||
const { data: routes, isLoading: isRouteLoading } = useSwapRoute(sellAsset.denom, buyAsset.denom)
|
|
||||||
|
|
||||||
const parsedRoutes = useMemo(() => {
|
const parsedRoutes = useMemo(() => {
|
||||||
if (!routes.length) return '-'
|
if (!route.length) return '-'
|
||||||
|
|
||||||
const routeSymbols = routes.map((r) => getAssetByDenom(r.token_out_denom)?.symbol)
|
const routeSymbols = route.map((r) => getAssetByDenom(r.token_out_denom)?.symbol)
|
||||||
routeSymbols.unshift(sellAsset.symbol)
|
routeSymbols.unshift(sellAsset.symbol)
|
||||||
|
|
||||||
return routeSymbols.join(' -> ')
|
return routeSymbols.join(' -> ')
|
||||||
}, [routes, sellAsset.symbol])
|
}, [route, sellAsset.symbol])
|
||||||
|
|
||||||
const buttonText = useMemo(
|
const buttonText = useMemo(
|
||||||
() => (routes.length ? `Buy ${buyAsset.symbol}` : 'No route found'),
|
() => (route.length ? `Buy ${buyAsset.symbol}` : 'No route found'),
|
||||||
[buyAsset.symbol, routes],
|
[buyAsset.symbol, route],
|
||||||
)
|
)
|
||||||
|
|
||||||
const infoLineClasses = 'flex flex-row justify-between flex-1 mb-1 text-xs text-white'
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={classNames(
|
className={classNames(
|
||||||
@ -94,8 +93,8 @@ export default function TradeSummary(props: Props) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ActionButton
|
<ActionButton
|
||||||
disabled={routes.length === 0 || buyButtonDisabled}
|
disabled={buyButtonDisabled}
|
||||||
showProgressIndicator={showProgressIndicator || isRouteLoading}
|
showProgressIndicator={showProgressIndicator}
|
||||||
text={buttonText}
|
text={buttonText}
|
||||||
onClick={buyAction}
|
onClick={buyAction}
|
||||||
size='md'
|
size='md'
|
||||||
|
@ -20,6 +20,7 @@ import useHealthComputer from 'hooks/useHealthComputer'
|
|||||||
import useLocalStorage from 'hooks/useLocalStorage'
|
import useLocalStorage from 'hooks/useLocalStorage'
|
||||||
import useMarketAssets from 'hooks/useMarketAssets'
|
import useMarketAssets from 'hooks/useMarketAssets'
|
||||||
import useMarketBorrowings from 'hooks/useMarketBorrowings'
|
import useMarketBorrowings from 'hooks/useMarketBorrowings'
|
||||||
|
import useSwapRoute from 'hooks/useSwapRoute'
|
||||||
import useToggle from 'hooks/useToggle'
|
import useToggle from 'hooks/useToggle'
|
||||||
import { useUpdatedAccount } from 'hooks/useUpdatedAccount'
|
import { useUpdatedAccount } from 'hooks/useUpdatedAccount'
|
||||||
import useStore from 'store'
|
import useStore from 'store'
|
||||||
@ -43,6 +44,7 @@ export default function SwapForm(props: Props) {
|
|||||||
const { computeMaxSwapAmount } = useHealthComputer(account)
|
const { computeMaxSwapAmount } = useHealthComputer(account)
|
||||||
const { data: borrowAssets } = useMarketBorrowings()
|
const { data: borrowAssets } = useMarketBorrowings()
|
||||||
const { data: marketAssets } = useMarketAssets()
|
const { data: marketAssets } = useMarketAssets()
|
||||||
|
const { data: route, isLoading: isRouteLoading } = useSwapRoute(sellAsset.denom, buyAsset.denom)
|
||||||
const isBorrowEnabled = !!marketAssets.find(byDenom(sellAsset.denom))?.borrowEnabled
|
const isBorrowEnabled = !!marketAssets.find(byDenom(sellAsset.denom))?.borrowEnabled
|
||||||
const [isMarginChecked, setMarginChecked] = useToggle(isBorrowEnabled ? useMargin : false)
|
const [isMarginChecked, setMarginChecked] = useToggle(isBorrowEnabled ? useMargin : false)
|
||||||
const [buyAssetAmount, setBuyAssetAmount] = useState(BN_ZERO)
|
const [buyAssetAmount, setBuyAssetAmount] = useState(BN_ZERO)
|
||||||
@ -265,6 +267,14 @@ export default function SwapForm(props: Props) {
|
|||||||
[borrowAsset?.liquidity?.amount],
|
[borrowAsset?.liquidity?.amount],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const isSwapDisabled = useMemo(
|
||||||
|
() =>
|
||||||
|
sellAssetAmount.isZero() ||
|
||||||
|
depositCapReachedCoins.length > 0 ||
|
||||||
|
borrowAmount.isGreaterThanOrEqualTo(availableLiquidity),
|
||||||
|
[sellAssetAmount, depositCapReachedCoins, borrowAmount, availableLiquidity],
|
||||||
|
)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Divider />
|
<Divider />
|
||||||
@ -323,15 +333,12 @@ export default function SwapForm(props: Props) {
|
|||||||
sellAsset={sellAsset}
|
sellAsset={sellAsset}
|
||||||
borrowRate={borrowAsset?.borrowRate}
|
borrowRate={borrowAsset?.borrowRate}
|
||||||
buyAction={handleBuyClick}
|
buyAction={handleBuyClick}
|
||||||
buyButtonDisabled={
|
buyButtonDisabled={isSwapDisabled || route.length === 0}
|
||||||
sellAssetAmount.isZero() ||
|
showProgressIndicator={isConfirming || isRouteLoading}
|
||||||
depositCapReachedCoins.length > 0 ||
|
|
||||||
borrowAmount.isGreaterThanOrEqualTo(availableLiquidity)
|
|
||||||
}
|
|
||||||
showProgressIndicator={isConfirming}
|
|
||||||
isMargin={isMarginChecked}
|
isMargin={isMarginChecked}
|
||||||
borrowAmount={borrowAmount}
|
borrowAmount={borrowAmount}
|
||||||
estimatedFee={estimatedFee}
|
estimatedFee={estimatedFee}
|
||||||
|
route={route}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
@ -21,6 +21,7 @@ export const ASSETS: Asset[] = [
|
|||||||
isDisplayCurrency: true,
|
isDisplayCurrency: true,
|
||||||
isAutoLendEnabled: true,
|
isAutoLendEnabled: true,
|
||||||
pythPriceFeedId: '5867f5683c757393a0670ef0f701490950fe93fdb006d181c8265a831ac0c5c6',
|
pythPriceFeedId: '5867f5683c757393a0670ef0f701490950fe93fdb006d181c8265a831ac0c5c6',
|
||||||
|
pythHistoryFeedId: 'Crypto.OSMO/USD',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
symbol: 'ATOM',
|
symbol: 'ATOM',
|
||||||
@ -42,6 +43,7 @@ export const ASSETS: Asset[] = [
|
|||||||
isBorrowEnabled: true,
|
isBorrowEnabled: true,
|
||||||
pythPriceFeedId: 'b00b60f88b03a6a625a8d1c048c3f66653edf217439983d037e7222c4e612819',
|
pythPriceFeedId: 'b00b60f88b03a6a625a8d1c048c3f66653edf217439983d037e7222c4e612819',
|
||||||
poolId: 1,
|
poolId: 1,
|
||||||
|
pythHistoryFeedId: 'Crypto.ATOM/USD',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
symbol: 'stATOM',
|
symbol: 'stATOM',
|
||||||
@ -76,6 +78,7 @@ export const ASSETS: Asset[] = [
|
|||||||
isAutoLendEnabled: true,
|
isAutoLendEnabled: true,
|
||||||
isBorrowEnabled: true,
|
isBorrowEnabled: true,
|
||||||
pythPriceFeedId: 'e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43',
|
pythPriceFeedId: 'e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43',
|
||||||
|
pythHistoryFeedId: 'Crypto.BTC/USD',
|
||||||
poolId: 712,
|
poolId: 712,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -94,6 +97,7 @@ export const ASSETS: Asset[] = [
|
|||||||
isAutoLendEnabled: true,
|
isAutoLendEnabled: true,
|
||||||
isBorrowEnabled: true,
|
isBorrowEnabled: true,
|
||||||
pythPriceFeedId: 'ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace',
|
pythPriceFeedId: 'ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace',
|
||||||
|
pythHistoryFeedId: 'Crypto.ETH/USD',
|
||||||
poolId: 704,
|
poolId: 704,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -134,6 +138,7 @@ export const ASSETS: Asset[] = [
|
|||||||
isBorrowEnabled: true,
|
isBorrowEnabled: true,
|
||||||
isAutoLendEnabled: true,
|
isAutoLendEnabled: true,
|
||||||
pythPriceFeedId: 'eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a',
|
pythPriceFeedId: 'eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a',
|
||||||
|
pythHistoryFeedId: 'Crypto.USDC/USD',
|
||||||
poolId: 678,
|
poolId: 678,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -156,6 +161,7 @@ export const ASSETS: Asset[] = [
|
|||||||
isBorrowEnabled: true,
|
isBorrowEnabled: true,
|
||||||
isAutoLendEnabled: true,
|
isAutoLendEnabled: true,
|
||||||
pythPriceFeedId: 'eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a',
|
pythPriceFeedId: 'eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a',
|
||||||
|
pythHistoryFeedId: 'Crypto.USDC/USD',
|
||||||
poolId: ENV.NETWORK === NETWORK.DEVNET ? 678 : 1221,
|
poolId: ENV.NETWORK === NETWORK.DEVNET ? 678 : 1221,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -173,6 +179,7 @@ export const ASSETS: Asset[] = [
|
|||||||
isDisplayCurrency: ENV.NETWORK !== NETWORK.TESTNET,
|
isDisplayCurrency: ENV.NETWORK !== NETWORK.TESTNET,
|
||||||
isAutoLendEnabled: false,
|
isAutoLendEnabled: false,
|
||||||
pythPriceFeedId: '60144b1d5c9e9851732ad1d9760e3485ef80be39b984f6bf60f82b28a2b7f126',
|
pythPriceFeedId: '60144b1d5c9e9851732ad1d9760e3485ef80be39b984f6bf60f82b28a2b7f126',
|
||||||
|
pythHistoryFeedId: 'Crypto.AXL/USD',
|
||||||
poolId: 812,
|
poolId: 812,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -8,14 +8,14 @@ interface EnvironmentVariables {
|
|||||||
ADDRESS_RED_BANK: string
|
ADDRESS_RED_BANK: string
|
||||||
ADDRESS_SWAPPER: string
|
ADDRESS_SWAPPER: string
|
||||||
ADDRESS_ZAPPER: string
|
ADDRESS_ZAPPER: string
|
||||||
CANDLES_ENDPOINT: string
|
CANDLES_ENDPOINT_THE_GRAPH: string
|
||||||
|
CANDLES_ENDPOINT_PYTH: string
|
||||||
CHAIN_ID: string
|
CHAIN_ID: string
|
||||||
NETWORK: string
|
NETWORK: string
|
||||||
URL_GQL: string
|
URL_GQL: string
|
||||||
URL_REST: string
|
URL_REST: string
|
||||||
URL_RPC: string
|
URL_RPC: string
|
||||||
URL_VAULT_APR: string
|
URL_VAULT_APR: string
|
||||||
WALLETS: string[]
|
|
||||||
PYTH_ENDPOINT: string
|
PYTH_ENDPOINT: string
|
||||||
MAINNET_REST_API: string
|
MAINNET_REST_API: string
|
||||||
WALLET_CONNECT_ID: string
|
WALLET_CONNECT_ID: string
|
||||||
@ -31,14 +31,14 @@ export const ENV: EnvironmentVariables = {
|
|||||||
ADDRESS_RED_BANK: process.env.NEXT_PUBLIC_RED_BANK || '',
|
ADDRESS_RED_BANK: process.env.NEXT_PUBLIC_RED_BANK || '',
|
||||||
ADDRESS_SWAPPER: process.env.NEXT_PUBLIC_SWAPPER || '',
|
ADDRESS_SWAPPER: process.env.NEXT_PUBLIC_SWAPPER || '',
|
||||||
ADDRESS_ZAPPER: process.env.NEXT_PUBLIC_ZAPPER || '',
|
ADDRESS_ZAPPER: process.env.NEXT_PUBLIC_ZAPPER || '',
|
||||||
CANDLES_ENDPOINT: process.env.NEXT_PUBLIC_CANDLES_ENDPOINT || '',
|
CANDLES_ENDPOINT_THE_GRAPH: process.env.NEXT_PUBLIC_CANDLES_ENDPOINT_THE_GRAPH || '',
|
||||||
|
CANDLES_ENDPOINT_PYTH: process.env.NEXT_PUBLIC_CANDLES_ENDPOINT_PYTH || '',
|
||||||
CHAIN_ID: process.env.NEXT_PUBLIC_CHAIN_ID || '',
|
CHAIN_ID: process.env.NEXT_PUBLIC_CHAIN_ID || '',
|
||||||
NETWORK: process.env.NEXT_PUBLIC_NETWORK || '',
|
NETWORK: process.env.NEXT_PUBLIC_NETWORK || '',
|
||||||
URL_GQL: process.env.NEXT_PUBLIC_GQL || '',
|
URL_GQL: process.env.NEXT_PUBLIC_GQL || '',
|
||||||
URL_REST: process.env.NEXT_PUBLIC_REST || '',
|
URL_REST: process.env.NEXT_PUBLIC_REST || '',
|
||||||
URL_RPC: process.env.NEXT_PUBLIC_RPC || '',
|
URL_RPC: process.env.NEXT_PUBLIC_RPC || '',
|
||||||
URL_VAULT_APR: process.env.NEXT_PUBLIC_VAULT_APR || '',
|
URL_VAULT_APR: process.env.NEXT_PUBLIC_VAULT_APR || '',
|
||||||
WALLETS: process.env.NEXT_PUBLIC_WALLETS?.split(',') || [],
|
|
||||||
PYTH_ENDPOINT: process.env.NEXT_PUBLIC_PYTH_ENDPOINT || '',
|
PYTH_ENDPOINT: process.env.NEXT_PUBLIC_PYTH_ENDPOINT || '',
|
||||||
MAINNET_REST_API: process.env.NEXT_PUBLIC_MAINNET_REST || '',
|
MAINNET_REST_API: process.env.NEXT_PUBLIC_MAINNET_REST || '',
|
||||||
WALLET_CONNECT_ID: process.env.NEXT_PUBLIC_WALLET_CONNECT_ID || '',
|
WALLET_CONNECT_ID: process.env.NEXT_PUBLIC_WALLET_CONNECT_ID || '',
|
||||||
|
@ -6,3 +6,5 @@ export const BN_ONE = BN(1)
|
|||||||
export const MARGIN_TRADE_BUFFER = 0.9
|
export const MARGIN_TRADE_BUFFER = 0.9
|
||||||
export const MIN_AMOUNT = 0.000001
|
export const MIN_AMOUNT = 0.000001
|
||||||
export const MAX_AMOUNT_DECIMALS = 6
|
export const MAX_AMOUNT_DECIMALS = 6
|
||||||
|
|
||||||
|
export const MILLISECONDS_PER_MINUTE = 60000
|
||||||
|
59
src/hooks/HLS/useClosePositionActions.ts
Normal file
59
src/hooks/HLS/useClosePositionActions.ts
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
import { useMemo } from 'react'
|
||||||
|
|
||||||
|
import { DEFAULT_SETTINGS } from 'constants/defaultSettings'
|
||||||
|
import { LocalStorageKeys } from 'constants/localStorageKeys'
|
||||||
|
import { BN_ZERO } from 'constants/math'
|
||||||
|
import useLocalStorage from 'hooks/useLocalStorage'
|
||||||
|
import usePrices from 'hooks/usePrices'
|
||||||
|
import { BNCoin } from 'types/classes/BNCoin'
|
||||||
|
import { Action } from 'types/generated/mars-credit-manager/MarsCreditManager.types'
|
||||||
|
import { getCoinAmount, getCoinValue } from 'utils/formatters'
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
account: HLSAccountWithStrategy
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function UseClosePositionActions(props: Props): Action[] {
|
||||||
|
const [slippage] = useLocalStorage<number>(LocalStorageKeys.SLIPPAGE, DEFAULT_SETTINGS.slippage)
|
||||||
|
const { data: prices } = usePrices()
|
||||||
|
|
||||||
|
const collateralDenom = props.account.strategy.denoms.deposit
|
||||||
|
const borrowDenom = props.account.strategy.denoms.borrow
|
||||||
|
|
||||||
|
const debtAmount: BigNumber = useMemo(
|
||||||
|
() =>
|
||||||
|
props.account.debts.find((debt) => debt.denom === props.account.strategy.denoms.borrow)
|
||||||
|
?.amount || BN_ZERO,
|
||||||
|
[props.account.debts, props.account.strategy.denoms.borrow],
|
||||||
|
)
|
||||||
|
|
||||||
|
const swapInAmount = useMemo(() => {
|
||||||
|
const targetValue = getCoinValue(BNCoin.fromDenomAndBigNumber(borrowDenom, debtAmount), prices)
|
||||||
|
return getCoinAmount(collateralDenom, targetValue, prices)
|
||||||
|
.times(1 + slippage)
|
||||||
|
.integerValue()
|
||||||
|
}, [slippage, borrowDenom, debtAmount, prices, collateralDenom])
|
||||||
|
|
||||||
|
return useMemo<Action[]>(
|
||||||
|
() => [
|
||||||
|
...(debtAmount.isZero()
|
||||||
|
? []
|
||||||
|
: [
|
||||||
|
{
|
||||||
|
swap_exact_in: {
|
||||||
|
coin_in: BNCoin.fromDenomAndBigNumber(collateralDenom, swapInAmount).toActionCoin(),
|
||||||
|
denom_out: borrowDenom,
|
||||||
|
slippage: slippage.toString(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
repay: {
|
||||||
|
coin: BNCoin.fromDenomAndBigNumber(borrowDenom, debtAmount).toActionCoin(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
{ refund_all_coin_balances: {} },
|
||||||
|
],
|
||||||
|
[borrowDenom, collateralDenom, debtAmount, slippage, swapInAmount],
|
||||||
|
)
|
||||||
|
}
|
38
src/hooks/HLS/useDepositActions.ts
Normal file
38
src/hooks/HLS/useDepositActions.ts
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
import { useMemo } from 'react'
|
||||||
|
|
||||||
|
import { DEFAULT_SETTINGS } from 'constants/defaultSettings'
|
||||||
|
import { LocalStorageKeys } from 'constants/localStorageKeys'
|
||||||
|
import useLocalStorage from 'hooks/useLocalStorage'
|
||||||
|
import { BNCoin } from 'types/classes/BNCoin'
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
borrowCoin: BNCoin
|
||||||
|
depositCoin: BNCoin
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function useDepositActions(props: Props) {
|
||||||
|
const [slippage] = useLocalStorage<number>(LocalStorageKeys.SLIPPAGE, DEFAULT_SETTINGS.slippage)
|
||||||
|
|
||||||
|
return useMemo(
|
||||||
|
() => [
|
||||||
|
{
|
||||||
|
deposit: props.depositCoin.toCoin(),
|
||||||
|
},
|
||||||
|
...(props.borrowCoin.amount.isZero()
|
||||||
|
? []
|
||||||
|
: [
|
||||||
|
{
|
||||||
|
borrow: props.borrowCoin.toCoin(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
swap_exact_in: {
|
||||||
|
denom_out: props.depositCoin.denom,
|
||||||
|
slippage: slippage.toString(),
|
||||||
|
coin_in: props.borrowCoin.toActionCoin(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
],
|
||||||
|
[props.borrowCoin, props.depositCoin, slippage],
|
||||||
|
)
|
||||||
|
}
|
@ -1,8 +1,12 @@
|
|||||||
import { useMemo, useState } from 'react'
|
import { useMemo, useState } from 'react'
|
||||||
|
|
||||||
|
import { DEFAULT_SETTINGS } from 'constants/defaultSettings'
|
||||||
|
import { LocalStorageKeys } from 'constants/localStorageKeys'
|
||||||
import { BN_ZERO } from 'constants/math'
|
import { BN_ZERO } from 'constants/math'
|
||||||
|
import useLocalStorage from 'hooks/useLocalStorage'
|
||||||
import usePrices from 'hooks/usePrices'
|
import usePrices from 'hooks/usePrices'
|
||||||
import { BNCoin } from 'types/classes/BNCoin'
|
import { BNCoin } from 'types/classes/BNCoin'
|
||||||
|
import { Action } from 'types/generated/mars-credit-manager/MarsCreditManager.types'
|
||||||
import { getCoinValue } from 'utils/formatters'
|
import { getCoinValue } from 'utils/formatters'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
@ -11,10 +15,21 @@ interface Props {
|
|||||||
}
|
}
|
||||||
export default function useDepositHlsVault(props: Props) {
|
export default function useDepositHlsVault(props: Props) {
|
||||||
const { data: prices } = usePrices()
|
const { data: prices } = usePrices()
|
||||||
|
const [slippage] = useLocalStorage<number>(LocalStorageKeys.SLIPPAGE, DEFAULT_SETTINGS.slippage)
|
||||||
|
|
||||||
const [depositAmount, setDepositAmount] = useState<BigNumber>(BN_ZERO)
|
const [depositAmount, setDepositAmount] = useState<BigNumber>(BN_ZERO)
|
||||||
const [borrowAmount, setBorrowAmount] = useState<BigNumber>(BN_ZERO)
|
const [borrowAmount, setBorrowAmount] = useState<BigNumber>(BN_ZERO)
|
||||||
|
|
||||||
|
const depositCoin = useMemo(
|
||||||
|
() => BNCoin.fromDenomAndBigNumber(props.collateralDenom, depositAmount),
|
||||||
|
[depositAmount, props.collateralDenom],
|
||||||
|
)
|
||||||
|
|
||||||
|
const borrowCoin = useMemo(
|
||||||
|
() => BNCoin.fromDenomAndBigNumber(props.borrowDenom, borrowAmount),
|
||||||
|
[borrowAmount, props.borrowDenom],
|
||||||
|
)
|
||||||
|
|
||||||
const { positionValue, leverage } = useMemo(() => {
|
const { positionValue, leverage } = useMemo(() => {
|
||||||
const collateralValue = getCoinValue(
|
const collateralValue = getCoinValue(
|
||||||
BNCoin.fromDenomAndBigNumber(props.collateralDenom, depositAmount),
|
BNCoin.fromDenomAndBigNumber(props.collateralDenom, depositAmount),
|
||||||
@ -31,6 +46,32 @@ export default function useDepositHlsVault(props: Props) {
|
|||||||
}
|
}
|
||||||
}, [borrowAmount, depositAmount, prices, props.collateralDenom, props.borrowDenom])
|
}, [borrowAmount, depositAmount, prices, props.collateralDenom, props.borrowDenom])
|
||||||
|
|
||||||
|
const actions: Action[] = useMemo(
|
||||||
|
() => [
|
||||||
|
{
|
||||||
|
deposit: depositCoin.toCoin(),
|
||||||
|
},
|
||||||
|
...(borrowAmount.isZero()
|
||||||
|
? []
|
||||||
|
: [
|
||||||
|
{
|
||||||
|
borrow: borrowCoin.toCoin(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
swap_exact_in: {
|
||||||
|
denom_out: props.collateralDenom,
|
||||||
|
slippage: slippage.toString(),
|
||||||
|
coin_in: BNCoin.fromDenomAndBigNumber(
|
||||||
|
props.borrowDenom,
|
||||||
|
borrowAmount,
|
||||||
|
).toActionCoin(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]),
|
||||||
|
],
|
||||||
|
[borrowAmount, borrowCoin, depositCoin, props.borrowDenom, props.collateralDenom, slippage],
|
||||||
|
)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
setDepositAmount,
|
setDepositAmount,
|
||||||
depositAmount,
|
depositAmount,
|
||||||
@ -38,5 +79,8 @@ export default function useDepositHlsVault(props: Props) {
|
|||||||
borrowAmount,
|
borrowAmount,
|
||||||
positionValue,
|
positionValue,
|
||||||
leverage,
|
leverage,
|
||||||
|
depositCoin,
|
||||||
|
borrowCoin,
|
||||||
|
actions,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@ import useStore from 'store'
|
|||||||
import { BNCoin } from 'types/classes/BNCoin'
|
import { BNCoin } from 'types/classes/BNCoin'
|
||||||
import { cloneAccount } from 'utils/accounts'
|
import { cloneAccount } from 'utils/accounts'
|
||||||
import { byDenom } from 'utils/array'
|
import { byDenom } from 'utils/array'
|
||||||
|
import { getCoinAmount, getCoinValue } from 'utils/formatters'
|
||||||
import { getValueFromBNCoins } from 'utils/helpers'
|
import { getValueFromBNCoins } from 'utils/helpers'
|
||||||
|
|
||||||
export interface VaultValue {
|
export interface VaultValue {
|
||||||
@ -37,6 +38,7 @@ export function useUpdatedAccount(account?: Account) {
|
|||||||
const [addedVaultValues, addVaultValues] = useState<VaultValue[]>([])
|
const [addedVaultValues, addVaultValues] = useState<VaultValue[]>([])
|
||||||
const [addedLends, addLends] = useState<BNCoin[]>([])
|
const [addedLends, addLends] = useState<BNCoin[]>([])
|
||||||
const [removedLends, removeLends] = useState<BNCoin[]>([])
|
const [removedLends, removeLends] = useState<BNCoin[]>([])
|
||||||
|
const [addedTrades, addTrades] = useState<BNCoin[]>([])
|
||||||
|
|
||||||
const removeDepositAndLendsByDenom = useCallback(
|
const removeDepositAndLendsByDenom = useCallback(
|
||||||
(denom: string) => {
|
(denom: string) => {
|
||||||
@ -151,6 +153,18 @@ export function useUpdatedAccount(account?: Account) {
|
|||||||
[account, addDebts, addDeposits, addLends, removeDeposits, removeLends],
|
[account, addDebts, addDeposits, addLends, removeDeposits, removeLends],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const simulateHlsStakingDeposit = useCallback(
|
||||||
|
(depositCoin: BNCoin, borrowCoin: BNCoin) => {
|
||||||
|
addDeposits([depositCoin])
|
||||||
|
addDebts([borrowCoin])
|
||||||
|
const additionalDebtValue = getCoinValue(borrowCoin, prices)
|
||||||
|
|
||||||
|
const tradeOutputAmount = getCoinAmount(depositCoin.denom, additionalDebtValue, prices)
|
||||||
|
addTrades([BNCoin.fromDenomAndBigNumber(depositCoin.denom, tradeOutputAmount)])
|
||||||
|
},
|
||||||
|
[prices],
|
||||||
|
)
|
||||||
|
|
||||||
const simulateVaultDeposit = useCallback(
|
const simulateVaultDeposit = useCallback(
|
||||||
(address: string, coins: BNCoin[], borrowCoins: BNCoin[]) => {
|
(address: string, coins: BNCoin[], borrowCoins: BNCoin[]) => {
|
||||||
if (!account) return
|
if (!account) return
|
||||||
@ -179,7 +193,7 @@ export function useUpdatedAccount(account?: Account) {
|
|||||||
if (!account) return
|
if (!account) return
|
||||||
|
|
||||||
const accountCopy = cloneAccount(account)
|
const accountCopy = cloneAccount(account)
|
||||||
accountCopy.deposits = addCoins(addedDeposits, [...accountCopy.deposits])
|
accountCopy.deposits = addCoins([...addedDeposits, ...addedTrades], [...accountCopy.deposits])
|
||||||
accountCopy.debts = addCoins(addedDebts, [...accountCopy.debts])
|
accountCopy.debts = addCoins(addedDebts, [...accountCopy.debts])
|
||||||
accountCopy.vaults = addValueToVaults(
|
accountCopy.vaults = addValueToVaults(
|
||||||
addedVaultValues,
|
addedVaultValues,
|
||||||
@ -205,6 +219,7 @@ export function useUpdatedAccount(account?: Account) {
|
|||||||
removedLends,
|
removedLends,
|
||||||
availableVaults,
|
availableVaults,
|
||||||
prices,
|
prices,
|
||||||
|
addedTrades,
|
||||||
])
|
])
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -225,6 +240,7 @@ export function useUpdatedAccount(account?: Account) {
|
|||||||
removedLends,
|
removedLends,
|
||||||
simulateBorrow,
|
simulateBorrow,
|
||||||
simulateDeposits,
|
simulateDeposits,
|
||||||
|
simulateHlsStakingDeposit,
|
||||||
simulateLending,
|
simulateLending,
|
||||||
simulateRepay,
|
simulateRepay,
|
||||||
simulateTrade,
|
simulateTrade,
|
||||||
|
@ -232,6 +232,32 @@ export default function createBroadcastSlice(
|
|||||||
|
|
||||||
return response.then((response) => !!response.result)
|
return response.then((response) => !!response.result)
|
||||||
},
|
},
|
||||||
|
closeHlsStakingPosition: async (options: { accountId: string; actions: Action[] }) => {
|
||||||
|
const msg: CreditManagerExecuteMsg = {
|
||||||
|
update_credit_account: {
|
||||||
|
account_id: options.accountId,
|
||||||
|
actions: options.actions,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
const response = get().executeMsg({
|
||||||
|
messages: [generateExecutionMessage(get().address, ENV.ADDRESS_CREDIT_MANAGER, msg, [])],
|
||||||
|
})
|
||||||
|
|
||||||
|
get().setToast({
|
||||||
|
response,
|
||||||
|
options: {
|
||||||
|
action: 'deposit',
|
||||||
|
message: `Exited HLS strategy`,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
const response_1 = await response
|
||||||
|
return response_1.result
|
||||||
|
? getSingleValueFromBroadcastResult(response_1.result, 'wasm', 'token_id')
|
||||||
|
: null
|
||||||
|
},
|
||||||
|
|
||||||
createAccount: async (accountKind: AccountKind) => {
|
createAccount: async (accountKind: AccountKind) => {
|
||||||
const msg: CreditManagerExecuteMsg = {
|
const msg: CreditManagerExecuteMsg = {
|
||||||
create_credit_account: accountKind,
|
create_credit_account: accountKind,
|
||||||
@ -538,8 +564,10 @@ export default function createBroadcastSlice(
|
|||||||
coin: BNCoin
|
coin: BNCoin
|
||||||
accountBalance?: boolean
|
accountBalance?: boolean
|
||||||
lend?: BNCoin
|
lend?: BNCoin
|
||||||
|
fromWallet?: boolean
|
||||||
}) => {
|
}) => {
|
||||||
const actions: Action[] = [
|
const actions: Action[] = [
|
||||||
|
...(options.fromWallet ? [{ deposit: options.coin.toCoin() }] : []),
|
||||||
{
|
{
|
||||||
repay: {
|
repay: {
|
||||||
coin: options.coin.toActionCoin(options.accountBalance),
|
coin: options.coin.toActionCoin(options.accountBalance),
|
||||||
@ -558,7 +586,14 @@ export default function createBroadcastSlice(
|
|||||||
}
|
}
|
||||||
|
|
||||||
const response = get().executeMsg({
|
const response = get().executeMsg({
|
||||||
messages: [generateExecutionMessage(get().address, ENV.ADDRESS_CREDIT_MANAGER, msg, [])],
|
messages: [
|
||||||
|
generateExecutionMessage(
|
||||||
|
get().address,
|
||||||
|
ENV.ADDRESS_CREDIT_MANAGER,
|
||||||
|
msg,
|
||||||
|
options.fromWallet ? [options.coin.toCoin()] : [],
|
||||||
|
),
|
||||||
|
],
|
||||||
})
|
})
|
||||||
|
|
||||||
get().setToast({
|
get().setToast({
|
||||||
|
@ -11,6 +11,7 @@ export default function createModalSlice(set: SetState<ModalSlice>, get: GetStat
|
|||||||
fundAndWithdrawModal: null,
|
fundAndWithdrawModal: null,
|
||||||
getStartedModal: false,
|
getStartedModal: false,
|
||||||
hlsInformationModal: null,
|
hlsInformationModal: null,
|
||||||
|
hlsManageModal: null,
|
||||||
lendAndReclaimModal: null,
|
lendAndReclaimModal: null,
|
||||||
resetStettingsModal: false,
|
resetStettingsModal: false,
|
||||||
settingsModal: false,
|
settingsModal: false,
|
||||||
|
1
src/types/interfaces/asset.d.ts
vendored
1
src/types/interfaces/asset.d.ts
vendored
@ -52,6 +52,7 @@ interface Asset {
|
|||||||
isAutoLendEnabled?: boolean
|
isAutoLendEnabled?: boolean
|
||||||
isBorrowEnabled?: boolean
|
isBorrowEnabled?: boolean
|
||||||
pythPriceFeedId?: string
|
pythPriceFeedId?: string
|
||||||
|
pythHistoryFeedId?: string
|
||||||
forceFetchPrice?: boolean
|
forceFetchPrice?: boolean
|
||||||
testnetDenom?: string
|
testnetDenom?: string
|
||||||
isStaking?: boolean
|
isStaking?: boolean
|
||||||
|
5
src/types/interfaces/components/SummaryItems.d.ts
vendored
Normal file
5
src/types/interfaces/components/SummaryItems.d.ts
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
interface SummaryItem {
|
||||||
|
amount: number
|
||||||
|
options: FormatOptions
|
||||||
|
title: string
|
||||||
|
}
|
4
src/types/interfaces/components/swapForm.d.ts
vendored
Normal file
4
src/types/interfaces/components/swapForm.d.ts
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
interface Route {
|
||||||
|
pool_id: string
|
||||||
|
token_out_denom: string
|
||||||
|
}
|
5
src/types/interfaces/store/broadcast.d.ts
vendored
5
src/types/interfaces/store/broadcast.d.ts
vendored
@ -92,6 +92,10 @@ interface BroadcastSlice {
|
|||||||
borrowToWallet: boolean
|
borrowToWallet: boolean
|
||||||
}) => Promise<boolean>
|
}) => Promise<boolean>
|
||||||
claimRewards: (options: { accountId: string }) => ExecutableTx
|
claimRewards: (options: { accountId: string }) => ExecutableTx
|
||||||
|
closeHlsStakingPosition: (options: {
|
||||||
|
accountId: string
|
||||||
|
actions: Action[]
|
||||||
|
}) => Promise<string | null>
|
||||||
createAccount: (
|
createAccount: (
|
||||||
accountKind: import('types/generated/mars-rover-health-types/MarsRoverHealthTypes.types').AccountKind,
|
accountKind: import('types/generated/mars-rover-health-types/MarsRoverHealthTypes.types').AccountKind,
|
||||||
) => Promise<string | null>
|
) => Promise<string | null>
|
||||||
@ -113,6 +117,7 @@ interface BroadcastSlice {
|
|||||||
coin: BNCoin
|
coin: BNCoin
|
||||||
accountBalance?: boolean
|
accountBalance?: boolean
|
||||||
lend?: BNCoin
|
lend?: BNCoin
|
||||||
|
fromWallet?: boolean
|
||||||
}) => Promise<boolean>
|
}) => Promise<boolean>
|
||||||
setToast: (toast: ToastObject) => void
|
setToast: (toast: ToastObject) => void
|
||||||
swap: (options: {
|
swap: (options: {
|
||||||
|
11
src/types/interfaces/store/modals.d.ts
vendored
11
src/types/interfaces/store/modals.d.ts
vendored
@ -4,6 +4,7 @@ interface ModalSlice {
|
|||||||
alertDialog: AlertDialogConfig | null
|
alertDialog: AlertDialogConfig | null
|
||||||
assetOverlayState: OverlayState
|
assetOverlayState: OverlayState
|
||||||
hlsModal: HlsModal | null
|
hlsModal: HlsModal | null
|
||||||
|
hlsManageModal: HlsManageModal | null
|
||||||
borrowModal: BorrowModal | null
|
borrowModal: BorrowModal | null
|
||||||
fundAndWithdrawModal: 'fund' | 'withdraw' | null
|
fundAndWithdrawModal: 'fund' | 'withdraw' | null
|
||||||
getStartedModal: boolean
|
getStartedModal: boolean
|
||||||
@ -73,3 +74,13 @@ interface HlsModal {
|
|||||||
strategy?: HLSStrategy
|
strategy?: HLSStrategy
|
||||||
vault?: Vault
|
vault?: Vault
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface HlsManageModal {
|
||||||
|
accountId: string
|
||||||
|
staking: {
|
||||||
|
strategy: HLSStrategy
|
||||||
|
action: HlsStakingManageAction
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type HlsStakingManageAction = 'deposit' | 'withdraw' | 'repay' | 'leverage'
|
||||||
|
4
src/utils/math.ts
Normal file
4
src/utils/math.ts
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
export const devideByPotentiallyZero = (numerator: number, denominator: number): number => {
|
||||||
|
if (denominator === 0) return 0
|
||||||
|
return numerator / denominator
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user