= {
assets: {
name: '',
diff --git a/src/pages/UniversalSwap/Swap/components/SelectToken/SelectToken.tsx b/src/pages/UniversalSwap/Swap/components/SelectToken/SelectToken.tsx
index 97f7a6835..3b354c0c4 100644
--- a/src/pages/UniversalSwap/Swap/components/SelectToken/SelectToken.tsx
+++ b/src/pages/UniversalSwap/Swap/components/SelectToken/SelectToken.tsx
@@ -84,6 +84,10 @@ export default function SelectToken({
(textSearch ? item.name.toLowerCase().includes(textSearch.toLowerCase()) : true)
);
+ console.log({
+ listItems
+ });
+
return (
<>
diff --git a/src/pages/UniversalSwap/Swap/hooks/useHandleEffectTokenChange.ts b/src/pages/UniversalSwap/Swap/hooks/useHandleEffectTokenChange.ts
index d1d11e878..a0994fdbb 100644
--- a/src/pages/UniversalSwap/Swap/hooks/useHandleEffectTokenChange.ts
+++ b/src/pages/UniversalSwap/Swap/hooks/useHandleEffectTokenChange.ts
@@ -26,6 +26,7 @@ const useHandleEffectTokenChange = ({ fromTokenDenomSwap, toTokenDenomSwap }) =>
const [metamaskAddress] = useConfigReducer('metamaskAddress');
const [tronAddress] = useConfigReducer('tronAddress');
+ const [tonAddress] = useConfigReducer('tonAddress');
const [oraiAddress] = useConfigReducer('address');
const [addressTransfer, setAddressTransfer] = useState('');
@@ -53,19 +54,23 @@ const useHandleEffectTokenChange = ({ fromTokenDenomSwap, toTokenDenomSwap }) =>
useEffect(() => {
(async () => {
if (!isMobile()) {
- if (!walletByNetworks.evm && !walletByNetworks.cosmos && !walletByNetworks.tron) {
- return setAddressTransfer('');
- }
+ const isNetworkSupported =
+ walletByNetworks.evm || walletByNetworks.cosmos || walletByNetworks.tron || walletByNetworks.ton;
- if (originalToToken.cosmosBased && !walletByNetworks.cosmos) {
+ if (!isNetworkSupported) {
return setAddressTransfer('');
}
- if (!originalToToken.cosmosBased && originalToToken.chainId === '0x2b6653dc' && !walletByNetworks.tron) {
- return setAddressTransfer('');
- }
+ const isCosmosBased = originalToToken.cosmosBased;
+ const chainId = originalToToken.chainId;
- if (!originalToToken.cosmosBased && !walletByNetworks.evm) {
+ if (
+ (isCosmosBased && !walletByNetworks.cosmos) ||
+ (!isCosmosBased &&
+ ((chainId === '0x2b6653dc' && !walletByNetworks.tron) ||
+ (chainId === 'ton' && !walletByNetworks.ton) ||
+ (['0x01', '0x38'].includes(chainId) && !walletByNetworks.evm)))
+ ) {
return setAddressTransfer('');
}
}
@@ -83,11 +88,14 @@ const useHandleEffectTokenChange = ({ fromTokenDenomSwap, toTokenDenomSwap }) =>
oraiAddress,
metamaskAddress,
tronAddress,
+ tonAddress,
walletByNetworks.evm,
walletByNetworks.cosmos,
walletByNetworks.tron,
+ walletByNetworks.ton,
window?.ethereumDapp,
- window?.tronWebDapp
+ window?.tronWebDapp,
+ window?.Ton
]);
useEffect(() => {
@@ -113,7 +121,7 @@ const useHandleEffectTokenChange = ({ fromTokenDenomSwap, toTokenDenomSwap }) =>
}, [originalFromToken, fromToken]);
const isConnectedWallet =
- walletByNetworks.cosmos || walletByNetworks.bitcoin || walletByNetworks.evm || walletByNetworks.tron;
+ walletByNetworks.cosmos || walletByNetworks.bitcoin || walletByNetworks.evm || walletByNetworks.tron || window.Ton;
let validAddress = {
isValid: true
diff --git a/src/pages/UniversalSwap/Swap/index.tsx b/src/pages/UniversalSwap/Swap/index.tsx
index 571056144..f78bd01b1 100644
--- a/src/pages/UniversalSwap/Swap/index.tsx
+++ b/src/pages/UniversalSwap/Swap/index.tsx
@@ -85,6 +85,7 @@ import useCalculateDataSwap, { SIMULATE_INIT_AMOUNT } from './hooks/useCalculate
import { useFillToken } from './hooks/useFillToken';
import useHandleEffectTokenChange from './hooks/useHandleEffectTokenChange';
import styles from './index.module.scss';
+import TonWallet from '@oraichain/tonbridge-sdk/build/wallet';
const cx = cn.bind(styles);
@@ -97,6 +98,7 @@ const SwapComponent: React.FC<{
const [metamaskAddress] = useConfigReducer('metamaskAddress');
const [tronAddress] = useConfigReducer('tronAddress');
const [oraiAddress] = useConfigReducer('address');
+ const [tonAddress] = useConfigReducer('tonAddress');
const [walletByNetworks] = useWalletReducer('walletsByNetwork');
const [theme] = useConfigReducer('theme');
const isLightMode = theme === 'light';
@@ -320,8 +322,25 @@ const SwapComponent: React.FC<{
const isCustomRecipient = validAddress.isValid && addressTransfer !== initAddressTransfer;
const alphaSmartRoutes = simulateData?.routes;
+ let tonWallet = undefined;
+ if ([originalFromToken.chainId, originalToToken.chainId].includes('ton') && !!walletByNetworks.ton) {
+ tonWallet = await TonWallet.create('mainnet', {
+ mnemonicData: {
+ mnemonic: undefined,
+ tonWalletVersion: 'V4'
+ },
+ tonConnector: window?.Ton as any
+ });
+ }
+
+ const tonAddress = tonWallet?.sender?.address?.toString();
const swapData = {
- sender: { cosmos: cosmosAddress, evm: checksumMetamaskAddress, tron: tronAddress },
+ sender: {
+ cosmos: cosmosAddress,
+ evm: checksumMetamaskAddress,
+ tron: tronAddress,
+ ton: tonAddress
+ },
originalFromToken,
originalToToken,
fromAmount: fromAmountToken,
@@ -339,6 +358,7 @@ const SwapComponent: React.FC<{
const univeralSwapHandler = new UniversalSwapHandler(swapData, {
cosmosWallet: window.Keplr,
evmWallet: new Metamask(window.tronWebDapp),
+ tonWallet,
swapOptions: {
isAlphaIbcWasm: useAlphaIbcWasm,
isIbcWasm: useIbcWasm,
@@ -348,12 +368,14 @@ const SwapComponent: React.FC<{
}
});
- const { transactionHash } = await univeralSwapHandler.processUniversalSwap();
+ const result = await univeralSwapHandler.processUniversalSwap();
+ let transactionHash = result?.transactionHash;
+
if (transactionHash) {
displayToast(TToastType.TX_SUCCESSFUL, {
customLink: getTransactionUrl(originalFromToken.chainId, transactionHash)
});
- loadTokenAmounts({ oraiAddress, metamaskAddress, tronAddress });
+ loadTokenAmounts({ oraiAddress, metamaskAddress, tronAddress, tonAddress });
setSwapLoading(false);
// save to duckdb
@@ -670,7 +692,14 @@ const SwapComponent: React.FC<{
loadingRefresh,
setLoadingRefresh,
// TODO: need add bitcoinAddress when universal swap support bitcoin
- { metamaskAddress, tronAddress, oraiAddress, btcAddress: undefined, solAddress: undefined },
+ {
+ metamaskAddress,
+ tronAddress,
+ oraiAddress,
+ tonAddress,
+ btcAddress: undefined,
+ solAddress: undefined
+ },
loadTokenAmounts
)
}
diff --git a/src/pages/UniversalSwap/helpers.ts b/src/pages/UniversalSwap/helpers.ts
index dfc6b4a11..46c9d3951 100644
--- a/src/pages/UniversalSwap/helpers.ts
+++ b/src/pages/UniversalSwap/helpers.ts
@@ -193,6 +193,8 @@ export const getExplorerScan = (chainId: NetworkChainId) => {
return 'https://scan.kawaii.global/tx';
case 'noble-1':
return 'https://www.mintscan.io/noble/tx';
+ case 'ton':
+ return 'https://tonscan.org/address';
default:
return 'https://scan.orai.io/txs';
}
@@ -279,13 +281,13 @@ export const getTokenIcon = (token: TokenItemType, theme: string) => {
export const refreshBalances = async (
loadingRefresh: boolean,
setLoadingRefresh: (boolean) => void,
- { metamaskAddress, tronAddress, oraiAddress, btcAddress, solAddress },
+ { metamaskAddress, tronAddress, oraiAddress, btcAddress, solAddress, tonAddress },
callback
) => {
try {
if (loadingRefresh) return;
setLoadingRefresh(true);
- await callback({ metamaskAddress, tronAddress, oraiAddress, btcAddress, solAddress });
+ await callback({ metamaskAddress, tronAddress, oraiAddress, btcAddress, solAddress, tonAddress });
} catch (err) {
console.log({ err });
} finally {
@@ -338,11 +340,6 @@ export const getDisableSwap = ({
simulateData,
isLoadingSimulate
}) => {
- const mobileMode = isMobile();
- const canSwapToCosmos = !mobileMode && originalToToken.cosmosBased && !walletByNetworks.cosmos;
- const canSwapToEvm = !mobileMode && !originalToToken.cosmosBased && !walletByNetworks.evm;
- const canSwapToTron = !mobileMode && originalToToken.chainId === '0x2b6653dc' && !walletByNetworks.tron;
- const canSwapTo = canSwapToCosmos || canSwapToEvm || canSwapToTron;
const disabledSwapBtn =
swapLoading ||
!fromAmountToken ||
@@ -350,15 +347,11 @@ export const getDisableSwap = ({
fromAmountTokenBalance > fromTokenBalance || // insufficent fund
!addressTransfer ||
!validAddress.isValid ||
- isLoadingSimulate ||
- canSwapTo;
+ isLoadingSimulate;
let disableMsg: string;
if (!validAddress.isValid) disableMsg = `Recipient address not found`;
if (!addressTransfer) disableMsg = `Recipient address not found`;
- if (canSwapToCosmos) disableMsg = `Please connect cosmos wallet`;
- if (canSwapToEvm) disableMsg = `Please connect evm wallet`;
- if (canSwapToTron) disableMsg = `Please connect tron wallet`;
if (!simulateData || simulateData.displayAmount <= 0) disableMsg = 'Enter an amount';
if (fromAmountTokenBalance > fromTokenBalance) disableMsg = `Insufficient funds`;
if (isLoadingSimulate) disableMsg = `Swap`;
@@ -379,7 +372,7 @@ export const getProtocolsSmartRoute = (
) => {
const protocols = ['Oraidex', 'OraidexV3'];
if (useIbcWasm && !useAlphaIbcWasm) return protocols;
- if (fromToken.chainId === 'noble-1' || toToken?.chainId === 'noble-1') return protocols;
+ if (fromToken?.chainId === 'noble-1' || toToken?.chainId === 'noble-1') return protocols;
const allowOsmosisProtocols = ['injective-1', 'Neutaro-1', 'noble-1', 'osmosis-1', 'cosmoshub-4', 'celestia'];
const isAllowOsmosisProtocol =
diff --git a/src/reducer/config.ts b/src/reducer/config.ts
index 5d7b370fb..71637cdb8 100644
--- a/src/reducer/config.ts
+++ b/src/reducer/config.ts
@@ -20,12 +20,16 @@ export type RewardPoolType = {
liquidity_token: string;
};
+type WalletTonDetails = { [denom: string]: string };
+
export interface ConfigState {
address: string;
metamaskAddress: string | null;
tronAddress: string | null;
btcAddress: string | null;
solAddress: string | null;
+ tonAddress: string | null;
+ walletsTon: WalletTonDetails; // ton wallets for bridge adapter
cosmosAddress: { [key: string]: string };
allPendingDeposits: { [key: string]: DepositInfo[] };
chainId: string;
@@ -71,8 +75,10 @@ const initialState: ConfigState = {
metamaskAddress: '',
bannerTime: 0,
btcAddress: '',
+ tonAddress: '',
tronAddress: '',
solAddress: '',
+ walletsTon: {},
walletTypeStore: 'owallet',
cosmosAddress: {},
allPendingDeposits: {},
diff --git a/src/reducer/poolDetailV3.ts b/src/reducer/poolDetailV3.ts
index 64deeb7e3..144cabd09 100644
--- a/src/reducer/poolDetailV3.ts
+++ b/src/reducer/poolDetailV3.ts
@@ -66,11 +66,11 @@ const initialState: PoolDetailV3State = {
tokenY: null,
isXToY: true,
historicalRange: '7d',
- cache7Day: [],
- cache1Month: [],
- cache3Month: [],
- cache1Year: [],
- historicalChartData: [],
+ cache7Day: null,
+ cache1Month: null,
+ cache3Month: null,
+ cache1Year: null,
+ historicalChartData: null,
fullRange: false,
xRange: null,
yRange: null,
@@ -329,7 +329,7 @@ export const fetchHistoricalPriceData3M = createAsyncThunk(
export const fetchHistoricalPriceData7D = createAsyncThunk(
'poolDetailV3/fetchHistoricalPriceData7D',
async (poolId: string) => {
- return await getHistoricalPriceDataInDay(poolId, '7d');
+ return await getHistoricalPriceDataInHour(poolId, '7d');
}
);
diff --git a/src/reducer/wallet.ts b/src/reducer/wallet.ts
index ab9b7e9c2..428ac094c 100644
--- a/src/reducer/wallet.ts
+++ b/src/reducer/wallet.ts
@@ -7,6 +7,7 @@ export type WalletsByNetwork = {
tron: 'owallet' | 'tronLink' | null;
bitcoin: 'owallet' | null;
solana: 'phantom' | 'owallet' | null;
+ ton: 'ton' | null;
};
export interface WalletState {
@@ -19,7 +20,8 @@ const initialState: WalletState = {
evm: null,
tron: null,
bitcoin: null,
- solana: null
+ solana: null,
+ ton: null
}
};
diff --git a/src/rest/graphClient.ts b/src/rest/graphClient.ts
index 5ef68787a..31681cd4f 100644
--- a/src/rest/graphClient.ts
+++ b/src/rest/graphClient.ts
@@ -684,7 +684,7 @@ export const getHistoricalPriceDataInDay = async (
default:
dayIndex = currentIndex - 7;
}
-
+
// create array of chunkOffset: [dayIndex, dayIndex + CHUNK_QUERY, ...] to current Index
const length = Math.ceil((currentIndex - dayIndex) / CHUNK_QUERY);
const chunkOffset = Array.from({ length }, (_, i) => dayIndex + i * CHUNK_QUERY);
diff --git a/src/styles/_reboot.scss b/src/styles/_reboot.scss
index 512ec48d8..cb0298b94 100644
--- a/src/styles/_reboot.scss
+++ b/src/styles/_reboot.scss
@@ -117,3 +117,8 @@ textarea {
[type='number']::-webkit-outer-spin-button {
-webkit-appearance: none;
}
+
+#tc-widget-root {
+ position: absolute;
+ z-index: 1022; // set for zindex above react-modal (1021)
+}
diff --git a/src/styles/_themes.scss b/src/styles/_themes.scss
index 8259cc75c..89ed6c368 100644
--- a/src/styles/_themes.scss
+++ b/src/styles/_themes.scss
@@ -159,7 +159,8 @@ $themes: (
'neutral-text-btn-default': #152703,
'neutral-surface-bg-3': #f7f7f7,
'neutral-surface-bg-swap': #1b1d19,
- 'neutral-surface-bg-strong': #131412
+ 'neutral-surface-bg-strong': #131412,
+ 'neutral-surface-bg-box': #232521
),
light: (
'warning-surface-default-subtle': #fffdeb,
@@ -266,6 +267,7 @@ $themes: (
'bg-overlay-section': rgba(255, 255, 255, 0.5),
'neutral-surface-bg-3': #181a17,
'neutral-surface-bg-swap': #fff,
- 'neutral-surface-bg-strong': #f2f4f0
+ 'neutral-surface-bg-strong': #f2f4f0,
+ 'neutral-surface-bg-box': #f2f4f0
)
);
diff --git a/src/types/global.d.ts b/src/types/global.d.ts
index 1e51c7b6a..b32fa718a 100644
--- a/src/types/global.d.ts
+++ b/src/types/global.d.ts
@@ -10,6 +10,7 @@ import { Networks as _Networks } from 'libs/ethereum-multicall/enums';
import { DuckDb } from 'libs/duckdb';
import { Class } from '@oraichain/common-contracts-sdk/build/CwIcs721Bridge.types';
import Bitcoin, { IBitcoin } from 'libs/bitcoin';
+import { TonConnectUI } from '@tonconnect/ui-react';
declare global {
type AmountDetails = { [denom: string]: string };
@@ -117,6 +118,7 @@ declare global {
Wallet: Wallet;
Keplr: Keplr;
Bitcoin: Bitcoin;
+ Ton: TonConnectUI;
tronWeb: _TronWeb;
tronLink: TronLink;
ethereum: MetaMaskEthereumProvider;
diff --git a/vite.config.ts b/vite.config.ts
index d19df1a10..3d7519977 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -40,5 +40,10 @@ export default defineConfig({
},
optimizeDeps: {
exclude: ['node_modules/.cache']
+ },
+ esbuild: {
+ supported: {
+ 'top-level-await': true //browsers can handle top-level-await features
+ }
}
});
diff --git a/yarn.lock b/yarn.lock
index a24bf9707..c01a98d0d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3847,10 +3847,10 @@
react-use "^17.4.0"
react-use-websocket "^4.5.0"
-"@oraichain/oraidex-common@1.1.39", "@oraichain/oraidex-common@^1.1.27", "@oraichain/oraidex-common@^1.1.32":
- version "1.1.39"
- resolved "https://registry.yarnpkg.com/@oraichain/oraidex-common/-/oraidex-common-1.1.39.tgz#6fe8ab3435d131a412d9f5876801a8709fb50073"
- integrity sha512-CggmZqynoSYUzah0n+Q4bbcIopDOaH09nfd4/w/0HbqWN9Sn0hWk0wIqotaXRxO2EXJk4NEsn+yZNrfwFY63vw==
+"@oraichain/oraidex-common@1.1.32-beta.8", "@oraichain/oraidex-common@1.1.40-beta.1", "@oraichain/oraidex-common@^1.1.32", "@oraichain/oraidex-common@^1.1.6":
+ version "1.1.40-beta.1"
+ resolved "https://registry.yarnpkg.com/@oraichain/oraidex-common/-/oraidex-common-1.1.40-beta.1.tgz#db74f7bf3a34c2bc8dc965f6f4b44a7a0951b478"
+ integrity sha512-17KpgbJyHwqEfndmASqkn7X4WZBeIXy0ONzzg5vwaVIsuBKx76hqah14chtqWUIDJSdd7FFeR16KhIAlMWOnYg==
dependencies:
"@cosmjs/amino" "^0.32.4"
"@cosmjs/cosmwasm-stargate" "^0.32.4"
@@ -3889,13 +3889,13 @@
resolved "https://registry.yarnpkg.com/@oraichain/oraidex-contracts-sdk/-/oraidex-contracts-sdk-1.0.45.tgz#42dae0fdd9e005f920ba305b987009f791acc365"
integrity sha512-/nYztdxEX5LQM4DMJQmi9HvZrBVoY3nLAmYqSKZGZ0U1h1SxU7O/o22R3/pQwB+sAJdcibaI8ygC0ov7jC8paA==
-"@oraichain/oraidex-universal-swap@1.1.23":
- version "1.1.23"
- resolved "https://registry.yarnpkg.com/@oraichain/oraidex-universal-swap/-/oraidex-universal-swap-1.1.23.tgz#2f6c5485728f096cbc11fba517376737c899e610"
- integrity sha512-gSk4B84kT2qGx7Nc2uqiRQevS1447DWgmNAOdx4mNDUB4a6nJ79ie/hYGYemddEv6UQ1T/ppao9oxVjWmBecmQ==
+"@oraichain/oraidex-universal-swap@1.1.23-beta.1":
+ version "1.1.23-beta.1"
+ resolved "https://registry.yarnpkg.com/@oraichain/oraidex-universal-swap/-/oraidex-universal-swap-1.1.23-beta.1.tgz#8cc21ab2cccc09adecbe76cfcd28a21ff8140e8f"
+ integrity sha512-ET51KRav/gfXxoqM/3jB8ueLJcXY/GMnKMNq0q+ORTwu63ww5U8svYyljigCzoJlPlIU80zpwRkbLV61Gl6qOg==
dependencies:
"@oraichain/common" "^1.0.3"
- "@oraichain/oraidex-common" "^1.1.27"
+ "@oraichain/oraidex-common" "1.1.32-beta.8"
"@oraichain/oraidex-contracts-sdk" "^1.0.49"
"@oraichain/osor-api-contracts-sdk" "^1.0.2"
bech32 "1.1.4"
@@ -3922,11 +3922,49 @@
"@cosmjs/crypto" "0.31.3"
"@cosmjs/proto-signing" "0.31.3"
+"@oraichain/ton-bridge-contracts@^0.15.8":
+ version "0.15.9"
+ resolved "https://registry.yarnpkg.com/@oraichain/ton-bridge-contracts/-/ton-bridge-contracts-0.15.9.tgz#279f78ac434d5df69ccf2e51c01e57484789e91e"
+ integrity sha512-M4ukzlCkPRS+3S+05g/P+82fXjBCe05kBqpJiaZkUDAN7UDbRQJH480AZWl8HotPiM1Ae2TKNl8GPivNmzmwRA==
+ dependencies:
+ "@cosmjs/tendermint-rpc" "^0.32.4"
+ "@orbs-network/ton-access" "^2.3.3"
+ "@types/varstruct" "^6.1.3"
+ cosmjs-types "^0.9.0"
+ dotenv "^16.4.5"
+ varstruct "^6.1.3"
+
+"@oraichain/tonbridge-contracts-sdk@^1.3.1", "@oraichain/tonbridge-contracts-sdk@^1.3.6":
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/@oraichain/tonbridge-contracts-sdk/-/tonbridge-contracts-sdk-1.3.6.tgz#1ee1309e6bb8e186eaa5d706c7d32276ef976402"
+ integrity sha512-k1DgzfYg3nQNPn2dLiXbkDHXd1WREQA9Dl0ezQ5kPtnlbNK9XjmxSco2gmaJwql0tE3cbBExUflfG0MaRF0dWw==
+
+"@oraichain/tonbridge-sdk@^1.3.6":
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/@oraichain/tonbridge-sdk/-/tonbridge-sdk-1.4.2.tgz#05722298dfd0bdbc4feaa45eb652d98361619638"
+ integrity sha512-pMj/y76S87b/GT4cNjp0oZ+J86tb/vPE0Kcm9vfi9SIMMYeWsk/H5AVlzoYevPrZflkzIA6l/vx+oHkMxpoVyQ==
+ dependencies:
+ "@oraichain/common-contracts-sdk" "^1.0.31"
+ "@oraichain/oraidex-common" "^1.1.6"
+ "@oraichain/ton-bridge-contracts" "^0.15.8"
+ "@oraichain/tonbridge-contracts-sdk" "^1.3.6"
+ "@orbs-network/ton-access" "^2.3.3"
+ "@ton/core" "^0.56.3"
+ "@ton/ton" "^14.0.0"
+ "@tonconnect/ui-react" "^2.0.9"
+
"@oraichain/wasm-json-toolkit@^1.0.24":
version "1.0.24"
resolved "https://registry.yarnpkg.com/@oraichain/wasm-json-toolkit/-/wasm-json-toolkit-1.0.24.tgz#e9a431560e8e946fbb7ec257e5f13d9320ffd23a"
integrity sha512-j+8gN3dE3rqaiEUVVblt0dfJrE6RIsSkfqF08ISxRvHkH9Pe9exIOgxpCyd2Qn3liHj27hwth6R0ELw7y3QcLg==
+"@orbs-network/ton-access@^2.3.3":
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/@orbs-network/ton-access/-/ton-access-2.3.3.tgz#20292f83b52a75f451f185821180a7d9b829bcd3"
+ integrity sha512-b1miCPts7wBG9JKYgzXIRZQm/LMy5Uk1mNK8NzlcXHL3HRHJkkFbuYJGuj3IkWCiIicW3Ipp4sYnn3Fwo4oB0g==
+ dependencies:
+ isomorphic-fetch "^3.0.0"
+
"@parcel/watcher-android-arm64@2.5.0":
version "2.5.0"
resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz#e32d3dda6647791ee930556aee206fcd5ea0fb7a"
@@ -5489,6 +5527,114 @@
dependencies:
tippy.js "^6.3.1"
+"@ton/core@^0.56.3":
+ version "0.56.3"
+ resolved "https://registry.yarnpkg.com/@ton/core/-/core-0.56.3.tgz#1162764573abb76032eba70f8497e5cb2ea532ee"
+ integrity sha512-HVkalfqw8zqLLPehtq0CNhu5KjVzc7IrbDwDHPjGoOSXmnqSobiWj8a5F+YuWnZnEbQKtrnMGNOOjVw4LG37rg==
+ dependencies:
+ symbol.inspect "1.0.1"
+
+"@ton/crypto-primitives@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@ton/crypto-primitives/-/crypto-primitives-2.1.0.tgz#8c9277c250b59aae3c819e0d6bd61e44d998e9ca"
+ integrity sha512-PQesoyPgqyI6vzYtCXw4/ZzevePc4VGcJtFwf08v10OevVJHVfW238KBdpj1kEDQkxWLeuNHEpTECNFKnP6tow==
+ dependencies:
+ jssha "3.2.0"
+
+"@ton/crypto@^3.3.0":
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/@ton/crypto/-/crypto-3.3.0.tgz#019103df6540fbc1d8102979b4587bc85ff9779e"
+ integrity sha512-/A6CYGgA/H36OZ9BbTaGerKtzWp50rg67ZCH2oIjV1NcrBaCK9Z343M+CxedvM7Haf3f/Ee9EhxyeTp0GKMUpA==
+ dependencies:
+ "@ton/crypto-primitives" "2.1.0"
+ jssha "3.2.0"
+ tweetnacl "1.0.3"
+
+"@ton/ton@^14.0.0":
+ version "14.0.0"
+ resolved "https://registry.yarnpkg.com/@ton/ton/-/ton-14.0.0.tgz#a66fbbfb159200892557442039a0341cda71fc2d"
+ integrity sha512-xb2CY6U0AlHUKc7DV7xK/K4Gqn6YoR253yUrM2E7L5WegVFsDF0CQRUIfpYACCuj1oUywQc5J2oMolYNu/uGkA==
+ dependencies:
+ axios "^1.6.7"
+ dataloader "^2.0.0"
+ symbol.inspect "1.0.1"
+ teslabot "^1.3.0"
+ zod "^3.21.4"
+
+"@tonconnect/isomorphic-eventsource@^0.0.2":
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/@tonconnect/isomorphic-eventsource/-/isomorphic-eventsource-0.0.2.tgz#e58c44cf9953e090f2c35da9a638946ddb614be5"
+ integrity sha512-B4UoIjPi0QkvIzZH5fV3BQLWrqSYABdrzZQSI9sJA9aA+iC0ohOzFwVVGXanlxeDAy1bcvPbb29f6sVUk0UnnQ==
+ dependencies:
+ eventsource "^2.0.2"
+
+"@tonconnect/isomorphic-fetch@^0.0.3":
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/@tonconnect/isomorphic-fetch/-/isomorphic-fetch-0.0.3.tgz#31978e04ddc4428eff532c23d20229ed5ddb6417"
+ integrity sha512-jIg5nTrDwnite4fXao3dD83eCpTvInTjZon/rZZrIftIegh4XxyVb5G2mpMqXrVGk1e8SVXm3Kj5OtfMplQs0w==
+ dependencies:
+ node-fetch "^2.6.9"
+
+"@tonconnect/protocol@^2.2.6":
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/@tonconnect/protocol/-/protocol-2.2.6.tgz#24b3fbcde6003e65fb5840a190072db5378699db"
+ integrity sha512-kyoDz5EqgsycYP+A+JbVsAUYHNT059BCrK+m0pqxykMODwpziuSAXfwAZmHcg8v7NB9VKYbdFY55xKeXOuEd0w==
+ dependencies:
+ tweetnacl "^1.0.3"
+ tweetnacl-util "^0.15.1"
+
+"@tonconnect/sdk@3.0.3":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@tonconnect/sdk/-/sdk-3.0.3.tgz#0cc6a570817194c648193f7a1db525419c570e3f"
+ integrity sha512-ElVre1DPixzQLgLtQIa8Wu5xS8nozlgblZTJhFFPrk82M2rZ+sawyF+LAVwt9wZRN7+htWnJrNz0+bBr4b3geA==
+ dependencies:
+ "@tonconnect/isomorphic-eventsource" "^0.0.2"
+ "@tonconnect/isomorphic-fetch" "^0.0.3"
+ "@tonconnect/protocol" "^2.2.6"
+
+"@tonconnect/sdk@3.0.5":
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/@tonconnect/sdk/-/sdk-3.0.5.tgz#08a202bdc8ea897c37221fd69925c35cd2106323"
+ integrity sha512-ow0qnN4s3iQ/r2uXobZ7YzdQBtan/36CgCT9IP35G07g38UxsUXwzw8ANmJTDj/JPiQcIKuYBMfIwIX9zLM0wg==
+ dependencies:
+ "@tonconnect/isomorphic-eventsource" "^0.0.2"
+ "@tonconnect/isomorphic-fetch" "^0.0.3"
+ "@tonconnect/protocol" "^2.2.6"
+
+"@tonconnect/ui-react@^2.0.6":
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/@tonconnect/ui-react/-/ui-react-2.0.6.tgz#9adadda97da0c8ff2e40eee5dbaa1693aa6662b5"
+ integrity sha512-9VRYP2o/YW4ti+rOMSptIYaRO39V5UFmzdUl18AmDFDdynjacAIht/IInO+AGAKfrnF9bUk/J5NgLcbxVqvZww==
+ dependencies:
+ "@tonconnect/ui" "2.0.6"
+
+"@tonconnect/ui-react@^2.0.9":
+ version "2.0.9"
+ resolved "https://registry.yarnpkg.com/@tonconnect/ui-react/-/ui-react-2.0.9.tgz#c226b81110e05b7e259bbf965ad5da42318a5dd3"
+ integrity sha512-wN7tEZpQiRYSUcdNAxFsDkk5TYo8krIu00ZLE1R5kXyr+XpO120jOmTEweBSXvIzTgEVkD/PxDZbBQQxRTXsUw==
+ dependencies:
+ "@tonconnect/ui" "2.0.9"
+
+"@tonconnect/ui@2.0.6":
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/@tonconnect/ui/-/ui-2.0.6.tgz#4cf092b3ff138238fa7ae7d4754d8bfed549d892"
+ integrity sha512-JMTSxgbnpDjpHi9g0s7w3tpAiLHa8BHUpaBrbSTDcKGQVEm7+NtqhN+gQkGkm8pV7NYRqiS/sKUpRQ1MyjtTBQ==
+ dependencies:
+ "@tonconnect/sdk" "3.0.3"
+ classnames "^2.3.2"
+ deepmerge "^4.2.2"
+ ua-parser-js "^1.0.35"
+
+"@tonconnect/ui@2.0.9":
+ version "2.0.9"
+ resolved "https://registry.yarnpkg.com/@tonconnect/ui/-/ui-2.0.9.tgz#589285c9b8f4b0d94c10b3feadfae266bf086503"
+ integrity sha512-ZxofTBf81NqrxyD0ybI8AuFHN11uKVg/00xTDFhP5FoPB8rYC7En9qE2VJ6IvwvtTpmh8jspi2ancOHUMBoCQA==
+ dependencies:
+ "@tonconnect/sdk" "3.0.5"
+ classnames "^2.3.2"
+ deepmerge "^4.2.2"
+ ua-parser-js "^1.0.35"
+
"@tootallnate/once@1":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
@@ -6267,6 +6413,13 @@
resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc"
integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==
+"@types/varstruct@^6.1.3":
+ version "6.1.3"
+ resolved "https://registry.yarnpkg.com/@types/varstruct/-/varstruct-6.1.3.tgz#dad39ad875eef0a9b9d63ae4e503cc3d5c456955"
+ integrity sha512-LgivtaEn0RHmVk+CHnIS95CtkV0xMAT6u1hPlr6qXNmYnDUU7ZhXM5fM7/byytaqXk7fNX8B/ibN1xpxe+X+hg==
+ dependencies:
+ "@types/node" "*"
+
"@types/w3c-web-usb@^1.0.6":
version "1.0.10"
resolved "https://registry.yarnpkg.com/@types/w3c-web-usb/-/w3c-web-usb-1.0.10.tgz#cf89cccd2d93b6245e784c19afe0a9f5038d4528"
@@ -8646,7 +8799,7 @@ cjson@^0.3.1:
dependencies:
json-parse-helpfulerror "^1.0.3"
-classnames@*, classnames@^2.2.6, classnames@^2.3.1:
+classnames@*, classnames@^2.2.6, classnames@^2.3.1, classnames@^2.3.2:
version "2.5.1"
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b"
integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==
@@ -9467,7 +9620,7 @@ data-urls@^5.0.0:
whatwg-mimetype "^4.0.0"
whatwg-url "^14.0.0"
-dataloader@^2.2.2:
+dataloader@^2.0.0, dataloader@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.2.2.tgz#216dc509b5abe39d43a9b9d97e6e5e473dfbe3e0"
integrity sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==
@@ -9565,7 +9718,7 @@ deep-is@^0.1.3, deep-is@~0.1.3:
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
-deepmerge@^4.3.1:
+deepmerge@^4.2.2, deepmerge@^4.3.1:
version "4.3.1"
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a"
integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==
@@ -9765,6 +9918,11 @@ dotenv@^16.0.0, dotenv@^16.3.1:
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f"
integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==
+dotenv@^16.4.5:
+ version "16.4.7"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26"
+ integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==
+
dotenv@^8.2.0:
version "8.6.0"
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b"
@@ -10489,6 +10647,11 @@ events@3.3.0, events@^3.0.0, events@^3.3.0:
resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
+eventsource@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-2.0.2.tgz#76dfcc02930fb2ff339520b6d290da573a9e8508"
+ integrity sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==
+
evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
@@ -11871,6 +12034,11 @@ install-artifact-from-github@^1.3.5:
resolved "https://registry.yarnpkg.com/install-artifact-from-github/-/install-artifact-from-github-1.3.5.tgz#88c96fe40e5eb21d45586d564208c648a1dbf38d"
integrity sha512-gZHC7f/cJgXz7MXlHFBxPVMsvIbev1OQN1uKQYKVJDydGNm9oYf9JstbU4Atnh/eSvk41WtEovoRm+8IF686xg==
+int53@^0.2.4:
+ version "0.2.4"
+ resolved "https://registry.yarnpkg.com/int53/-/int53-0.2.4.tgz#5ed8d7aad6c5c6567cae69aa7ffc4a109ee80f86"
+ integrity sha512-a5jlKftS7HUOhkUyYD7j2sJ/ZnvWiNlZS1ldR+g1ifQ+/UuZXIE+YTc/lK1qGj/GwAU5F8Z0e1eVq2t1J5Ob2g==
+
int64-buffer@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/int64-buffer/-/int64-buffer-1.0.1.tgz#c78d841b444cadf036cd04f8683696c740f15dca"
@@ -12736,6 +12904,11 @@ jsqr@^1.2.0:
resolved "https://registry.yarnpkg.com/jsqr/-/jsqr-1.4.0.tgz#8efb8d0a7cc6863cb6d95116b9069123ce9eb2d1"
integrity sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==
+jssha@3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/jssha/-/jssha-3.2.0.tgz#88ec50b866dd1411deaddbe6b3e3692e4c710f16"
+ integrity sha512-QuruyBENDWdN4tZwJbQq7/eAK85FqrI4oDbXjy5IBhYD+2pTJyBUWZe8ctWaCkrV0gy6AaelgOZZBMeswEa/6Q==
+
jwa@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a"
@@ -16657,6 +16830,11 @@ symbol-tree@^3.2.4:
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
+symbol.inspect@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/symbol.inspect/-/symbol.inspect-1.0.1.tgz#e13125b8038c4996eb0dfa1567332ad4dcd0763f"
+ integrity sha512-YQSL4duoHmLhsTD1Pw8RW6TZ5MaTX5rXJnqacJottr2P2LZBF/Yvrc3ku4NUpMOm8aM0KOCqM+UAkMA5HWQCzQ==
+
system-architecture@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/system-architecture/-/system-architecture-0.1.0.tgz#71012b3ac141427d97c67c56bc7921af6bff122d"
@@ -16714,6 +16892,11 @@ temp@^0.9.4:
mkdirp "^0.5.1"
rimraf "~2.6.2"
+teslabot@^1.3.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/teslabot/-/teslabot-1.5.0.tgz#70f544516699ca5f696d8ae94f3d12cd495d5cd6"
+ integrity sha512-e2MmELhCgrgZEGo7PQu/6bmYG36IDH+YrBI1iGm6jovXkeDIGa3pZ2WSqRjzkuw2vt1EqfkZoV5GpXgqL8QJVg==
+
test-exclude@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-7.0.1.tgz#20b3ba4906ac20994e275bbcafd68d510264c2a2"
@@ -17059,16 +17242,16 @@ tweetnacl-util@^0.15.1:
resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b"
integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==
+tweetnacl@1.0.3, tweetnacl@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596"
+ integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==
+
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
version "0.14.5"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==
-tweetnacl@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596"
- integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==
-
type-check@~0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
@@ -17536,6 +17719,14 @@ value-or-promise@^1.0.11, value-or-promise@^1.0.12:
resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.12.tgz#0e5abfeec70148c78460a849f6b003ea7986f15c"
integrity sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==
+varstruct@^6.1.3:
+ version "6.1.3"
+ resolved "https://registry.yarnpkg.com/varstruct/-/varstruct-6.1.3.tgz#45a8a073e41fb88adb10bc71158c945e20c57fbe"
+ integrity sha512-4l1Q7uxrVUBZXsMcb2cakrZL6gd4G+Ykn/m9cGnT4EY8iRBPkxOxKVDwOnL9AsIPKmREBx5BDqjfNMKKP6Zy2w==
+ dependencies:
+ int53 "^0.2.4"
+ safe-buffer "^5.1.1"
+
varuint-bitcoin@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-2.0.0.tgz#59a53845a87ad18c42f184a3d325074465341523"
@@ -18160,3 +18351,8 @@ zip-stream@^4.1.0:
archiver-utils "^3.0.4"
compress-commons "^4.1.2"
readable-stream "^3.6.0"
+
+zod@^3.21.4:
+ version "3.23.8"
+ resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d"
+ integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==