diff --git a/packages/mobile/app/(tabs)/assets.tsx b/packages/mobile/app/(tabs)/assets.tsx
index b1d7650f3f..48f8bcc014 100644
--- a/packages/mobile/app/(tabs)/assets.tsx
+++ b/packages/mobile/app/(tabs)/assets.tsx
@@ -2,13 +2,12 @@ import { Dec } from "@keplr-wallet/unit";
import { useBottomTabBarHeight } from "@react-navigation/bottom-tabs";
import { FlashList } from "@shopify/flash-list";
import { debounce } from "debounce";
-import { Link } from "expo-router";
+import { useRouter } from "expo-router";
import { useState } from "react";
import {
ActivityIndicator,
Image,
StyleSheet,
- TextInput,
TouchableOpacity,
View,
} from "react-native";
@@ -17,10 +16,11 @@ import { SvgUri } from "react-native-svg";
import { ChevronDownIcon } from "~/components/icons/chevron-down";
import { FilterIcon } from "~/components/icons/filter";
-import { SearchIcon } from "~/components/icons/search";
+import { SearchInput } from "~/components/search-input";
import { SubscriptDecimal } from "~/components/subscript-decimal";
import { Text } from "~/components/ui/text";
import { Colors } from "~/constants/colors";
+import { getChangeColor } from "~/utils/price";
import { api, RouterOutputs } from "~/utils/trpc";
const itemSize = 70;
@@ -69,15 +69,10 @@ export default function TabTwoScreen() {
gap: 8,
}}
>
-
-
-
-
+
@@ -120,60 +115,65 @@ const AssetItem = ({
}: {
asset: RouterOutputs["local"]["assets"]["getMarketAssets"]["items"][number];
}) => {
+ const router = useRouter();
+
return (
-
+ router.push({
+ pathname: "/asset/[id]",
+ params: {
+ id: asset.coinMinimalDenom.replace(/\//g, "-"),
+ coinDenom: asset.coinDenom,
+ coinImageUrl: asset.coinImageUrl,
+ },
+ })
+ }
+ style={styles.assetItem}
>
-
-
- {asset.coinImageUrl?.endsWith(".svg") ? (
-
+
+ {asset.coinImageUrl?.endsWith(".svg") ? (
+
+ ) : (
+
+ )}
+
+ {asset.coinDenom}
+
+
+
+
+ {asset.currentPrice ? (
+ <>
+ {asset.currentPrice.symbol}
+
+ >
) : (
-
+ ""
)}
-
- {asset.coinDenom}
- {/* {asset.amount} */}
-
-
-
-
- {asset.currentPrice ? (
- <>
- {asset.currentPrice.symbol}
-
- >
- ) : (
- ""
- )}
-
-
- {asset.priceChange24h?.toString()}
-
-
-
-
+
+
+ {asset.priceChange24h?.toString()}
+
+
+
);
};
diff --git a/packages/mobile/app/_layout.tsx b/packages/mobile/app/_layout.tsx
index dc96c2be12..bfd2ee42fc 100644
--- a/packages/mobile/app/_layout.tsx
+++ b/packages/mobile/app/_layout.tsx
@@ -11,6 +11,7 @@ import { Stack } from "expo-router";
import * as SplashScreen from "expo-splash-screen";
import { StatusBar } from "expo-status-bar";
import { useEffect, useState } from "react";
+import { GestureHandlerRootView } from "react-native-gesture-handler";
import { DefaultTheme } from "~/constants/themes";
import { getMobileAssetListAndChains } from "~/utils/asset-lists";
@@ -104,11 +105,13 @@ export default function RootLayout() {
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/packages/mobile/app/asset/[id].tsx b/packages/mobile/app/asset/[id].tsx
index 8b0f53eeac..0631274437 100644
--- a/packages/mobile/app/asset/[id].tsx
+++ b/packages/mobile/app/asset/[id].tsx
@@ -1,19 +1,235 @@
-import { Stack, useLocalSearchParams } from "expo-router";
+import { Dec } from "@keplr-wallet/unit";
+import { Stack, useLocalSearchParams, useRouter } from "expo-router";
import React from "react";
+import {
+ ActivityIndicator,
+ Image,
+ ScrollView,
+ StyleSheet,
+ TouchableOpacity,
+ View,
+} from "react-native";
+import { GraphPoint, LineGraph } from "react-native-graph";
import { SafeAreaView } from "react-native-safe-area-context";
+import { ChevronLeftIcon } from "~/components/icons/chevron-left";
+import { SubscriptDecimal } from "~/components/subscript-decimal";
import { Text } from "~/components/ui/text";
+import { Colors } from "~/constants/colors";
+import { getChangeColor } from "~/utils/price";
+import { api } from "~/utils/trpc";
const AssetRoute = () => {
- const { id } = useLocalSearchParams<{ id: string }>();
- console.log(id);
+ const { id, coinDenom, coinImageUrl } = useLocalSearchParams<{
+ id: string;
+ coinDenom: string;
+ coinImageUrl: string;
+ }>();
+ const router = useRouter();
+
+ const { data: asset, isLoading } = api.local.assets.getMarketAsset.useQuery(
+ { findMinDenomOrSymbol: id.replace(/-/g, "/") },
+ { enabled: !!id }
+ );
+
+ console.log(asset);
return (
-
-
- Asset ID: {id}
+
+
+
+
+ router.back()}
+ >
+
+
+
+
+ {coinDenom}
+
+
+
+
+
+
+
+
+ Trade
+
+
);
};
+function gaussian(mean: number, variance: number) {
+ return {
+ ppf: (p: number) => {
+ // Using the inverse error function to approximate the inverse CDF of a Gaussian distribution
+ const a1 = 0.254829592;
+ const a2 = -0.284496736;
+ const a3 = 1.421413741;
+ const a4 = -1.453152027;
+ const a5 = 1.061405429;
+ const p_low = 0.02425;
+ const p_high = 1 - p_low;
+
+ if (p < p_low) {
+ const q = Math.sqrt(-2 * Math.log(p));
+ return (
+ mean +
+ (Math.sqrt(variance) *
+ ((((a5 * q + a4) * q + a3) * q + a2) * q + a1)) /
+ (1 + q)
+ );
+ } else if (p_high < p) {
+ const q = Math.sqrt(-2 * Math.log(1 - p));
+ return (
+ mean -
+ (Math.sqrt(variance) *
+ ((((a5 * q + a4) * q + a3) * q + a2) * q + a1)) /
+ (1 + q)
+ );
+ } else {
+ const q = p - 0.5;
+ const r = q * q;
+ return (
+ mean +
+ (Math.sqrt(variance) *
+ q *
+ ((((a5 * r + a4) * r + a3) * r + a2) * r + a1)) /
+ (1 + r)
+ );
+ }
+ },
+ };
+}
+
+function weightedRandom(mean: number, variance: number): number {
+ const distribution = gaussian(mean, variance);
+ // Take a random sample using inverse transform sampling method.
+ return distribution.ppf(Math.random());
+}
+
+export function generateRandomGraphData(length: number): GraphPoint[] {
+ return Array(length)
+ .fill(0)
+ .map((_, index) => ({
+ date: new Date(
+ new Date(2000, 0, 1).getTime() + 1000 * 60 * 60 * 24 * index
+ ),
+ value: weightedRandom(10, Math.pow(index + 1, 2)),
+ }));
+}
+
+const AssetContent = ({ id }: { id: string }) => {
+ const { data: asset, isLoading } = api.local.assets.getMarketAsset.useQuery(
+ { findMinDenomOrSymbol: id.replace(/-/g, "/") },
+ { enabled: !!id }
+ );
+
+ if (isLoading) {
+ return ;
+ }
+
+ if (!asset) {
+ return No data available;
+ }
+
+ return (
+
+
+
+ {asset.currentPrice?.symbol}
+ {asset.currentPrice ? (
+
+ ) : null}
+
+
+ {asset.priceChange24h?.toString()}
+
+
+
+
+
+ );
+};
+
+const styles = StyleSheet.create({
+ container: {
+ height: "100%",
+ },
+ content: {
+ paddingHorizontal: 24,
+ },
+ header: {
+ flexDirection: "row",
+ alignItems: "center",
+ justifyContent: "center",
+ },
+ assetInfo: {
+ flexDirection: "row",
+ alignItems: "center",
+ gap: 8,
+ },
+ chevronLeftIcon: {
+ position: "absolute",
+ left: 0,
+ },
+ assetDenom: {
+ fontSize: 20,
+ fontWeight: "600",
+ },
+ assetPriceContainer: {
+ flexDirection: "row",
+ alignItems: "center",
+ gap: 8,
+ marginBottom: 10,
+ },
+ assetContent: {
+ paddingVertical: 24,
+ height: "100%",
+ },
+ tradeButtonContainer: {
+ position: "absolute",
+ height: 100,
+ bottom: 0,
+ width: "100%",
+ paddingTop: 10,
+ borderTopWidth: 1,
+ alignItems: "center",
+ borderTopColor: "rgba(255, 255, 255, 0.2)",
+ },
+ tradeButton: {
+ backgroundColor: Colors["wosmongton"][500],
+ padding: 15,
+ borderRadius: 255,
+ alignItems: "center",
+ width: "80%",
+ },
+});
export default AssetRoute;
diff --git a/packages/mobile/components/icons/chevron-left.tsx b/packages/mobile/components/icons/chevron-left.tsx
new file mode 100644
index 0000000000..394e0b2869
--- /dev/null
+++ b/packages/mobile/components/icons/chevron-left.tsx
@@ -0,0 +1,31 @@
+import React from "react";
+import { StyleProp } from "react-native";
+import { ViewStyle } from "react-native";
+import Svg, { Path } from "react-native-svg";
+
+import { Colors } from "~/constants/colors";
+
+export const ChevronLeftIcon = ({
+ width = 16,
+ height = 16,
+ fill = Colors.osmoverse[500],
+ style,
+}: {
+ width?: number;
+ height?: number;
+ fill?: string;
+ style?: StyleProp;
+}) => (
+
+);
diff --git a/packages/mobile/components/search-input.tsx b/packages/mobile/components/search-input.tsx
new file mode 100644
index 0000000000..62095a4633
--- /dev/null
+++ b/packages/mobile/components/search-input.tsx
@@ -0,0 +1,56 @@
+import React, { useState } from "react";
+import { StyleSheet, TextInput, View } from "react-native";
+
+import { SearchIcon } from "~/components/icons/search";
+import { Colors } from "~/constants/colors";
+
+interface SearchInputProps {
+ onSearch: (query: string) => void;
+ activeColor?: string;
+}
+
+export const SearchInput: React.FC = ({
+ onSearch,
+ activeColor = Colors["osmoverse"][800],
+}) => {
+ const [isFocused, setIsFocused] = useState(false);
+
+ return (
+
+
+ setIsFocused(true)}
+ onBlur={() => setIsFocused(false)}
+ />
+
+ );
+};
+
+const styles = StyleSheet.create({
+ searchContainer: {
+ flexDirection: "row",
+ alignItems: "center",
+ backgroundColor: Colors["osmoverse"][825],
+ borderRadius: 12,
+ paddingHorizontal: 12,
+ gap: 4,
+ flex: 1,
+ borderWidth: 1,
+ borderColor: "transparent",
+ },
+ searchInput: {
+ flex: 1,
+ color: "#fff",
+ fontSize: 16,
+ paddingVertical: 12,
+ },
+});
diff --git a/packages/mobile/components/ui/text.tsx b/packages/mobile/components/ui/text.tsx
index 563dcde0d7..b25b1c0b80 100644
--- a/packages/mobile/components/ui/text.tsx
+++ b/packages/mobile/components/ui/text.tsx
@@ -50,7 +50,7 @@ const styles = StyleSheet.create({
lineHeight: 32,
},
subtitle: {
- fontSize: 20,
+ fontSize: 16,
fontWeight: "bold",
},
link: {
diff --git a/packages/mobile/constants/Colors.ts b/packages/mobile/constants/Colors.ts
index fb3afa61da..bcadd405a7 100644
--- a/packages/mobile/constants/Colors.ts
+++ b/packages/mobile/constants/Colors.ts
@@ -1,5 +1,5 @@
export const Colors = {
- text: "#11181C",
+ text: "#ffffff",
background: "#090524",
tint: "#E4E1FB",
white: {
diff --git a/packages/mobile/constants/themes.ts b/packages/mobile/constants/themes.ts
index c582dc6dfe..df6242c9a7 100644
--- a/packages/mobile/constants/themes.ts
+++ b/packages/mobile/constants/themes.ts
@@ -11,6 +11,7 @@ export const DefaultTheme = createTheme({
...DefaultNavigationTheme,
colors: {
...DefaultNavigationTheme.colors,
+ text: Colors.text,
background: Colors.background,
tabBarBackground: "hsla(248, 77%, 8%, 0.2)",
},
diff --git a/packages/mobile/package.json b/packages/mobile/package.json
index 4766807e74..1540887ff8 100644
--- a/packages/mobile/package.json
+++ b/packages/mobile/package.json
@@ -25,6 +25,7 @@
"@react-navigation/bottom-tabs": "^7.0.0",
"@react-navigation/native": "^7.0.0",
"@shopify/flash-list": "^1.7.2",
+ "@shopify/react-native-skia": "1.5.0",
"@tanstack/query-async-storage-persister": "^4.36.1",
"@tanstack/react-query": "^4.32.6",
"@tanstack/react-query-persist-client": "^4.36.1",
@@ -48,6 +49,7 @@
"react-dom": "18.3.1",
"react-native": "0.76.2",
"react-native-gesture-handler": "~2.20.2",
+ "react-native-graph": "^1.1.0",
"react-native-reanimated": "~3.16.1",
"react-native-safe-area-context": "4.12.0",
"react-native-screens": "~4.1.0",
diff --git a/packages/mobile/utils/price.ts b/packages/mobile/utils/price.ts
new file mode 100644
index 0000000000..31a7c3cd56
--- /dev/null
+++ b/packages/mobile/utils/price.ts
@@ -0,0 +1,13 @@
+import { Dec } from "@keplr-wallet/unit";
+
+import { Colors } from "~/constants/colors";
+
+export function getChangeColor(change: Dec) {
+ if (change.gt(new Dec(0))) {
+ return Colors["bullish"][500];
+ } else if (change.equals(new Dec(0))) {
+ return Colors["wosmongton"][200];
+ } else {
+ return Colors["rust"][300];
+ }
+}
diff --git a/yarn.lock b/yarn.lock
index 8c3121be97..3c3b0d3dac 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3819,18 +3819,6 @@
dependencies:
"@types/hammerjs" "^2.0.36"
-"@emotion/is-prop-valid@^0.8.2":
- version "0.8.8"
- resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a"
- integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==
- dependencies:
- "@emotion/memoize" "0.7.4"
-
-"@emotion/memoize@0.7.4":
- version "0.7.4"
- resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb"
- integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==
-
"@ensdomains/eth-ens-namehash@^2.0.15":
version "2.0.15"
resolved "https://registry.npmjs.org/@ensdomains/eth-ens-namehash/-/eth-ens-namehash-2.0.15.tgz"
@@ -5426,7 +5414,29 @@
buffer "^6.0.3"
delay "^4.4.0"
-"@keplr-wallet/cosmos@0.10.24-ibc.go.v7.hot.fix", "@keplr-wallet/cosmos@0.12.12", "@keplr-wallet/cosmos@0.12.28":
+"@keplr-wallet/common@0.12.12":
+ version "0.12.12"
+ resolved "https://registry.yarnpkg.com/@keplr-wallet/common/-/common-0.12.12.tgz#55030d985b729eac582c0d7203190e25ea2cb3ec"
+ integrity sha512-AxpwmXdqs083lMvA8j0/V30oTGyobsefNaCou+lP4rCyDdYuXSEux+x2+1AGL9xB3yZfN+4jvEEKJdMwHYEHcQ==
+ dependencies:
+ "@keplr-wallet/crypto" "0.12.12"
+ "@keplr-wallet/types" "0.12.12"
+ buffer "^6.0.3"
+ delay "^4.4.0"
+ mobx "^6.1.7"
+
+"@keplr-wallet/common@0.12.28":
+ version "0.12.28"
+ resolved "https://registry.yarnpkg.com/@keplr-wallet/common/-/common-0.12.28.tgz#1d5d985070aced31a34a6426c9ac4b775081acca"
+ integrity sha512-ESQorPZw8PRiUXhsrxED+E1FEWkAdc6Kwi3Az7ce204gMBQDI2j0XJtTd4uCUp+C24Em9fk0samdHzdoB4caIg==
+ dependencies:
+ "@keplr-wallet/crypto" "0.12.28"
+ "@keplr-wallet/types" "0.12.28"
+ buffer "^6.0.3"
+ delay "^4.4.0"
+ mobx "^6.1.7"
+
+"@keplr-wallet/cosmos@0.10.24-ibc.go.v7.hot.fix":
version "0.10.24-ibc.go.v7.hot.fix"
resolved "https://registry.npmjs.org/@keplr-wallet/cosmos/-/cosmos-0.10.24-ibc.go.v7.hot.fix.tgz"
integrity sha512-/A/wHyYo5gQIW5YkAQYZadEv/12EcAuDclO0KboIb9ti4XFJW6S4VY8LnA16R7DZyBx1cnQknyDm101fUrJfJQ==
@@ -5443,6 +5453,40 @@
long "^4.0.0"
protobufjs "^6.11.2"
+"@keplr-wallet/cosmos@0.12.12":
+ version "0.12.12"
+ resolved "https://registry.yarnpkg.com/@keplr-wallet/cosmos/-/cosmos-0.12.12.tgz#72c0505d2327bbf2f5cb51502acaf399b88b4ae3"
+ integrity sha512-9TLsefUIAuDqqf1WHBt9Bk29rPlkezmLM8P1eEsXGUaHBfuqUrO+RwL3eLA3HGcgNvdy9s8e0p/4CMInH/LLLQ==
+ dependencies:
+ "@ethersproject/address" "^5.6.0"
+ "@keplr-wallet/common" "0.12.12"
+ "@keplr-wallet/crypto" "0.12.12"
+ "@keplr-wallet/proto-types" "0.12.12"
+ "@keplr-wallet/simple-fetch" "0.12.12"
+ "@keplr-wallet/types" "0.12.12"
+ "@keplr-wallet/unit" "0.12.12"
+ bech32 "^1.1.4"
+ buffer "^6.0.3"
+ long "^4.0.0"
+ protobufjs "^6.11.2"
+
+"@keplr-wallet/cosmos@0.12.28":
+ version "0.12.28"
+ resolved "https://registry.yarnpkg.com/@keplr-wallet/cosmos/-/cosmos-0.12.28.tgz#d56e73468256e7276a66bb41f145449dbf11efa1"
+ integrity sha512-IuqmSBgKgIeWBA0XGQKKs28IXFeFMCrfadCbtiZccNc7qnNr5Y/Cyyk01BPC8Dd1ZyEyAByoICgrxvtGN0GGvA==
+ dependencies:
+ "@ethersproject/address" "^5.6.0"
+ "@keplr-wallet/common" "0.12.28"
+ "@keplr-wallet/crypto" "0.12.28"
+ "@keplr-wallet/proto-types" "0.12.28"
+ "@keplr-wallet/simple-fetch" "0.12.28"
+ "@keplr-wallet/types" "0.12.28"
+ "@keplr-wallet/unit" "0.12.28"
+ bech32 "^1.1.4"
+ buffer "^6.0.3"
+ long "^4.0.0"
+ protobufjs "^6.11.2"
+
"@keplr-wallet/crypto@0.10.24-ibc.go.v7.hot.fix":
version "0.10.24-ibc.go.v7.hot.fix"
resolved "https://registry.npmjs.org/@keplr-wallet/crypto/-/crypto-0.10.24-ibc.go.v7.hot.fix.tgz"
@@ -5515,7 +5559,7 @@
resolved "https://registry.npmjs.org/@keplr-wallet/popup/-/popup-0.10.24-ibc.go.v7.hot.fix.tgz"
integrity sha512-Q/teyV6vdmpH3SySGd1xrNc/mVGK/tCP5vFEG2I3Y4FDCSV1yD7vcVgUy+tN19Z8EM3goR57V2QlarSOidtdjQ==
-"@keplr-wallet/proto-types@0.10.24-ibc.go.v7.hot.fix", "@keplr-wallet/proto-types@0.12.12":
+"@keplr-wallet/proto-types@0.10.24-ibc.go.v7.hot.fix":
version "0.10.24-ibc.go.v7.hot.fix"
resolved "https://registry.npmjs.org/@keplr-wallet/proto-types/-/proto-types-0.10.24-ibc.go.v7.hot.fix.tgz"
integrity sha512-fLUJEtDadYJIMBzhMSZpEDTvXqk8wW68TwnUCRAcAooEQEtXPwY5gfo3hcekQEiCYtIu8XqzJ9fg01rp2Z4d3w==
@@ -5523,6 +5567,22 @@
long "^4.0.0"
protobufjs "^6.11.2"
+"@keplr-wallet/proto-types@0.12.12":
+ version "0.12.12"
+ resolved "https://registry.yarnpkg.com/@keplr-wallet/proto-types/-/proto-types-0.12.12.tgz#24e0530af7604a90f33a397a82fe500865c76154"
+ integrity sha512-iAqqNlJpxu/8j+SwOXEH2ymM4W0anfxn+eNeWuqz2c/0JxGTWeLURioxQmCtewtllfHdDHHcoQ7/S+NmXiaEgQ==
+ dependencies:
+ long "^4.0.0"
+ protobufjs "^6.11.2"
+
+"@keplr-wallet/proto-types@0.12.28":
+ version "0.12.28"
+ resolved "https://registry.yarnpkg.com/@keplr-wallet/proto-types/-/proto-types-0.12.28.tgz#2fb2c37749ce7db974f01d07387e966c9b99027d"
+ integrity sha512-ukti/eCTltPUP64jxtk5TjtwJogyfKPqlBIT3KGUCGzBLIPeYMsffL5w5aoHsMjINzOITjYqzXyEF8LTIK/fmw==
+ dependencies:
+ long "^4.0.0"
+ protobufjs "^6.11.2"
+
"@keplr-wallet/provider-extension@^0.12.95":
version "0.12.107"
resolved "https://registry.yarnpkg.com/@keplr-wallet/provider-extension/-/provider-extension-0.12.107.tgz#98a0fb42cb0c54d4e681e60e6b1145429a6e3e23"
@@ -5598,12 +5658,32 @@
deepmerge "^4.2.2"
long "^4.0.0"
-"@keplr-wallet/router@0.10.24-ibc.go.v7.hot.fix", "@keplr-wallet/router@0.12.12", "@keplr-wallet/router@0.12.96":
+"@keplr-wallet/router@0.10.24-ibc.go.v7.hot.fix":
version "0.10.24-ibc.go.v7.hot.fix"
resolved "https://registry.npmjs.org/@keplr-wallet/router/-/router-0.10.24-ibc.go.v7.hot.fix.tgz"
integrity sha512-bt9weexlbhlh8KsOvbDrvHJ8jtUXrXgB2LX+hEAwjclHQt7PMUhx9a5z0Obd19/ive5G/1M7/ccdPIWxRBpKQw==
-"@keplr-wallet/types@0.10.24-ibc.go.v7.hot.fix", "@keplr-wallet/types@0.12.107", "@keplr-wallet/types@0.12.12", "@keplr-wallet/types@0.12.96", "@keplr-wallet/types@^0.12.95":
+"@keplr-wallet/router@0.12.12":
+ version "0.12.12"
+ resolved "https://registry.yarnpkg.com/@keplr-wallet/router/-/router-0.12.12.tgz#92a2c006aec6945ed313575af6b0801f8e84e315"
+ integrity sha512-Aa1TiVRIEPaqs1t27nCNs5Kz6Ty4CLarVdfqcRWlFQL6zFq33GT46s6K9U4Lz2swVCwdmerSXaq308K/GJHTlw==
+
+"@keplr-wallet/router@0.12.96":
+ version "0.12.96"
+ resolved "https://registry.yarnpkg.com/@keplr-wallet/router/-/router-0.12.96.tgz#6a20ed2c90ba3ed4f3fc43ed7513f72d7055482d"
+ integrity sha512-O8izj032ZKQIoTus96BFqem+w6NpYHU3j6NEnSaQBh6Zncj9fgjoOVs0CKK+jsuLYUsOHx2t86BxMSKESsR0Ug==
+
+"@keplr-wallet/simple-fetch@0.12.12":
+ version "0.12.12"
+ resolved "https://registry.yarnpkg.com/@keplr-wallet/simple-fetch/-/simple-fetch-0.12.12.tgz#aacc5c3f22b7ab2804b39e864725294a32f858fd"
+ integrity sha512-lCOsaI8upMpbusfwJqEK8VIEX77+QE8+8MJVRqoCYwjOTqKGdUH7D1ieZWh+pzvzOnVgedM3lxqdmCvdgU91qw==
+
+"@keplr-wallet/simple-fetch@0.12.28":
+ version "0.12.28"
+ resolved "https://registry.yarnpkg.com/@keplr-wallet/simple-fetch/-/simple-fetch-0.12.28.tgz#44225df5b329c823076280df1ec9930a21b1373e"
+ integrity sha512-T2CiKS2B5n0ZA7CWw0CA6qIAH0XYI1siE50MP+i+V0ZniCGBeL+BMcDw64vFJUcEH+1L5X4sDAzV37fQxGwllA==
+
+"@keplr-wallet/types@0.10.24-ibc.go.v7.hot.fix":
version "0.10.24-ibc.go.v7.hot.fix"
resolved "https://registry.npmjs.org/@keplr-wallet/types/-/types-0.10.24-ibc.go.v7.hot.fix.tgz"
integrity sha512-3KUjDMUCscYkvKnC+JsJh9+X0NHlsvBgAghP/uy2p5OGtiULqPBAjWiO+hnBbhis3ZEkzGcCROnnBOoccKd3CQ==
@@ -5614,6 +5694,41 @@
long "^4.0.0"
secretjs "^0.17.0"
+"@keplr-wallet/types@0.12.107":
+ version "0.12.107"
+ resolved "https://registry.yarnpkg.com/@keplr-wallet/types/-/types-0.12.107.tgz#8d6726d86e17a79131b4b6f4f114052d6384aa58"
+ integrity sha512-jBpjJO+nNL8cgsJLjZYoq84n+7nXHDdztTgRMVnnomFb+Vy0FVIEI8VUl89ImmHDUImDd0562ywsvA496/0yCA==
+ dependencies:
+ long "^4.0.0"
+
+"@keplr-wallet/types@0.12.12":
+ version "0.12.12"
+ resolved "https://registry.yarnpkg.com/@keplr-wallet/types/-/types-0.12.12.tgz#f4bd9e710d5e53504f6b53330abb45bedd9c20ae"
+ integrity sha512-fo6b8j9EXnJukGvZorifJWEm1BPIrvaTLuu5PqaU5k1ANDasm/FL1NaUuaTBVvhRjINtvVXqYpW/rVUinA9MBA==
+ dependencies:
+ long "^4.0.0"
+
+"@keplr-wallet/types@0.12.28":
+ version "0.12.28"
+ resolved "https://registry.yarnpkg.com/@keplr-wallet/types/-/types-0.12.28.tgz#eac3c2c9d4560856c5c403a87e67925992a04fbf"
+ integrity sha512-EcM9d46hYDm3AO4lf4GUbTSLRySONtTmhKb7p88q56OQOgJN3MMjRacEo2p9jX9gpPe7gRIjMUalhAfUiFpZoQ==
+ dependencies:
+ long "^4.0.0"
+
+"@keplr-wallet/types@0.12.96":
+ version "0.12.96"
+ resolved "https://registry.yarnpkg.com/@keplr-wallet/types/-/types-0.12.96.tgz#a7735051b1f7cbcdf9b8c29010b1c3c45d195c19"
+ integrity sha512-tr4tPjMrJCsfRXXhhmqnpb9DqH9auJp3uuj8SvDB3pQTTaYJNxkdonLv1tYmXZZ6J9oWtk9WVEDTVgBQN/wisw==
+ dependencies:
+ long "^4.0.0"
+
+"@keplr-wallet/types@^0.12.95":
+ version "0.12.156"
+ resolved "https://registry.yarnpkg.com/@keplr-wallet/types/-/types-0.12.156.tgz#5e9346c12065a21394fa45112ad1b7a072e0f3f3"
+ integrity sha512-Z/Lf6VEsl/Am3birKE8ZEVZj/x5YGSoTdFMDtq/EfcB+hcJ/ogoiZTVEBweAig/2zcu7MsZvFTVMEXu5+y3e4A==
+ dependencies:
+ long "^4.0.0"
+
"@keplr-wallet/unit@0.10.24-ibc.go.v7.hot.fix":
version "0.10.24-ibc.go.v7.hot.fix"
resolved "https://registry.npmjs.org/@keplr-wallet/unit/-/unit-0.10.24-ibc.go.v7.hot.fix.tgz"
@@ -5623,6 +5738,24 @@
big-integer "^1.6.48"
utility-types "^3.10.0"
+"@keplr-wallet/unit@0.12.12":
+ version "0.12.12"
+ resolved "https://registry.yarnpkg.com/@keplr-wallet/unit/-/unit-0.12.12.tgz#2d7f2e38df4e09c8123dcc0784ffc4b5f4166217"
+ integrity sha512-fayJcfXWKUnbDZiRJHyuA9GMVS9DymjRlCzlpAJ0+xV0c4Kun/f+9FajL9OQAdPPhnJ7A3KevMI4VHZsd9Yw+A==
+ dependencies:
+ "@keplr-wallet/types" "0.12.12"
+ big-integer "^1.6.48"
+ utility-types "^3.10.0"
+
+"@keplr-wallet/unit@0.12.28":
+ version "0.12.28"
+ resolved "https://registry.yarnpkg.com/@keplr-wallet/unit/-/unit-0.12.28.tgz#907c7fa0b49a729cda207fca14fc0a38871cc6c4"
+ integrity sha512-kpXigHDBJGOmhtPkv9hqsQid9zkFo7OQPeKgO2n8GUlOINIXW6kWG5LXYTi/Yg9Uiw1CQF69gFMuZCJ8IzVHlA==
+ dependencies:
+ "@keplr-wallet/types" "0.12.28"
+ big-integer "^1.6.48"
+ utility-types "^3.10.0"
+
"@keplr-wallet/wc-client@^0.12.95":
version "0.12.96"
resolved "https://registry.yarnpkg.com/@keplr-wallet/wc-client/-/wc-client-0.12.96.tgz#a56995172dcdc73d32b24d5a704a954062befc2a"
@@ -6012,16 +6145,6 @@
superstruct "^1.0.3"
uuid "^9.0.1"
-"@motionone/animation@^10.12.0":
- version "10.18.0"
- resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.18.0.tgz#868d00b447191816d5d5cf24b1cafa144017922b"
- integrity sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==
- dependencies:
- "@motionone/easing" "^10.18.0"
- "@motionone/types" "^10.17.1"
- "@motionone/utils" "^10.18.0"
- tslib "^2.3.1"
-
"@motionone/animation@^10.15.1", "@motionone/animation@^10.17.0":
version "10.17.0"
resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.17.0.tgz#7633c6f684b5fee2b61c405881b8c24662c68fca"
@@ -6032,18 +6155,6 @@
"@motionone/utils" "^10.17.0"
tslib "^2.3.1"
-"@motionone/dom@10.12.0":
- version "10.12.0"
- resolved "https://registry.yarnpkg.com/@motionone/dom/-/dom-10.12.0.tgz#ae30827fd53219efca4e1150a5ff2165c28351ed"
- integrity sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==
- dependencies:
- "@motionone/animation" "^10.12.0"
- "@motionone/generators" "^10.12.0"
- "@motionone/types" "^10.12.0"
- "@motionone/utils" "^10.12.0"
- hey-listen "^1.0.8"
- tslib "^2.3.1"
-
"@motionone/dom@^10.16.2", "@motionone/dom@^10.16.4":
version "10.17.0"
resolved "https://registry.yarnpkg.com/@motionone/dom/-/dom-10.17.0.tgz#519dd78aab0750a94614c69a82da5290cd617383"
@@ -6064,23 +6175,6 @@
"@motionone/utils" "^10.17.0"
tslib "^2.3.1"
-"@motionone/easing@^10.18.0":
- version "10.18.0"
- resolved "https://registry.yarnpkg.com/@motionone/easing/-/easing-10.18.0.tgz#7b82f6010dfee3a1bb0ee83abfbaff6edae0c708"
- integrity sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==
- dependencies:
- "@motionone/utils" "^10.18.0"
- tslib "^2.3.1"
-
-"@motionone/generators@^10.12.0":
- version "10.18.0"
- resolved "https://registry.yarnpkg.com/@motionone/generators/-/generators-10.18.0.tgz#fe09ab5cfa0fb9a8884097feb7eb60abeb600762"
- integrity sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==
- dependencies:
- "@motionone/types" "^10.17.1"
- "@motionone/utils" "^10.18.0"
- tslib "^2.3.1"
-
"@motionone/generators@^10.17.0":
version "10.17.0"
resolved "https://registry.yarnpkg.com/@motionone/generators/-/generators-10.17.0.tgz#878d292539c41434c13310d5f863a87a94e6e689"
@@ -6098,25 +6192,11 @@
"@motionone/dom" "^10.16.4"
tslib "^2.3.1"
-"@motionone/types@^10.12.0", "@motionone/types@^10.17.1":
- version "10.17.1"
- resolved "https://registry.yarnpkg.com/@motionone/types/-/types-10.17.1.tgz#cf487badbbdc9da0c2cb86ffc1e5d11147c6e6fb"
- integrity sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==
-
"@motionone/types@^10.15.1", "@motionone/types@^10.17.0":
version "10.17.0"
resolved "https://registry.yarnpkg.com/@motionone/types/-/types-10.17.0.tgz#179571ce98851bac78e19a1c3974767227f08ba3"
integrity sha512-EgeeqOZVdRUTEHq95Z3t8Rsirc7chN5xFAPMYFobx8TPubkEfRSm5xihmMUkbaR2ErKJTUw3347QDPTHIW12IA==
-"@motionone/utils@^10.12.0", "@motionone/utils@^10.18.0":
- version "10.18.0"
- resolved "https://registry.yarnpkg.com/@motionone/utils/-/utils-10.18.0.tgz#a59ff8932ed9009624bca07c56b28ef2bb2f885e"
- integrity sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==
- dependencies:
- "@motionone/types" "^10.17.1"
- hey-listen "^1.0.8"
- tslib "^2.3.1"
-
"@motionone/utils@^10.15.1", "@motionone/utils@^10.17.0":
version "10.17.0"
resolved "https://registry.yarnpkg.com/@motionone/utils/-/utils-10.17.0.tgz#cc0ba8acdc6848ff48d8c1f2d0d3e7602f4f942e"
@@ -7845,6 +7925,14 @@
recyclerlistview "4.2.1"
tslib "2.6.3"
+"@shopify/react-native-skia@1.5.0":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/@shopify/react-native-skia/-/react-native-skia-1.5.0.tgz#2c771bb7b6ad49b4b1c1cfb3ed47c06c22203f87"
+ integrity sha512-YNcw7cbksiMJ3d8uxh14LFRztUhjQFphFV/GCm8cSO4SxFc4niqnvsGklXNv68DLESMdn5hQnfYpa0oJqaW20w==
+ dependencies:
+ canvaskit-wasm "0.39.1"
+ react-reconciler "0.27.0"
+
"@sideway/address@^4.1.3":
version "4.1.3"
resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.3.tgz"
@@ -9770,6 +9858,11 @@
resolved "https://registry.yarnpkg.com/@web3-storage/multipart-parser/-/multipart-parser-1.0.0.tgz#6b69dc2a32a5b207ba43e556c25cc136a56659c4"
integrity sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==
+"@webgpu/types@0.1.21":
+ version "0.1.21"
+ resolved "https://registry.yarnpkg.com/@webgpu/types/-/types-0.1.21.tgz#b181202daec30d66ccd67264de23814cfd176d3a"
+ integrity sha512-pUrWq3V5PiSGFLeLxoGqReTZmiiXwY3jRkIG5sLLKjyqNxrwm/04b4nw7LSmGWJcKk59XOM/YRTUwOzo4MMlow==
+
"@xmldom/xmldom@^0.8.3", "@xmldom/xmldom@^0.8.8":
version "0.8.10"
resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99"
@@ -11381,6 +11474,13 @@ caniuse-lite@^1.0.30001669:
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz#5380ede637a33b9f9f1fc6045ea99bd142f3da5e"
integrity sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==
+canvaskit-wasm@0.39.1:
+ version "0.39.1"
+ resolved "https://registry.yarnpkg.com/canvaskit-wasm/-/canvaskit-wasm-0.39.1.tgz#c3c8f3962cbabbedf246f7bcf90e859013c7eae9"
+ integrity sha512-Gy3lCmhUdKq+8bvDrs9t8+qf7RvcjuQn+we7vTVVyqgOVO1UVfHpsnBxkTZw+R4ApEJ3D5fKySl9TU11hmjl/A==
+ dependencies:
+ "@webgpu/types" "0.1.21"
+
case@1.6.3:
version "1.6.3"
resolved "https://registry.npmjs.org/case/-/case-1.6.3.tgz"
@@ -14271,11 +14371,6 @@ expo-keep-awake@~14.0.1:
resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-14.0.1.tgz#77c38feefa95c494aa167e6df5a6eacd17af2358"
integrity sha512-c5mGCAIk2YM+Vsdy90BlEJ4ZX+KG5Au9EkJUIxXWlpnuKmDAJ3N+5nEZ7EUO1ZTheqoSBeAo4jJ8rTWPU+JXdw==
-expo-linear-gradient@~14.0.1:
- version "14.0.1"
- resolved "https://registry.yarnpkg.com/expo-linear-gradient/-/expo-linear-gradient-14.0.1.tgz#f93c518014b6eb5ee17ed6562db716640ad27f3e"
- integrity sha512-apGtUO9AZ52ZWvX9f6K9TamWw8XcUby7jZ0Pcvd5LxUO7pl7tDPx2VlKqpzbhhS4yfCiUwX58wqocwVnE/0ZVg==
-
expo-linking@~7.0.3:
version "7.0.3"
resolved "https://registry.yarnpkg.com/expo-linking/-/expo-linking-7.0.3.tgz#307851288ec65e1c533bcc70b57dfb6372f9679e"
@@ -14850,27 +14945,6 @@ fraction.js@^4.1.2:
resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.2.tgz"
integrity sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==
-framer-motion@^6.5.1:
- version "6.5.1"
- resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-6.5.1.tgz#802448a16a6eb764124bf36d8cbdfa6dd6b931a7"
- integrity sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==
- dependencies:
- "@motionone/dom" "10.12.0"
- framesync "6.0.1"
- hey-listen "^1.0.8"
- popmotion "11.0.3"
- style-value-types "5.0.0"
- tslib "^2.1.0"
- optionalDependencies:
- "@emotion/is-prop-valid" "^0.8.2"
-
-framesync@6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/framesync/-/framesync-6.0.1.tgz#5e32fc01f1c42b39c654c35b16440e07a25d6f20"
- integrity sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==
- dependencies:
- tslib "^2.1.0"
-
freeport-async@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/freeport-async/-/freeport-async-2.0.0.tgz#6adf2ec0c629d11abff92836acd04b399135bab4"
@@ -19662,13 +19736,6 @@ monocart-reporter@^2.6.0:
nodemailer "^6.9.14"
turbogrid "^3.2.0"
-moti@^0.29.0:
- version "0.29.0"
- resolved "https://registry.yarnpkg.com/moti/-/moti-0.29.0.tgz#bd8820749bbaae61ef28298b53fabb84fe4ad171"
- integrity sha512-o/blVE3lm0i/6E5X0RLK59SVWEGxo7pQh8dTm+JykVCYY9bcz0lWyZFCO1s+MMNq+nMsSZBX8lkp4im/AZmhyw==
- dependencies:
- framer-motion "^6.5.1"
-
motion@10.16.2:
version "10.16.2"
resolved "https://registry.yarnpkg.com/motion/-/motion-10.16.2.tgz#7dc173c6ad62210a7e9916caeeaf22c51e598d21"
@@ -21183,16 +21250,6 @@ pony-cause@^2.1.10:
resolved "https://registry.yarnpkg.com/pony-cause/-/pony-cause-2.1.10.tgz#828457ad6f13be401a075dbf14107a9057945174"
integrity sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw==
-popmotion@11.0.3:
- version "11.0.3"
- resolved "https://registry.yarnpkg.com/popmotion/-/popmotion-11.0.3.tgz#565c5f6590bbcddab7a33a074bb2ba97e24b0cc9"
- integrity sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==
- dependencies:
- framesync "6.0.1"
- hey-listen "^1.0.8"
- style-value-types "5.0.0"
- tslib "^2.1.0"
-
possible-typed-array-names@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f"
@@ -21835,6 +21892,11 @@ react-native-gesture-handler@~2.20.2:
invariant "^2.2.4"
prop-types "^15.7.2"
+react-native-graph@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/react-native-graph/-/react-native-graph-1.1.0.tgz#b0a98f96dc386d1a95aeec822a5db94ec9c3d3b4"
+ integrity sha512-jcPLfhOOzjNaug1yw4Y6RecqMTdsiW0dQD+VruOpgzUUIZivNHIQD4LCp3vqdpqhok/nqggviuHVAYQv1ICRTw==
+
react-native-helmet-async@2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/react-native-helmet-async/-/react-native-helmet-async-2.0.4.tgz#93f53a1ff22d6898039688a541653a2d6b6866bb"
@@ -21962,6 +22024,14 @@ react-native@0.76.2:
ws "^6.2.3"
yargs "^17.6.2"
+react-reconciler@0.27.0:
+ version "0.27.0"
+ resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.27.0.tgz#360124fdf2d76447c7491ee5f0e04503ed9acf5b"
+ integrity sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==
+ dependencies:
+ loose-envify "^1.1.0"
+ scheduler "^0.21.0"
+
react-refresh@^0.14.0, react-refresh@^0.14.2:
version "0.14.2"
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9"
@@ -22862,6 +22932,13 @@ scheduler@0.24.0-canary-efb381bbf-20230505:
dependencies:
loose-envify "^1.1.0"
+scheduler@^0.21.0:
+ version "0.21.0"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.21.0.tgz#6fd2532ff5a6d877b6edb12f00d8ab7e8f308820"
+ integrity sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==
+ dependencies:
+ loose-envify "^1.1.0"
+
scheduler@^0.23.2:
version "0.23.2"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3"
@@ -24040,14 +24117,6 @@ style-to-object@^0.4.0:
dependencies:
inline-style-parser "0.1.1"
-style-value-types@5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/style-value-types/-/style-value-types-5.0.0.tgz#76c35f0e579843d523187989da866729411fc8ad"
- integrity sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==
- dependencies:
- hey-listen "^1.0.8"
- tslib "^2.1.0"
-
styled-jsx@5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f"