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"