diff --git a/apps/main/src/api/balances.ts b/apps/main/src/api/balances.ts index f2c1c16b8a..a0c4f9188f 100644 --- a/apps/main/src/api/balances.ts +++ b/apps/main/src/api/balances.ts @@ -1,4 +1,3 @@ -import { QUERY_KEY_BLOCK_PREFIX } from "@galacticcouncil/utils" import { queryOptions } from "@tanstack/react-query" import Big from "big.js" import { millisecondsInMinute } from "date-fns/constants" @@ -24,7 +23,7 @@ export const nativeTokenLocksQuery = ( address: string, ) => { return queryOptions({ - queryKey: [QUERY_KEY_BLOCK_PREFIX, "balances", "native-lock", address], + queryKey: ["balances", "native-lock", address], queryFn: async () => { const locks = await papi.query.Balances.Locks.getValue(address) diff --git a/apps/main/src/api/borrow/queries.ts b/apps/main/src/api/borrow/queries.ts index b660cce73b..321d774264 100644 --- a/apps/main/src/api/borrow/queries.ts +++ b/apps/main/src/api/borrow/queries.ts @@ -1,6 +1,7 @@ import { DEFAULT_NULL_VALUE_ON_TX, ProtocolAction, + transactionType, } from "@aave/contract-helpers" import { Web3Provider } from "@ethersproject/providers" import { ExtendedFormattedUser } from "@galacticcouncil/money-market/hooks" @@ -549,19 +550,25 @@ export const useBorrowDisableCollateralTxs = () => { (reserve) => reserve.usageAsCollateralEnabledOnUser, ) + const poolInstance = poolContract.getContractInstance( + poolContract.poolAddress, + ) + return await Promise.all( activeCollaterals.map(async (collateral) => { - const collateralTxs = await poolContract.setUsageAsCollateral({ - reserve: collateral.underlyingAsset, - usageAsCollateral: false, - user: evmAddress, - }) + const txRaw = + await poolInstance.populateTransaction.setUserUseReserveAsCollateral( + collateral.underlyingAsset, + false, + ) - const tx = await collateralTxs - .find((tx) => "DLP_ACTION" === tx.txType) - ?.tx() + const tx: transactionType = { + ...txRaw, + from: evmAddress, + value: DEFAULT_NULL_VALUE_ON_TX, + } - if (!tx || !tx.from || !tx.to || !tx.data || !tx.gasLimit) { + if (!tx || !tx.from || !tx.to || !tx.data) { throw new Error( `Disable collateral transaction not found for ${collateral.underlyingAsset}`, ) @@ -570,7 +577,7 @@ export const useBorrowDisableCollateralTxs = () => { const { gasLimit, maxFeePerGas, maxPriorityFeePerGas } = await estimateGasLimit({ evm, - gasLimit: tx.gasLimit.toString(), + gasLimit: tx.gasLimit?.toString(), action: ProtocolAction.setUsageAsCollateral, }) @@ -623,7 +630,7 @@ export const useSetUsageAsCollateralTx = () => { await estimateGasLimit({ evm, gasLimit: tx.gasLimit?.toString(), - action: ProtocolAction.claimRewards, + action: ProtocolAction.setUsageAsCollateral, }) const evmCall = papi.tx.EVM.call({ diff --git a/apps/main/src/api/democracy.ts b/apps/main/src/api/democracy.ts index 7f657d3f12..259f5b6c26 100644 --- a/apps/main/src/api/democracy.ts +++ b/apps/main/src/api/democracy.ts @@ -1,12 +1,11 @@ -import { QUERY_KEY_BLOCK_PREFIX } from "@galacticcouncil/utils" -import { queryOptions } from "@tanstack/react-query" +import { QueryClient, queryOptions } from "@tanstack/react-query" import Big from "big.js" import { millisecondsInMinute } from "date-fns/constants" import { number, string, z } from "zod/v4" +import { bestNumberQuery } from "@/api/chain" +import { accountVotesQuery, SubsquareVoteState } from "@/api/external/subsquare" import { Papi, TProviderContext } from "@/providers/rpcProvider" -import { NATIVE_ASSET_DECIMALS } from "@/utils/consts" -import { scaleHuman } from "@/utils/formatting" export type CastingVoteInfo = Extract< Awaited< @@ -29,134 +28,66 @@ export type OngoingGovReferenda = Extract< { type: "Ongoing" } >["value"] +export type TUnlockableVote = { + voteId: number + classId: number +} + const CONVICTIONS_BLOCKS: { [key: string]: number } = { none: 0, - locked1x: 43200, - locked2x: 86400, - locked3x: 172800, - locked4x: 345600, - locked5x: 691200, - locked6x: 1382400, + locked1x: 100800, + locked2x: 201600, + locked3x: 403200, + locked4x: 806400, + locked5x: 1612800, + locked6x: 3225600, } -export const accountVotesQuery = ( - { papi, isApiLoaded }: TProviderContext, - address: string, - currentBlock: number, -) => { - return queryOptions({ - queryKey: [QUERY_KEY_BLOCK_PREFIX, "democracy", "votes", address], - queryFn: async () => { - const votesRaw = await papi.query.Democracy.VotingOf.getValue(address) - - if (!votesRaw || votesRaw.type === "Delegating") { - return undefined - } - - const votes = votesRaw.value.votes.map(([id, vote]) => { - const voteConviction = (): string => { - if (vote.type === "Standard") { - // TODO where is vote.conviction? - // return vote.asStandard?.vote.conviction.toString() - return vote.value.vote.toString() - } else { - return "None" - } - } - - const voteAmount = (): bigint => { - if (vote.type === "Split") { - return vote.value.aye + vote.value.nay - } else if (vote.type === "Standard") { - return vote.value.balance - } else { - return 0n - } - } - - return { - id, - balance: voteAmount(), - conviction: voteConviction(), - } - }) - - const votedAmounts = await Promise.all( - votes.map(async (vote) => { - const voteId = vote.id - const referendum = - await papi.query.Democracy.ReferendumInfoOf.getValue(voteId) - - if (!referendum) { - return { - isUnlocked: true, - amount: scaleHuman(vote.balance, NATIVE_ASSET_DECIMALS), - id: voteId, - endDiff: 0, - } - } - - const isFinished = referendum.type === "Finished" - const endBlock = referendum.value.end - - const convictionBlock = - CONVICTIONS_BLOCKS[vote.conviction.toLocaleLowerCase()] ?? 0 - - const unlockBlockNumber = endBlock + convictionBlock - const isUnlocked = isFinished - ? unlockBlockNumber <= currentBlock - : false - - return { - isUnlocked, - amount: scaleHuman(vote.balance, NATIVE_ASSET_DECIMALS), - id: voteId, - endDiff: unlockBlockNumber - currentBlock, - } - }), - ) +const CONVICTIONS_BLOCKS_BY_INDEX: { [key: string]: number } = { + 0: 0, + 1: 100800, + 2: 201600, + 3: 403200, + 4: 806400, + 5: 1612800, + 6: 3225600, +} - const unlockedVotes = votedAmounts.reduce<{ - maxUnlockedValue: string - maxLockedValue: string - maxLockedBlock: number - ids: ReadonlyArray - }>( - (acc, votedAmount) => { - if (votedAmount.isUnlocked) { - return { - maxUnlockedValue: Big.max( - acc.maxUnlockedValue, - votedAmount.amount, - ).toString(), - maxLockedValue: acc.maxLockedValue, - maxLockedBlock: Math.max(votedAmount.endDiff, acc.maxLockedBlock), - ids: [...acc.ids, votedAmount.id], - } - } +const CONVICTION_NAMES = [ + "none", + "locked1x", + "locked2x", + "locked3x", + "locked4x", + "locked5x", + "locked6x", +] as const + +export const decodeStandardVote = (packedVote: number) => { + const aye = (packedVote & 0x80) !== 0 + const index = packedVote & 0x7f + const conviction = + (index <= 6 ? CONVICTION_NAMES[index] : CONVICTION_NAMES[0]) ?? "none" + return { conviction, aye } +} - return { - maxLockedValue: Big.max( - acc.maxLockedValue, - votedAmount.amount, - ).toString(), - maxUnlockedValue: acc.maxUnlockedValue, - maxLockedBlock: Math.max(votedAmount.endDiff, acc.maxLockedBlock), - ids: [], - } - }, - { - maxLockedValue: "0", - maxUnlockedValue: "0", - maxLockedBlock: 0, - ids: [], - }, - ) +const getVoteAmount = (vote: ConvictionVotingVoteAccountVote) => { + if (vote.type === "Split") { + return vote.value.aye + vote.value.nay + } else if (vote.type === "Standard") { + return vote.value.balance + } else if (vote.type === "SplitAbstain") { + return vote.value.aye + vote.value.nay + vote.value.abstain + } else { + return 0n + } +} - return unlockedVotes - }, - enabled: isApiLoaded && !!address && !!currentBlock, - }) +const getVoteConviction = (vote: ConvictionVotingVoteAccountVote): string => { + if (vote.type === "Standard") { + return decodeStandardVote(vote.value.vote).conviction + } + return "none" } export type OpenGovReferendum = Extract< @@ -198,6 +129,13 @@ export const openGovReferendaQuery = ({ export type TAccountVote = { readonly id: number readonly classId: number + readonly balance: bigint + readonly conviction: string +} + +type TAccountOpenGovVotesAccumulator = { + votes: TAccountVote[] + classIds: Set } export const accountOpenGovVotesQuery = ( @@ -207,31 +145,35 @@ export const accountOpenGovVotesQuery = ( return queryOptions({ queryKey: ["accountOpenGovVotes", address], queryFn: async () => { - const votes = + const voteEntries = await papi.query.ConvictionVoting.VotingFor.getEntries(address) - const filteredVotes = votes.reduce>( - (acc, voteClass) => { - if (voteClass.value.type !== "Casting") { - return acc - } + const { votes, classIds } = + voteEntries.reduce( + (acc, voteClass) => { + if (voteClass.value.type !== "Casting") { + return acc + } - const votes = voteClass.value.value.votes - const classId = voteClass.keyArgs[1] + const votes = voteClass.value.value.votes + const classId = voteClass.keyArgs[1] - votes.forEach(([id]) => { - acc.push({ - id, - classId, + votes.forEach(([id, data]) => { + acc.votes.push({ + id, + classId, + balance: getVoteAmount(data), + conviction: getVoteConviction(data), + }) }) - }) + acc.classIds.add(classId) - return acc - }, - [], - ) + return acc + }, + { votes: [], classIds: new Set([]) }, + ) - return filteredVotes + return { votes, classIds: Array.from(classIds) } }, enabled: isApiLoaded && !!address, refetchInterval: millisecondsInMinute, @@ -270,3 +212,180 @@ export const referendumInfoQuery = (referendumIndex: number) => return parsed }, }) + +export const openGovUnlockedTokensQuery = ( + rpc: TProviderContext, + queryClient: QueryClient, + address: string, +) => + queryOptions({ + queryKey: ["openGovUnlockedTokens", address], + queryFn: async () => { + const [accountVotes, bestNumber, subsquareAccountVotes] = + await Promise.all([ + queryClient.ensureQueryData(accountOpenGovVotesQuery(rpc, address)), + queryClient.ensureQueryData(bestNumberQuery(rpc)), + queryClient.ensureQueryData(accountVotesQuery(address)), + ]) + if (!bestNumber) { + throw new Error("Best number not found") + } + + const currentBlock = bestNumber.parachainBlockNumber + + const filteredVotes = [] + for (const vote of subsquareAccountVotes.items) { + const status = vote.proposal.state.name + if (status === SubsquareVoteState.Executed) { + const convictionBlockNumber = + CONVICTIONS_BLOCKS_BY_INDEX[vote.conviction] + + if (convictionBlockNumber === undefined) { + filteredVotes.push({ + amount: BigInt(vote.balance), + id: vote.referendumIndex, + locked: true, + diffBlockNumber: undefined, + }) + continue + } + + const unlockBlockNumber = + vote.proposal.state.indexer.blockHeight + convictionBlockNumber + + const diffBlockNumber = unlockBlockNumber - currentBlock + + filteredVotes.push({ + id: vote.referendumIndex, + amount: BigInt(vote.balance), + locked: Big(unlockBlockNumber).gt(currentBlock), + diffBlockNumber, + }) + continue + } else if ( + status === SubsquareVoteState.Ongoing || + status === SubsquareVoteState.Deciding || + status === SubsquareVoteState.Confirming + ) { + filteredVotes.push({ + id: vote.referendumIndex, + amount: BigInt(vote.balance), + locked: true, + diffBlockNumber: undefined, + }) + continue + } else { + continue + } + } + + const votesData = await Promise.all( + accountVotes.votes.map(async (accountVote) => { + const referendumInfo = + await rpc.papi.query.Referenda.ReferendumInfoFor.getValue( + accountVote.id, + ) + + if (!referendumInfo) { + return { + isUnlocked: true, + amount: accountVote.balance, + id: accountVote.id, + classId: accountVote.classId, + endDiff: undefined, + locked: false, + diffBlockNumber: undefined, + } + } + + if (referendumInfo.type === "Ongoing") { + return { + isUnlocked: false, + amount: accountVote.balance, + id: accountVote.id, + classId: accountVote.classId, + endDiff: undefined, + locked: true, + diffBlockNumber: undefined, + } + } else { + const endBlock = + referendumInfo.type === "Killed" + ? referendumInfo.value + : referendumInfo.value[0] + const convictionBlockNumber = + CONVICTIONS_BLOCKS[accountVote.conviction] + + if (convictionBlockNumber === undefined) { + throw new Error("Invalid conviction") + } + + const unlockBlockNumber = endBlock + convictionBlockNumber + const isUnlocked = Big(unlockBlockNumber).lte(currentBlock) + + const diffBlockNumber = unlockBlockNumber - currentBlock + + return { + isUnlocked, + amount: accountVote.balance, + id: accountVote.id, + classId: accountVote.classId, + endDiff: unlockBlockNumber - currentBlock, + diffBlockNumber, + locked: Big(unlockBlockNumber).gt(currentBlock), + } + } + }), + ) + + const votesById = new Map() + + for (const vote of filteredVotes) { + votesById.set(vote.id, vote) + } + + for (const vote of votesData) { + votesById.set(vote.id, vote) + } + + const mergedVotesMax = [...votesById.values()].reduce<{ + maxLockedValue: string + maxLockedBlock: number | undefined + votesToRemove: TUnlockableVote[] + }>( + (acc, voteData) => { + if (!voteData.locked && typeof voteData.classId === "number") { + acc.votesToRemove.push({ + voteId: voteData.id, + classId: voteData.classId, + }) + } + + if (!voteData.locked) return acc + + return { + maxLockedValue: Big.max( + acc.maxLockedValue, + voteData.amount.toString(), + ).toString(), + maxLockedBlock: + voteData.diffBlockNumber !== undefined && + acc.maxLockedBlock !== undefined + ? Big.max( + voteData.diffBlockNumber, + acc.maxLockedBlock ?? 0, + ).toNumber() + : undefined, + votesToRemove: acc.votesToRemove, + } + }, + { + maxLockedValue: "0", + maxLockedBlock: 0, + votesToRemove: [], + }, + ) + + return { ...mergedVotesMax, classIds: accountVotes.classIds } + }, + }) diff --git a/apps/main/src/api/external/subsquare.ts b/apps/main/src/api/external/subsquare.ts new file mode 100644 index 0000000000..8fc01d860a --- /dev/null +++ b/apps/main/src/api/external/subsquare.ts @@ -0,0 +1,51 @@ +import { queryOptions } from "@tanstack/react-query" +import { millisecondsInMinute } from "date-fns/constants" +import z from "zod" + +export const getSubsquareEndpoint = (address: string) => + `https://orca-main-aggr-indx.indexer.hydration.cloud/proxy/subsquare/users/${address}/referenda/votes?page_size=100&includes_title=1` + +export enum SubsquareVoteState { + Ongoing = "Ongoing", + Killed = "Killed", + Executed = "Executed", + TimedOut = "TimedOut", + Rejected = "Rejected", + Confirming = "Confirming", + Deciding = "Deciding", + Approved = "Approved", +} + +const schema = z.object({ + items: z.array( + z.object({ + referendumIndex: z.number(), + balance: z.string(), + aye: z.boolean(), + conviction: z.number(), + queryAt: z.number(), + proposal: z.object({ + state: z.object({ + name: z.enum(SubsquareVoteState), + indexer: z.object({ + blockHeight: z.number(), + }), + }), + }), + }), + ), +}) + +export const accountVotesQuery = (address: string) => + queryOptions({ + queryKey: ["subsquareAccountVotes", address], + queryFn: async () => { + const res = await fetch(getSubsquareEndpoint(address)) + const data = await res.json() + const parsed = schema.parse(data) + return parsed + }, + enabled: !!address, + staleTime: millisecondsInMinute, + gcTime: millisecondsInMinute, + }) diff --git a/apps/main/src/api/stats.ts b/apps/main/src/api/stats.ts index 456a54794e..61d166374c 100644 --- a/apps/main/src/api/stats.ts +++ b/apps/main/src/api/stats.ts @@ -28,7 +28,7 @@ enum FeeDestination { } const FEES_CHARTS_API_URL = - "https://hydration-aggregator-staging-v2.orca.hydration.cloud/api/v1/fees/charts" + "https://hydration-metrics-aggregator.indexer.hydration.cloud/api/v1/fees/charts" const FEES_API_PARAMS = { omnipool: { diff --git a/apps/main/src/components/AssetSelect/AssetSelect.tsx b/apps/main/src/components/AssetSelect/AssetSelect.tsx index ba8cab4138..d193782736 100644 --- a/apps/main/src/components/AssetSelect/AssetSelect.tsx +++ b/apps/main/src/components/AssetSelect/AssetSelect.tsx @@ -48,6 +48,7 @@ export const AssetSelect = ({ const displayValueLoading = props.displayValueLoading ?? displayValueLoading_ const { getTransferableBalance } = useAccountBalances() + const maxBalance = ((): string | undefined => { if (providedMaxBalance) { return providedMaxBalance diff --git a/apps/main/src/components/AssetSelectModal/AssetSelectModal.utils.ts b/apps/main/src/components/AssetSelectModal/AssetSelectModal.utils.ts index fd4a5d4d7f..336d086648 100644 --- a/apps/main/src/components/AssetSelectModal/AssetSelectModal.utils.ts +++ b/apps/main/src/components/AssetSelectModal/AssetSelectModal.utils.ts @@ -19,7 +19,9 @@ export const useAssetSelectModalAssets = ({ search, selectedAssetId, ignoreAssetIds, - ...sortOptions + tickerOrder, + lowPriorityAssetIds, + highPriorityAssetIds, }: { assets: TAssetData[] ignoreAssetIds?: string[] @@ -45,33 +47,54 @@ export const useAssetSelectModalAssets = ({ const { getAssetPrice, isLoading: isPriceLoading } = useAssetsPrice(assetsBalanceIds) - if (!account || !assets.length) { - return { - sortedAssets: filteredAssets, - isLoading: false, - } - } - - const assetsWithBalances = filteredAssets.map((asset) => { - const balance = scaleHuman(getTransferableBalance(asset.id), asset.decimals) + const invalidState = !account || !assets.length - const { price, isValid } = getAssetPrice(asset.id) - const balanceDisplay = isValid ? Big(price).times(balance).toString() : "0" + const isLoading = isPriceLoading || isBalanceLoading - return { - ...asset, - balance, - balanceDisplay, + const sortedAssets = useMemo(() => { + if (invalidState || isLoading) { + return filteredAssets } - }) - const sortedAssets = sortAssets(assetsWithBalances, "balanceDisplay", { - firstAssetId: selectedAssetId, + const assetsWithBalances = filteredAssets.map((asset) => { + const balance = scaleHuman( + getTransferableBalance(asset.id), + asset.decimals, + ) + + const { price, isValid } = getAssetPrice(asset.id) + const balanceDisplay = isValid + ? Big(price).times(balance).toString() + : "0" + + return { + ...asset, + balance, + balanceDisplay, + } + }) + + return sortAssets(assetsWithBalances, "balanceDisplay", { + firstAssetId: selectedAssetId, + search, + tickerOrder, + lowPriorityAssetIds, + highPriorityAssetIds, + }) + }, [ + invalidState, + filteredAssets, + getAssetPrice, + getTransferableBalance, + highPriorityAssetIds, + isLoading, + lowPriorityAssetIds, + selectedAssetId, search, - ...sortOptions, - }) + tickerOrder, + ]) - return { sortedAssets, isLoading: isPriceLoading || isBalanceLoading } + return { sortedAssets, isLoading: invalidState ? false : isLoading } } export const useFilteredSearchAssets = ( @@ -85,6 +108,7 @@ export const useFilteredSearchAssets = ( } const ignoredAssetIdSet = new Set(ignoreAssetIds ?? []) + const searchLower = search.length ? search.toLowerCase() : "" return assets.filter((asset) => { if (ignoredAssetIdSet.has(asset.id)) { @@ -93,8 +117,8 @@ export const useFilteredSearchAssets = ( if (search.length) { return ( - asset.name.toLowerCase().includes(search.toLowerCase()) || - asset.symbol.toLowerCase().includes(search.toLowerCase()) + asset.name.toLowerCase().includes(searchLower) || + asset.symbol.toLowerCase().includes(searchLower) ) } diff --git a/apps/main/src/config/rpc.ts b/apps/main/src/config/rpc.ts index 7363ce0dd4..4e6648174c 100644 --- a/apps/main/src/config/rpc.ts +++ b/apps/main/src/config/rpc.ts @@ -73,19 +73,17 @@ export const SQUID_URLS: IndexerProps[] = SQUID_URLS_CONFIG.map((config) => ({ })) export const PROVIDERS: ProviderProps[] = [ - // createProvider("Dwellir", "wss://hydration-rpc.n.dwellir.com"), - // createProvider("Helikon", "wss://rpc.helikon.io/hydradx"), + createProvider("Dwellir", "wss://hydration-rpc.n.dwellir.com"), + createProvider("Dotters", "wss://hydration.dotters.network"), + createProvider("IBP", "wss://hydration.ibp.network"), + createProvider("LATAM", "wss://hydration.rpc.stkd.io"), createProvider("zipp", "wss://rpc.zipp.hydration.cloud"), createProvider("roach", "wss://rpc.roach.hydration.cloud"), createProvider("lait", "wss://rpc.lait.hydration.cloud"), //createProvider("parm", "wss://rpc.parm.hydration.cloud"), createProvider("sin", "wss://rpc.sin.hydration.cloud"), createProvider("coke", "wss://rpc.coke.hydration.cloud"), - createProvider("sparrow", "wss://node-sparrow-3.sparrow.shadow-senate.com"), // createProvider("owl", "wss://rpc-owl-1.owl.shadow-senate.com"), - // createProvider("Dotters", "wss://hydration.dotters.network"), - // createProvider("IBP", "wss://hydration.ibp.network"), - // createProvider("LATAM", "wss://hydration.rpc.stkd.io"), createProvider( "Testnet", "wss://rpc.nice.hydration.cloud", diff --git a/apps/main/src/hooks/useObservable.ts b/apps/main/src/hooks/useObservable.ts index 719edf5bca..9467d9ee47 100644 --- a/apps/main/src/hooks/useObservable.ts +++ b/apps/main/src/hooks/useObservable.ts @@ -23,7 +23,9 @@ export const useObservable = ( useEffect(() => { if (!enabled || !isObservable(observable)) return - const sub = observable.subscribe(onUpdateRef.current) + const sub = observable.subscribe((data) => { + onUpdateRef.current?.(data) + }) return () => { sub.unsubscribe() diff --git a/apps/main/src/i18n/locales/en/common.json b/apps/main/src/i18n/locales/en/common.json index db0af76ef8..b648eaec08 100644 --- a/apps/main/src/i18n/locales/en/common.json +++ b/apps/main/src/i18n/locales/en/common.json @@ -255,6 +255,7 @@ "date": "Date", "date.default": "{{ value, date }}", "date.relative": "{{ value, relative }}", + "date.relative.short": "{{ value, relative(format: 'short') }}", "date.time": "{{ value, date(format: 'HH:mm') }}", "date.datetime": "{{ value, date(format: 'dd/MM/yyyy HH:mm:ss') }}", "date.datetime.short": "{{ value, date(format: 'dd/MM/yyyy HH:mm') }}", diff --git a/apps/main/src/i18n/locales/en/wallet.json b/apps/main/src/i18n/locales/en/wallet.json index cb2775d9cd..cb03a2d602 100644 --- a/apps/main/src/i18n/locales/en/wallet.json +++ b/apps/main/src/i18n/locales/en/wallet.json @@ -35,21 +35,21 @@ "myAssets.expandedNative.borrowed": "Borrowed amount", "myAssets.expandedNative.lockedInStaking": "Locked in Staking", "myAssets.expandedNative.lockedInDemocracy": "Locked in Democracy", - "myAssets.expandedNative.unlockableInDemocracy": "Unlockable in Democracy", + "myAssets.expandedNative.unlockable": "Unlockable", "myAssets.expandedNative.lockedInDCA": "Locked in DCA", "myAssets.expandedNative.lockedInXCM": "Locked in cross-chain", "myAssets.expandedNative.lockedInXCM.description": ["Large transfers temporarily locked for security;", "unlockable after review period."], "myAssets.expandedNative.lockedInVesting": "Locked in vesting", "myAssets.expandedNative.lockedInReferenda": "Locked in Referenda", "myAssets.expandedNative.actions.unlockAvailableAssets": "Unlock assets", - "myAssets.expandedNative.fullExpiration": "100% Expires in {{ relativeTime }}", + "myAssets.expandedNative.actions.clearLocks": "Clear locks", + "myAssets.expandedNative.fullExpiration": "100% Expires in ~{{ relativeTime }}", "myAssets.expandedNative.expiredLocks": "{{ amount }} Expired locks", - "myAssets.expandedNative.unlock.onLoading": "Clearing {{amount}} locks and unlocking {{ amount }} {{ symbol }}", - "myAssets.expandedNative.unlock.onSuccess": "You cleared {{amount}} locks and uncloked {{ amount }} {{ symbol }}", - "myAssets.expandedNative.unlock.onError": "Failed to clear {{ amount }} and unlock {{ amount }} {{ symbol }}", + "myAssets.expandedNative.unlockableDate": "100% expires {{ value, relative(format: 'short') }}", + "myAssets.expandedNative.unlock.onLoading": "Clearing {{amount}} locks and unlocking {{ value, number }} {{ symbol }}", + "myAssets.expandedNative.unlock.onSuccess": "You cleared {{amount}} locks and unlocked {{ value, number }} {{ symbol }}", "myAssets.expandedNative.clear.onLoading": "Clearing {{amount}} locks", "myAssets.expandedNative.clear.onSuccess": "You cleared {{amount}} locks", - "myAssets.expandedNative.clear.onError": "Failed to clear {{ amount }} locks", "myAssets.expandedAsset.assetOrigin": "Origin chain:", "invalidAsset.description": "This asset details has changed. Please review for your safety.", "invalidAsset.cta": "Update asset data", diff --git a/apps/main/src/modules/borrow/history/BorrowHistoryPage.tsx b/apps/main/src/modules/borrow/history/BorrowHistoryPage.tsx index 562ffe3f12..30352f8fa3 100644 --- a/apps/main/src/modules/borrow/history/BorrowHistoryPage.tsx +++ b/apps/main/src/modules/borrow/history/BorrowHistoryPage.tsx @@ -41,7 +41,13 @@ export const BorrowHistoryPage = () => { onChange={setSearchPhrase} /> } + sx={{ + flexDirection: ["column-reverse", "row"], + gap: ["xl", 0], + alignItems: ["flex-start", "center"], + }} /> + { placeholder={t("search.placeholder.assets")} iconStart={Search} onChange={(e) => setSearchPhrase(e.target.value)} + sx={{ minWidth: ["100%", 250] }} /> } + sx={{ + flexDirection: ["column-reverse", "row"], + gap: ["xl", 0], + alignItems: ["flex-start", "center"], + }} /> diff --git a/apps/main/src/modules/borrow/markets/components/MarketAssetsStats.tsx b/apps/main/src/modules/borrow/markets/components/MarketAssetsStats.tsx index d0375e2f2a..7cfafe2a12 100644 --- a/apps/main/src/modules/borrow/markets/components/MarketAssetsStats.tsx +++ b/apps/main/src/modules/borrow/markets/components/MarketAssetsStats.tsx @@ -16,19 +16,19 @@ export const MarketAssetsStats = () => { > diff --git a/apps/main/src/modules/layout/components/LayoutSkeleton/AppSkeleton.tsx b/apps/main/src/modules/layout/components/LayoutSkeleton/AppSkeleton.tsx index 0b50380507..e160b1f041 100644 --- a/apps/main/src/modules/layout/components/LayoutSkeleton/AppSkeleton.tsx +++ b/apps/main/src/modules/layout/components/LayoutSkeleton/AppSkeleton.tsx @@ -1,4 +1,5 @@ import { + AssetButton, Box, Flex, LoadingButton, @@ -8,10 +9,11 @@ import { Stack, Text, } from "@galacticcouncil/ui/components" +import { pxToRem } from "@galacticcouncil/ui/utils" const AssetSectionSkeleton = () => { return ( - + @@ -21,13 +23,14 @@ const AssetSectionSkeleton = () => { - - - - - - - + + +
+ +
+
+ +
@@ -36,11 +39,11 @@ const AssetSectionSkeleton = () => { const SwitcherSkeleton = () => { return ( - - + + diff --git a/apps/main/src/modules/liquidity/components/PoolsHeader/AllPools.tsx b/apps/main/src/modules/liquidity/components/PoolsHeader/AllPools.tsx index 7c42de1846..67c4ee34c0 100644 --- a/apps/main/src/modules/liquidity/components/PoolsHeader/AllPools.tsx +++ b/apps/main/src/modules/liquidity/components/PoolsHeader/AllPools.tsx @@ -51,7 +51,7 @@ export const AllPools = () => { <> { /> diff --git a/apps/main/src/modules/liquidity/components/PoolsHeader/Isolated.tsx b/apps/main/src/modules/liquidity/components/PoolsHeader/Isolated.tsx index a5c810993a..f8810a3494 100644 --- a/apps/main/src/modules/liquidity/components/PoolsHeader/Isolated.tsx +++ b/apps/main/src/modules/liquidity/components/PoolsHeader/Isolated.tsx @@ -25,7 +25,7 @@ export const Isolated = () => { <> { { <> { /> diff --git a/apps/main/src/modules/staking/StakingDashboard.tsx b/apps/main/src/modules/staking/StakingDashboard.tsx index 8ba7161063..ea7725a1fb 100644 --- a/apps/main/src/modules/staking/StakingDashboard.tsx +++ b/apps/main/src/modules/staking/StakingDashboard.tsx @@ -1,4 +1,3 @@ -import { ClassNames } from "@emotion/react" import { Box, Flex, Paper, SectionHeader } from "@galacticcouncil/ui/components" import { useBreakpoints } from "@galacticcouncil/ui/theme" import { useAccount } from "@galacticcouncil/web3-connect" @@ -41,11 +40,13 @@ export const StakingDashboard: FC = () => { useQuery(stakingPositionsQuery(rpc, address, stakingId)) const { - data: votesData = [], + data: accountVotes, isLoading: votesIsLoading, isSuccess: votesIsSuccess, } = useQuery(accountOpenGovVotesQuery(rpc, address)) + const votesData = accountVotes?.votes ?? [] + const staked = stakingPositionsData?.stake ? toDecimal(stakingPositionsData.stake, native.decimals) : undefined @@ -133,16 +134,11 @@ export const StakingDashboard: FC = () => { return ( - - {({ css }) => ( - - )} - - + {isLoading ? ( <> diff --git a/apps/main/src/modules/trade/orders/DcaOrderDetailsModal.tsx b/apps/main/src/modules/trade/orders/DcaOrderDetailsModal.tsx index 30f35fcc37..c81049488d 100644 --- a/apps/main/src/modules/trade/orders/DcaOrderDetailsModal.tsx +++ b/apps/main/src/modules/trade/orders/DcaOrderDetailsModal.tsx @@ -66,9 +66,9 @@ export const DcaOrderDetailsModal = ({ details, onTerminate }: Props) => { {t("number", { value: details.isOpenBudget ? details.fromAmountExecuted - : details.status === DcaScheduleStatus.Created - ? details.fromAmountRemaining - : "0", + : details.status === DcaScheduleStatus.Completed + ? "0" + : (details.fromAmountRemaining ?? details.fromAmountBudget), })} {!details.isOpenBudget && ( <> diff --git a/apps/main/src/modules/trade/orders/columns/SwapPrice.tsx b/apps/main/src/modules/trade/orders/columns/SwapPrice.tsx index 54f134959c..a35c162964 100644 --- a/apps/main/src/modules/trade/orders/columns/SwapPrice.tsx +++ b/apps/main/src/modules/trade/orders/columns/SwapPrice.tsx @@ -13,7 +13,14 @@ type Props = { } export const SwapPrice: FC = ({ from, to, price }) => { - const { t } = useTranslation() + const { t } = useTranslation("common") + + if (!price) + return ( + + - + + ) return ( diff --git a/apps/main/src/modules/trade/otc/place-order/PlaceOrderModalContent.tsx b/apps/main/src/modules/trade/otc/place-order/PlaceOrderModalContent.tsx index aa756f45bf..d52601c1f4 100644 --- a/apps/main/src/modules/trade/otc/place-order/PlaceOrderModalContent.tsx +++ b/apps/main/src/modules/trade/otc/place-order/PlaceOrderModalContent.tsx @@ -449,7 +449,6 @@ export const PlaceOrderModalContent: FC = ({ onClose }) => { )} )} - ) } diff --git a/apps/main/src/modules/wallet/assets/MyAssets/AssetDetailUnlock.tx.ts b/apps/main/src/modules/wallet/assets/MyAssets/AssetDetailUnlock.tx.ts index 2225aff19b..bc1b07661b 100644 --- a/apps/main/src/modules/wallet/assets/MyAssets/AssetDetailUnlock.tx.ts +++ b/apps/main/src/modules/wallet/assets/MyAssets/AssetDetailUnlock.tx.ts @@ -6,24 +6,31 @@ import { useTranslation } from "react-i18next" import { nativeTokenLocksQuery } from "@/api/balances" import { useCreateBatchTx } from "@/modules/transactions/hooks/useBatchTx" +import { useAssets } from "@/providers/assetsProvider" import { useRpcProvider } from "@/providers/rpcProvider" export const useUnlockNativeLocks = ( - ids: ReadonlyArray, + votesToRemove: ReadonlyArray<{ voteId: number; classId: number }>, + classIds: ReadonlyArray, value: string, ) => { const { t } = useTranslation("wallet") const rpcProvider = useRpcProvider() const { papi } = rpcProvider const { account } = useAccount() - + const { native } = useAssets() const createBatch = useCreateBatchTx() return useMutation({ mutationFn: async () => { - const txs = ids.map((id) => papi.tx.Democracy.remove_vote({ index: id })) + const txs = votesToRemove.map((vote) => + papi.tx.ConvictionVoting.remove_vote({ + class: vote.classId, + index: vote.voteId, + }), + ) - if (!txs.length) { + if (!txs.length && !classIds.length) { return null } @@ -33,20 +40,26 @@ export const useUnlockNativeLocks = ( const batchTx = [ ...txs, - ...(target ? [papi.tx.Democracy.unlock({ target })] : []), + ...(target + ? classIds.map((id) => + papi.tx.ConvictionVoting.unlock({ target, class: id }), + ) + : []), ] const type = new Big(value).eq(0) ? "clear" : "unlock" - const amount = ids.length + const amount = votesToRemove.length const toasts = { submitted: t(`myAssets.expandedNative.${type}.onLoading`, { amount, value, + symbol: native.symbol, }), success: t(`myAssets.expandedNative.${type}.onSuccess`, { amount, value, + symbol: native.symbol, }), } diff --git a/apps/main/src/modules/wallet/assets/MyAssets/ExpandedNativeRow.data.ts b/apps/main/src/modules/wallet/assets/MyAssets/ExpandedNativeRow.data.ts index f81fd51621..8b3f35a16e 100644 --- a/apps/main/src/modules/wallet/assets/MyAssets/ExpandedNativeRow.data.ts +++ b/apps/main/src/modules/wallet/assets/MyAssets/ExpandedNativeRow.data.ts @@ -1,13 +1,14 @@ import { useAccount } from "@galacticcouncil/web3-connect" -import { useQuery } from "@tanstack/react-query" +import { useQuery, useQueryClient } from "@tanstack/react-query" import Big from "big.js" import { nativeTokenLocksQuery, TokenLockType } from "@/api/balances" -import { bestNumberQuery } from "@/api/chain" -import { accountVotesQuery } from "@/api/democracy" +import { openGovUnlockedTokensQuery } from "@/api/democracy" import { useDisplayAssetPrice } from "@/components/AssetPrice" +import { useAssets } from "@/providers/assetsProvider" import { useRpcProvider } from "@/providers/rpcProvider" import { NATIVE_ASSET_ID, PARACHAIN_BLOCK_TIME } from "@/utils/consts" +import { scaleHuman } from "@/utils/formatting" export const useNativeAssetLocks = () => { const { account } = useAccount() @@ -58,36 +59,39 @@ export const useNativeAssetLocks = () => { } } -export const useUnlockableNativeTokens = (lockedInDemocracy: string) => { +export const useUnlockableNativeTokens = (lockedInReferenda: string) => { const rpc = useRpcProvider() const { account } = useAccount() + const queryClient = useQueryClient() + const { native } = useAssets() - const { data: bestNumber } = useQuery(bestNumberQuery(rpc)) - const { data, isLoading } = useQuery( - accountVotesQuery( - rpc, - account?.address ?? "", - bestNumber?.parachainBlockNumber ?? 0, - ), + const { data: unlockedTokens, isLoading: unlockedTokensLoading } = useQuery( + openGovUnlockedTokensQuery(rpc, queryClient, account?.address ?? ""), ) - const lockedInDemocracyBig = new Big(lockedInDemocracy) - const value = lockedInDemocracyBig.lte(0) + const lockedInReferendaBig = new Big(lockedInReferenda) + + const maxLocked = scaleHuman( + unlockedTokens?.maxLockedValue ?? "0", + native.decimals, + ) + + const value = lockedInReferendaBig.lte(0) ? "0" - : lockedInDemocracyBig - .minus(data?.maxLockedValue.toString() || "0") - .toString() + : lockedInReferendaBig.minus(maxLocked).toString() - const [displayValue] = useDisplayAssetPrice(NATIVE_ASSET_ID, value) - const unlockableIds = data?.ids ?? [] + const [displayValue] = useDisplayAssetPrice(native.id, value) - const lockedSeconds = (data?.maxLockedBlock ?? 0) * PARACHAIN_BLOCK_TIME + const lockedSeconds = + (unlockedTokens?.maxLockedBlock ?? 0) * PARACHAIN_BLOCK_TIME return { value, displayValue, lockedSeconds, - unlockableIds, - isLoading, + unlockableIds: [], + votesToRemove: unlockedTokens?.votesToRemove ?? [], + classIds: unlockedTokens?.classIds ?? [], + isLoading: unlockedTokensLoading, } } diff --git a/apps/main/src/modules/wallet/assets/MyAssets/ExpandedNativeRow.tsx b/apps/main/src/modules/wallet/assets/MyAssets/ExpandedNativeRow.tsx index 5598dcdfe6..b61f948efe 100644 --- a/apps/main/src/modules/wallet/assets/MyAssets/ExpandedNativeRow.tsx +++ b/apps/main/src/modules/wallet/assets/MyAssets/ExpandedNativeRow.tsx @@ -1,10 +1,4 @@ -import { - Hourglass, - Landmark, - Layers, - LockOpen, - Vote, -} from "@galacticcouncil/ui/assets/icons" +import { Landmark, Layers, LockOpen } from "@galacticcouncil/ui/assets/icons" import { Amount, Flex } from "@galacticcouncil/ui/components" import Big from "big.js" import { FC } from "react" @@ -19,7 +13,6 @@ import { import { ExpandedRowSeparator } from "@/modules/wallet/assets/MyAssets/ExpandedRowSeparator" import { FullExpiration } from "@/modules/wallet/assets/MyAssets/FullExpiration" import { MyAsset } from "@/modules/wallet/assets/MyAssets/MyAssetsTable.columns" -import { LockExpiration } from "@/modules/wallet/assets/MyLiquidity/LockExpiration" type Props = { readonly asset: MyAsset @@ -29,14 +22,10 @@ export const ExpandedNativeRow: FC = ({ asset }) => { const { t } = useTranslation(["wallet", "common"]) const locks = useNativeAssetLocks() - const unlockable = useUnlockableNativeTokens(locks.lockedInDemocracy) + const unlockable = useUnlockableNativeTokens(locks.lockedInOpenGov) const [reservedDisplayPrice] = useDisplayAssetPrice(asset.id, asset.reserved) - // TODO integrate - const xcm = "-1" - const [xcmDisplay] = useDisplayAssetPrice(asset.id, xcm) - return ( = ({ asset }) => { })} displayValue={reservedDisplayPrice} /> - {xcm !== "-1" && ( - <> - - - - )} = ({ asset }) => { })} displayValue={locks.lockedInStakingDisplayPrice} /> + {Big(locks.lockedInDemocracy).gt(0) && ( + <> + + + + )} + {Big(locks.lockedInOpenGov).gt(0) && ( + <> + + + + )} - 0 && ( - - ) - } - /> - + 0 && ( - - {t("myAssets.expandedNative.expiredLocks", { - amount: unlockable.unlockableIds.length, - })} - + unlockable.lockedSeconds > 0 && ( + ) } /> - {new Big(locks.lockedInOpenGov).gt(0) && ( - <> - - - - )} {new Big(locks.lockedInVesting).gt(0) && ( <> diff --git a/apps/main/src/modules/wallet/assets/MyAssets/FullExpiration.tsx b/apps/main/src/modules/wallet/assets/MyAssets/FullExpiration.tsx index f07094f5e4..265d0b5197 100644 --- a/apps/main/src/modules/wallet/assets/MyAssets/FullExpiration.tsx +++ b/apps/main/src/modules/wallet/assets/MyAssets/FullExpiration.tsx @@ -18,7 +18,7 @@ export const FullExpiration: FC = ({ const seconds = useCountdown(initialLockedSeconds) const endDate = useMemo( - () => durationInDaysAndHoursFromNow(seconds * 1000), + () => durationInDaysAndHoursFromNow(seconds), [seconds], ) diff --git a/apps/main/src/modules/wallet/assets/MyLiquidity/LockExpiration.tsx b/apps/main/src/modules/wallet/assets/MyLiquidity/LockExpiration.tsx index b9890a479b..d7a847a338 100644 --- a/apps/main/src/modules/wallet/assets/MyLiquidity/LockExpiration.tsx +++ b/apps/main/src/modules/wallet/assets/MyLiquidity/LockExpiration.tsx @@ -1,5 +1,4 @@ -import { CircleInfo } from "@galacticcouncil/ui/assets/icons" -import { Flex, Icon, Text } from "@galacticcouncil/ui/components" +import { Text } from "@galacticcouncil/ui/components" import { getToken } from "@galacticcouncil/ui/utils" import { FC, ReactNode } from "react" @@ -8,24 +7,10 @@ type Props = { readonly className?: string } -export const LockExpiration: FC = ({ children, className }) => { +export const LockExpiration: FC = ({ children }) => { return ( - - - {children} - - - + + {children} + ) } diff --git a/apps/main/src/modules/wallet/assets/Rewards/WalletRewardsSection.claim.ts b/apps/main/src/modules/wallet/assets/Rewards/WalletRewardsSection.claim.ts index dcc35ced20..2f04c317e3 100644 --- a/apps/main/src/modules/wallet/assets/Rewards/WalletRewardsSection.claim.ts +++ b/apps/main/src/modules/wallet/assets/Rewards/WalletRewardsSection.claim.ts @@ -34,9 +34,10 @@ const useGetClaimStakingTx = () => { ) const positionId = stakingPositionsData?.stakePositionId - const { data: votes = [], isSuccess: votesSuccess } = useQuery( + const { data: accountVotes, isSuccess: votesSuccess } = useQuery( accountOpenGovVotesQuery(rpc, address ?? ""), ) + const votes = accountVotes?.votes ?? [] const { newProcessedVotesIds, oldProcessedVotesIds } = useProcessedVotes( votes, diff --git a/apps/main/src/states/account.ts b/apps/main/src/states/account.ts index dfdee96c21..b18207bda6 100644 --- a/apps/main/src/states/account.ts +++ b/apps/main/src/states/account.ts @@ -1,5 +1,6 @@ import { Balance as SdkBalance } from "@galacticcouncil/sdk-next" import { useStableArray } from "@galacticcouncil/utils" +import { useAccount } from "@galacticcouncil/web3-connect" import { produce } from "immer" import { useCallback, useMemo } from "react" import { pick } from "remeda" @@ -138,6 +139,7 @@ export const useAccountData = create< })) export const useAccountBalances = () => { + const { account } = useAccount() const { balances, isBalanceLoading } = useAccountData( useShallow(pick(["balances", "isBalanceLoading"])), ) @@ -159,7 +161,7 @@ export const useAccountBalances = () => { return { balances, - isBalanceLoading, + isBalanceLoading: account ? isBalanceLoading : false, getBalance, getTransferableBalance, isBalanceLoaded, diff --git a/package.json b/package.json index b7deeb3d96..b9cb902f85 100644 --- a/package.json +++ b/package.json @@ -21,9 +21,9 @@ "dependencies": { "@galacticcouncil/common": "^0.6.0", "@galacticcouncil/descriptors": "^1.15.0", - "@galacticcouncil/sdk-next": "^0.38.0", + "@galacticcouncil/sdk-next": "^0.40.0", "@galacticcouncil/xc": "^0.5.0", - "@galacticcouncil/xc-cfg": "^0.18.1", + "@galacticcouncil/xc-cfg": "^0.18.2", "@galacticcouncil/xc-core": "^0.13.0", "@galacticcouncil/xc-scan": "^0.4.0", "@galacticcouncil/xc-sdk": "^0.9.1", diff --git a/packages/ui/src/assets/icons/AssetIcon.svg b/packages/ui/src/assets/icons/AssetIcon.svg deleted file mode 100644 index c843040f2c..0000000000 --- a/packages/ui/src/assets/icons/AssetIcon.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/packages/ui/src/assets/icons/index.ts b/packages/ui/src/assets/icons/index.ts index 757631cb5a..e02a530c94 100644 --- a/packages/ui/src/assets/icons/index.ts +++ b/packages/ui/src/assets/icons/index.ts @@ -1,5 +1,4 @@ export { default as ArrowRightLong } from "./ArrowRightLong.svg?react" -export { default as AssetIcon } from "./AssetIcon.svg?react" export { default as CaretDown } from "./CaretDown.svg?react" export { default as CircleAlert } from "./CircleAlert.svg?react" export { default as CircleCheck } from "./CircleCheck.svg?react" diff --git a/packages/ui/src/components/AssetInput/AssetInput.tsx b/packages/ui/src/components/AssetInput/AssetInput.tsx index e023167ae6..b0926190d2 100644 --- a/packages/ui/src/components/AssetInput/AssetInput.tsx +++ b/packages/ui/src/components/AssetInput/AssetInput.tsx @@ -5,7 +5,7 @@ import { ReactNode } from "react" import { Flex, Icon, MicroButton, Skeleton, Text } from "@/components" import { FormError } from "@/components/FormError" -import { getToken } from "@/utils" +import { getToken, pxToRem } from "@/utils" import { SAssetButton, @@ -75,7 +75,8 @@ export const AssetInput = ({ @@ -222,20 +223,9 @@ export const AssetButton = ({ }) => { if (loading) return ( - -
- -
-
- -
-
+
+ +
) if (symbol && icon) diff --git a/packages/ui/src/components/SectionHeader/SectionHeader.tsx b/packages/ui/src/components/SectionHeader/SectionHeader.tsx index e7e03cb373..c486984ccb 100644 --- a/packages/ui/src/components/SectionHeader/SectionHeader.tsx +++ b/packages/ui/src/components/SectionHeader/SectionHeader.tsx @@ -9,7 +9,6 @@ type Props = { readonly title: string readonly as?: ElementType readonly className?: string - readonly containerClassName?: string readonly hasDescription?: boolean readonly actions?: ReactNode readonly noTopPadding?: boolean @@ -19,7 +18,6 @@ export const SectionHeader: FC = ({ title, as = "p", className, - containerClassName, hasDescription, actions, noTopPadding, @@ -27,7 +25,7 @@ export const SectionHeader: FC = ({ return ( diff --git a/packages/utils/src/helpers/interpolation.ts b/packages/utils/src/helpers/interpolation.ts index f2656f8392..1b14b3adcd 100644 --- a/packages/utils/src/helpers/interpolation.ts +++ b/packages/utils/src/helpers/interpolation.ts @@ -64,10 +64,7 @@ export const interpolationFormat = ( return formatInterval(value, options) case "relative": - return formatRelativeTime( - value, - options.targetDate instanceof Date ? options.targetDate : new Date(), - ) + return formatRelativeTime(value, options) default: return String(value ?? "") diff --git a/packages/utils/src/helpers/intl.ts b/packages/utils/src/helpers/intl.ts index 3a07a17037..2ab12f81d8 100644 --- a/packages/utils/src/helpers/intl.ts +++ b/packages/utils/src/helpers/intl.ts @@ -2,6 +2,7 @@ import Big, { BigSource } from "big.js" import { differenceInSeconds, format as formatDateFns, + FormatDistanceToken, formatDuration, intervalToDuration, isBefore, @@ -29,6 +30,31 @@ const NB_SPACE = String.fromCharCode(160) // non-breaking space const NA_VALUE = "N/A" const MIN_PERCENTAGE_THRESHOLD = Big(0.01) +const formatDistanceLocale: Record = { + xSeconds: "{{count}}s", + xMinutes: "{{count}}m", + xHours: "{{count}}h", + xDays: "{{count}}d", + xMonths: "{{count}}mo", + xYears: "{{count}}y", + lessThanXSeconds: "less than {{count}}s", + halfAMinute: "half a minute", + lessThanXMinutes: "less than {{count}}m", + aboutXHours: "about {{count}}h", + aboutXWeeks: "about {{count}}w", + xWeeks: "{{count}}w", + aboutXMonths: "about {{count}}mo", + aboutXYears: "about {{count}}y", + overXYears: "over {{count}}y", + almostXYears: "almost {{count}}y", +} + +const shortEnLocale = { + formatDistance: (token: FormatDistanceToken, count: number) => { + return formatDistanceLocale[token].replace("{{count}}", count.toString()) + }, +} + const formatNumberParts = (part: Intl.NumberFormatPart) => { if (part.type === "group") { return NB_SPACE @@ -277,8 +303,11 @@ export const formatDate = ( export const formatRelativeTime = ( value: FormatValue, - targetDate: Date = new Date(), + options: Record = {}, ) => { + const targetDate = + options.targetDate instanceof Date ? options.targetDate : new Date() + if (!isValidDateValue(value)) return "" const date = toDate(value) @@ -299,6 +328,7 @@ export const formatRelativeTime = ( diffInSec < 60 ? ["seconds"] : ["years", "months", "days", "hours", "minutes"], + locale: options?.format === "short" ? shortEnLocale : undefined, }) return isPast ? `${formatted} ago` : `In ${formatted}` diff --git a/packages/web3-connect/package.json b/packages/web3-connect/package.json index f03fd3aa00..d2d6a6c73b 100644 --- a/packages/web3-connect/package.json +++ b/packages/web3-connect/package.json @@ -14,11 +14,12 @@ "dependencies": { "@galacticcouncil/ui": "*", "@galacticcouncil/utils": "*", - "i18next": "^23.16.4", - "react-i18next": "^15.7.3", "@mysten/wallet-standard": "^0.19.9", + "@reown/appkit": "^1.8.19", "@solana/web3.js": "^1.98.0", "@tanstack/react-query": "^5.59.15", + "i18next": "^23.16.4", + "react-i18next": "^15.7.3", "viem": "^2.30.0" } } diff --git a/packages/web3-connect/src/components/provider/ProviderButton.tsx b/packages/web3-connect/src/components/provider/ProviderButton.tsx index b4a76a5c16..890783734d 100644 --- a/packages/web3-connect/src/components/provider/ProviderButton.tsx +++ b/packages/web3-connect/src/components/provider/ProviderButton.tsx @@ -59,20 +59,25 @@ export const ProviderButton: React.FC = ({ const { logo, title, installed, provider } = walletData const modes = getWalletModesByProviderType(provider) + const isHybridWallet = [WalletMode.Substrate, WalletMode.EVM].every((mode) => + modes.includes(mode), + ) + const content = ( <> {title} - {modes.filter(hasModeIcon).map((mode) => ( - - - - ))} + {!isHybridWallet && + modes.filter(hasModeIcon).map((mode) => ( + + + + ))} {title} diff --git a/packages/web3-connect/src/components/provider/ProviderConnectAll.tsx b/packages/web3-connect/src/components/provider/ProviderConnectAll.tsx index 3f1812220e..d6132faf90 100644 --- a/packages/web3-connect/src/components/provider/ProviderConnectAll.tsx +++ b/packages/web3-connect/src/components/provider/ProviderConnectAll.tsx @@ -2,6 +2,7 @@ import { useTranslation } from "react-i18next" import { isNot, prop } from "remeda" import { SProviderButton } from "@/components/provider/ProviderButton.styled" +import { WalletProviderType } from "@/config/providers" import { COMPATIBLE_WALLET_PROVIDERS, useWeb3Enable } from "@/hooks" import { Wallet } from "@/types/wallet" @@ -9,11 +10,15 @@ type Props = { installed: Wallet[] } +const CONNECT_ALL_BLACKLIST = [WalletProviderType.WalletConnect] + export const ProviderConnectAll: React.FC = ({ installed }) => { const { t } = useTranslation() const { enable } = useWeb3Enable({ disconnectOnError: true }) - const installedCompatible = installed.filter(({ provider }) => - COMPATIBLE_WALLET_PROVIDERS.includes(provider), + const installedCompatible = installed.filter( + ({ provider }) => + COMPATIBLE_WALLET_PROVIDERS.includes(provider) && + !CONNECT_ALL_BLACKLIST.includes(provider), ) const disabledCompatible = installedCompatible.filter(isNot(prop("enabled"))) diff --git a/packages/web3-connect/src/config/providers.ts b/packages/web3-connect/src/config/providers.ts index c8dad91d11..3652c154db 100644 --- a/packages/web3-connect/src/config/providers.ts +++ b/packages/web3-connect/src/config/providers.ts @@ -26,7 +26,6 @@ export enum WalletProviderType { Slush = "slush", Suiet = "suiet", WalletConnect = "walletconnect", - WalletConnectEvm = "walletconnect-evm", } export const isWalletProviderType = ( @@ -50,7 +49,7 @@ export const EVM_PROVIDERS: WalletProviderType[] = [ WalletProviderType.TrustWallet, WalletProviderType.BraveWallet, WalletProviderType.RabbyWallet, - WalletProviderType.WalletConnectEvm, + WalletProviderType.WalletConnect, ] export const SUBSTRATE_PROVIDERS: WalletProviderType[] = [ diff --git a/packages/web3-connect/src/config/wallet.ts b/packages/web3-connect/src/config/wallet.ts index 1690bfe568..59d95528fb 100644 --- a/packages/web3-connect/src/config/wallet.ts +++ b/packages/web3-connect/src/config/wallet.ts @@ -1,5 +1,7 @@ export const WALLET_DAPP_NAME = "Hydration" +export const REOWN_PROJECT_ID = "265a3fea03b46c14a46a201fbd6c552e" + export enum WalletProviderStatus { Connected = "connected", Pending = "pending", diff --git a/packages/web3-connect/src/hooks/useWeb3Enable.ts b/packages/web3-connect/src/hooks/useWeb3Enable.ts index 1c274c802d..9f744f38de 100644 --- a/packages/web3-connect/src/hooks/useWeb3Enable.ts +++ b/packages/web3-connect/src/hooks/useWeb3Enable.ts @@ -12,7 +12,7 @@ import { } from "@/components/address-book/AddressBook.store" import { WalletProviderType } from "@/config/providers" import { useWeb3Connect, WalletProviderStatus } from "@/hooks/useWeb3Connect" -import { BaseWalletError } from "@/utils/errors" +import { BaseWalletError, UserRejectedError } from "@/utils/errors" import { toStoredAccount } from "@/utils/wallet" import { getWallet } from "@/wallets" @@ -58,9 +58,10 @@ export const useWeb3Enable = (options: UseWeb3EnableOptions = {}) => { addToAddressBook(addresses) }, onError: (error, type) => { - if (options.disconnectOnError) { + if (options.disconnectOnError || error instanceof UserRejectedError) { return disconnect(type) } + setStatus(type, WalletProviderStatus.Error) if (error instanceof BaseWalletError) { setError(error.message) diff --git a/packages/web3-connect/src/signers/EthereumSigner.ts b/packages/web3-connect/src/signers/EthereumSigner.ts index 91bbd48977..d971a92f51 100644 --- a/packages/web3-connect/src/signers/EthereumSigner.ts +++ b/packages/web3-connect/src/signers/EthereumSigner.ts @@ -151,7 +151,7 @@ export class EthereumSigner { const newChainId = evmClient.chain.id if (prevChainId !== newChainId) { - this.publicClient = evmClient.getProvider() + this.publicClient = evmClient.getProvider() as PublicClient } await this.walletClient.switchChain({ id: evmClient.chain.id }) diff --git a/packages/web3-connect/src/utils/errors.ts b/packages/web3-connect/src/utils/errors.ts index 8e24e15b18..8ffdb7515e 100644 --- a/packages/web3-connect/src/utils/errors.ts +++ b/packages/web3-connect/src/utils/errors.ts @@ -23,3 +23,8 @@ export class NotInstalledError extends BaseWalletError { readonly name = "NotInstalledError" readonly message = `${this.wallet.title} could not be enabled. Refresh the browser if ${this.wallet.title} is already installed.` } + +export class UserRejectedError extends BaseWalletError { + readonly name = "UserRejectedError" + readonly message = `${this.wallet.title} was rejected by the user.` +} diff --git a/packages/web3-connect/src/wallets/ReownWalletConnect/AppKit.ts b/packages/web3-connect/src/wallets/ReownWalletConnect/AppKit.ts new file mode 100644 index 0000000000..a749e23586 --- /dev/null +++ b/packages/web3-connect/src/wallets/ReownWalletConnect/AppKit.ts @@ -0,0 +1,26 @@ +import { type AppKit, createAppKit } from "@reown/appkit" + +import { REOWN_PROJECT_ID } from "@/config/wallet" + +import { EVM_NETWORKS, hydration, SUBSTRATE_NETWORKS } from "./networks" + +export class AppKitSingleton { + private static instance: AppKit | undefined + + static getInstance(): AppKit { + if (!AppKitSingleton.instance) { + AppKitSingleton.instance = createAppKit({ + projectId: REOWN_PROJECT_ID, + networks: [hydration, ...SUBSTRATE_NETWORKS, ...EVM_NETWORKS], + universalProviderConfigOverride: { + methods: { + polkadot: ["polkadot_signTransaction", "polkadot_signMessage"], + }, + }, + showWallets: false, + allWallets: "HIDE", + }) + } + return AppKitSingleton.instance + } +} diff --git a/packages/web3-connect/src/wallets/ReownWalletConnect/index.ts b/packages/web3-connect/src/wallets/ReownWalletConnect/index.ts new file mode 100644 index 0000000000..2f0a9c3d06 --- /dev/null +++ b/packages/web3-connect/src/wallets/ReownWalletConnect/index.ts @@ -0,0 +1,235 @@ +import { type AppKit } from "@reown/appkit" +import type UniversalProvider from "@walletconnect/universal-provider" +import { type PolkadotSigner } from "polkadot-api/pjs-signer" +import { isTruthy, uniqueBy } from "remeda" +import { type EIP1193Provider } from "viem" + +import { WalletProviderType } from "@/config/providers" +import { EthereumSigner } from "@/signers/EthereumSigner" +import { SubscriptionFn, Wallet, WalletAccount } from "@/types/wallet" +import { + AuthError, + NotInstalledError, + UserRejectedError, + WalletError, +} from "@/utils/errors" +import { + Caip10Account, + getAppKitPolkadotSigner, + hasSessionNamespace, + parseCaip10Account, + SESSION_NAMESPACES, +} from "@/wallets/ReownWalletConnect/utils" + +import { AppKitSingleton } from "./AppKit" +import logo from "./logo.svg" + +export class ReownWalletConnect implements Wallet { + provider = WalletProviderType.WalletConnect + accessor = "walletconnect" + title = "WalletConnect" + installUrl = "" + logo = logo + + _appKit: AppKit + _extension: UniversalProvider | undefined + _signer: PolkadotSigner | EthereumSigner | undefined + _enabled: boolean = false + + constructor() { + this._appKit = AppKitSingleton.getInstance() + } + + get extension() { + return this._extension + } + + get signer() { + return this._signer + } + + get installed() { + return true + } + + get appKit() { + return this._appKit + } + + get enabled() { + return this._enabled + } + + transformError = (err: WalletError | Error): Error => { + return new Error( + err.message || "WalletConnect connection was rejected or failed", + ) + } + + enable = async () => { + await this.appKit.ready() + + const provider = await this.appKit.getUniversalProvider() + + if (provider && hasSessionNamespace(provider)) { + this._enabled = true + this._extension = provider + this._signer = this.getSignerFromProvider(provider) + return + } + + await this.appKit.open() + + if (!provider) throw new NotInstalledError(this) + + await new Promise((resolve, reject) => { + let unsubscribeState: (() => void) | undefined = undefined + let unsubscribeAccount: (() => void) | undefined = undefined + + const cleanup = () => { + unsubscribeState?.() + unsubscribeAccount?.() + } + + const checkSession = () => { + if (hasSessionNamespace(provider)) { + cleanup() + resolve() + } + } + + const onClose = () => { + if (!hasSessionNamespace(provider)) { + cleanup() + reject(new UserRejectedError(this)) + } + } + + unsubscribeState = this.appKit.subscribeState((state) => { + if (!state.open) { + onClose() + } + }) + + unsubscribeAccount = this.appKit.subscribeAccount(() => { + checkSession() + }) + }) + + this._enabled = true + this._extension = provider + this._signer = this.getSignerFromProvider(provider) + } + + private getSignerFromProvider(provider: UniversalProvider) { + const accounts = this.getAccountsFromProvider(provider) + if (!accounts) throw new AuthError(this) + + const polkadotAccount = accounts.polkadot?.[0] + const eip155Account = accounts.eip155?.[0] + + if (polkadotAccount) { + return getAppKitPolkadotSigner(this.appKit, polkadotAccount.address) + } + + if (eip155Account) { + return new EthereumSigner( + eip155Account.address, + provider as EIP1193Provider, + ) + } + + throw new AuthError(this) + } + + private getAccountsFromProvider( + provider: UniversalProvider, + ): Record { + const namespaces = provider.session?.namespaces + + if (!namespaces) return {} + + return Object.fromEntries( + Object.entries(namespaces).map(([key, ns]) => [ + key, + uniqueBy( + ns.accounts.map(parseCaip10Account), + (a) => a?.address ?? "", + ).filter(isTruthy), + ]), + ) + } + + private toWalletAccount = (account: Caip10Account): WalletAccount => { + return { + address: account.address, + name: this.title, + provider: this.provider, + } + } + + getAccounts = async (): Promise => { + const provider = await this.appKit.getUniversalProvider() + if (!provider) return [] + const accounts = this.getAccountsFromProvider(provider) + + if (accounts?.polkadot?.length) { + return accounts.polkadot.map(this.toWalletAccount) + } + + if (accounts?.eip155?.length) { + return accounts.eip155.map(this.toWalletAccount) + } + + return [] + } + + subscribeAccounts = (callback: SubscriptionFn) => { + this.getAccounts().then((accounts) => callback(accounts)) + + const handler = () => { + callback([]) + } + + const setupListener = async () => { + const provider = await this.appKit.getUniversalProvider() + provider?.on("session_delete", handler) + } + + setupListener() + + return () => { + const cleanup = async () => { + const provider = await this.appKit.getUniversalProvider() + provider?.removeListener("session_delete", handler) + } + cleanup() + } + } + + disconnect = () => { + this._enabled = false + this._signer = undefined + this._extension = undefined + + const cleanup = async () => { + try { + const provider = await this.appKit.getUniversalProvider() + if (provider?.session) { + const namespaces = provider.session.namespaces + const toReset = SESSION_NAMESPACES.filter((ns) => namespaces?.[ns]) + + await provider.disconnect() + for (const ns of toReset) { + this.appKit.resetAccount(ns) + } + } else if (this.appKit.getIsConnectedState()) { + await this.appKit.disconnect() + } + } catch (err) { + // Ignore disconnect errors + } + } + cleanup() + } +} diff --git a/packages/web3-connect/src/wallets/ReownWalletConnect/logo.svg b/packages/web3-connect/src/wallets/ReownWalletConnect/logo.svg new file mode 100644 index 0000000000..3a26806c6e --- /dev/null +++ b/packages/web3-connect/src/wallets/ReownWalletConnect/logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/web3-connect/src/wallets/ReownWalletConnect/networks.ts b/packages/web3-connect/src/wallets/ReownWalletConnect/networks.ts new file mode 100644 index 0000000000..8a9430e37e --- /dev/null +++ b/packages/web3-connect/src/wallets/ReownWalletConnect/networks.ts @@ -0,0 +1,28 @@ +import { + HYDRATION_CHAIN_KEY, + isEvmChain, + isEvmParachain, + isParachain, +} from "@galacticcouncil/utils" +import { chainsMap } from "@galacticcouncil/xc-cfg" +import { EvmParachain, Parachain } from "@galacticcouncil/xc-core" + +import { defineSubstrateNetwork } from "@/wallets/ReownWalletConnect/utils" + +const hydrationChain = chainsMap.get(HYDRATION_CHAIN_KEY) as EvmParachain + +export const hydration = defineSubstrateNetwork(hydrationChain) + +export const EVM_NETWORKS = [...chainsMap.values()] + .filter((c) => isEvmChain(c) || isEvmParachain(c)) + .map((c) => c.evmChain) + +export const SUBSTRATE_NETWORKS = [...chainsMap.values()] + .filter((c): c is Parachain | EvmParachain => { + // Hydration network is handled separately as default + if (c.key === HYDRATION_CHAIN_KEY) return false + + const isSubstrateParachain = isParachain(c) || isEvmParachain(c) + return isSubstrateParachain && !c.usesH160Acc + }) + .map(defineSubstrateNetwork) diff --git a/packages/web3-connect/src/wallets/ReownWalletConnect/utils.ts b/packages/web3-connect/src/wallets/ReownWalletConnect/utils.ts new file mode 100644 index 0000000000..a985cf6d2d --- /dev/null +++ b/packages/web3-connect/src/wallets/ReownWalletConnect/utils.ts @@ -0,0 +1,99 @@ +import { EvmParachain, Parachain } from "@galacticcouncil/xc-core" +import { AppKit } from "@reown/appkit" +import { AppKitNetwork } from "@reown/appkit/networks" +import type UniversalProvider from "@walletconnect/universal-provider" +import { + getPolkadotSignerFromPjs, + PolkadotSigner, +} from "polkadot-api/pjs-signer" +import { isString } from "remeda" + +export type Caip10Account = { + namespace: string + chainId: string + address: string +} + +export const defineSubstrateNetwork = ( + chain: Parachain | EvmParachain, +): AppKitNetwork => { + const id = chain.genesisHash.slice(2, 34) + + return { + id, + name: chain.name, + nativeCurrency: {} as AppKitNetwork["nativeCurrency"], + rpcUrls: { + default: { + http: [], + webSocket: isString(chain.ws) ? [chain.ws] : (chain.ws ?? []), + }, + }, + chainNamespace: "polkadot", + caipNetworkId: `polkadot:${id}`, + } +} + +export const getAppKitPolkadotSigner = ( + appKit: AppKit, + address: string, +): PolkadotSigner => { + const provider = appKit.getProvider("polkadot") + if (!provider) throw new Error("No provider found") + if (!provider.session) throw new Error("No session found") + + return getPolkadotSignerFromPjs( + address, + (transactionPayload) => { + if (!provider.session) throw new Error("No session found") + + return provider.client.request({ + topic: provider.session.topic, + chainId: `polkadot:${transactionPayload.genesisHash.substring(2, 34)}`, + request: { + method: "polkadot_signTransaction", + params: { + address, + transactionPayload, + }, + }, + }) + }, + async ({ address, data }) => { + if (!provider.session) throw new Error("No session found") + const networks = appKit.getCaipNetworks("polkadot") + const chainId = networks[0]?.caipNetworkId + if (!chainId) throw new Error("No chainId found") + + return provider.client.request({ + topic: provider.session.topic, + chainId, + request: { + method: "polkadot_signMessage", + params: { + address, + message: data, + }, + }, + }) + }, + ) +} + +export const SESSION_NAMESPACES = ["polkadot", "eip155"] as const + +export type SessionNamespace = (typeof SESSION_NAMESPACES)[number] + +export const hasSessionNamespace = (provider: UniversalProvider): boolean => + SESSION_NAMESPACES.some((ns) => provider.session?.namespaces?.[ns]) + +export const parseCaip10Account = (caip: string): Caip10Account | null => { + const parts = caip.split(":") + if (parts.length < 3) return null + const [namespace, chainId, ...addressParts] = parts + return { + namespace, + chainId, + address: addressParts.join(":"), + } +} diff --git a/packages/web3-connect/src/wallets/index.ts b/packages/web3-connect/src/wallets/index.ts index b399cc9271..e1e3f496ce 100644 --- a/packages/web3-connect/src/wallets/index.ts +++ b/packages/web3-connect/src/wallets/index.ts @@ -14,6 +14,7 @@ import { Phantom, PhantomSui } from "@/wallets/Phantom" import { PolkadotJS } from "@/wallets/PolkadotJS" import { PolkaGate } from "@/wallets/PolkaGate" import { RabbyWallet } from "@/wallets/RabbyWallet" +import { ReownWalletConnect } from "@/wallets/ReownWalletConnect" import { Slush } from "@/wallets/Slush" import { Solflare } from "@/wallets/Solflare" import { SubWallet, SubWalletEvm, SubWalletH160 } from "@/wallets/SubWallet" @@ -37,6 +38,7 @@ export { PolkadotJS, PolkaGate, RabbyWallet, + ReownWalletConnect, Slush, Solflare, SubWallet, @@ -84,6 +86,7 @@ const wallets = [ new PhantomSui(), // Other + new ReownWalletConnect(), new ExternalWallet(), ] diff --git a/yarn.lock b/yarn.lock index 783f429bee..ba07749d17 100644 --- a/yarn.lock +++ b/yarn.lock @@ -854,6 +854,21 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.28.5" +"@base-org/account@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@base-org/account/-/account-2.4.0.tgz#fb4ac1d1f7fed221de356a319d2eccf1c0a0cea4" + integrity sha512-A4Umpi8B9/pqR78D1Yoze4xHyQaujioVRqqO3d6xuDFw9VRtjg6tK3bPlwE0aW+nVH/ntllCpPa2PbI8Rnjcug== + dependencies: + "@coinbase/cdp-sdk" "^1.0.0" + "@noble/hashes" "1.4.0" + clsx "1.2.1" + eventemitter3 "5.0.1" + idb-keyval "6.2.1" + ox "0.6.9" + preact "10.24.2" + viem "^2.31.7" + zustand "5.0.3" + "@bundled-es-modules/deepmerge@^4.3.1": version "4.3.1" resolved "https://registry.yarnpkg.com/@bundled-es-modules/deepmerge/-/deepmerge-4.3.1.tgz#e0ef866494125f64f6fb75adeffacedc25f2f31b" @@ -906,6 +921,24 @@ jsonfile "^6.1.0" strip-ansi "^7.1.0" +"@coinbase/cdp-sdk@^1.0.0": + version "1.45.0" + resolved "https://registry.yarnpkg.com/@coinbase/cdp-sdk/-/cdp-sdk-1.45.0.tgz#d01eefd20b2b5b3af90d984f2a9db403f11ecec1" + integrity sha512-4fgGOhyN9g/pTDE9NtsKUapwFsubrk9wafz8ltmBqSwWqLZWfWxXkVmzMYYFAf+qeGf/X9JqJtmvDVaHFlXWlw== + dependencies: + "@solana-program/system" "^0.10.0" + "@solana-program/token" "^0.9.0" + "@solana/kit" "^5.1.0" + "@solana/web3.js" "^1.98.1" + abitype "1.0.6" + axios "^1.12.2" + axios-retry "^4.5.0" + jose "^6.0.8" + md5 "^2.3.0" + uncrypto "^0.1.3" + viem "^2.21.26" + zod "^3.24.4" + "@commander-js/extra-typings@^14.0.0": version "14.0.0" resolved "https://registry.yarnpkg.com/@commander-js/extra-typings/-/extra-typings-14.0.0.tgz#a48b73e8e9c80d5c7538d361f9c1fb9b231643d7" @@ -2072,10 +2105,10 @@ resolved "https://registry.yarnpkg.com/@galacticcouncil/math-xyk/-/math-xyk-1.3.0.tgz#96d3b3e63a93544c7e60d3fa9e1be9a576a20efe" integrity sha512-ZYVSyI5W2pQKCqpkaRM7t1AJqtPyxQ0P04T2+KpBEEABMRjSpQz2x44s1tk6r3DdFR8dICeZJEh5BI7eQYlT6w== -"@galacticcouncil/sdk-next@^0.38.0": - version "0.38.0" - resolved "https://registry.yarnpkg.com/@galacticcouncil/sdk-next/-/sdk-next-0.38.0.tgz#5faedd2319c027b342b2fe4f4ed008e28602216b" - integrity sha512-XDRLA/dSOLwV8eAFCks0urpXgmNPrUASGFBeWge/IchinT4idfVzrnmvQFEpL9IcCejqg026Qp5h232mX67tBw== +"@galacticcouncil/sdk-next@^0.40.0": + version "0.40.0" + resolved "https://registry.yarnpkg.com/@galacticcouncil/sdk-next/-/sdk-next-0.40.0.tgz#51589b85242c89ee8a7e92c6b43cea43a9cfd950" + integrity sha512-dmCq7jzM/NtuBLoLLUwX+iqJtAEPCURX97zMuEf+qtn5AZhLBIDgE+aH2sPoj9B5imbEBV+vUXA+VnyWSgjJxA== dependencies: "@galacticcouncil/math-hsm" "^1.2.0" "@galacticcouncil/math-lbp" "^1.3.0" @@ -2089,10 +2122,10 @@ "@thi.ng/memoize" "^4.0.2" big.js "^6.2.1" -"@galacticcouncil/xc-cfg@^0.18.1": - version "0.18.1" - resolved "https://registry.yarnpkg.com/@galacticcouncil/xc-cfg/-/xc-cfg-0.18.1.tgz#7594707b8564204febb04aed5b2145ba6ae111b5" - integrity sha512-WMaq6IvM6xwtxWYOPt7rY4oMHGrUSsaFYVm1fNDucZn6C7ZqNJIcu9LNzWyfDFfm9wA91RO2Jy3rrrLKB7S1+g== +"@galacticcouncil/xc-cfg@^0.18.2": + version "0.18.2" + resolved "https://registry.yarnpkg.com/@galacticcouncil/xc-cfg/-/xc-cfg-0.18.2.tgz#6ded8d12a9d4491de77c0de68e2c33c5fdc695d3" + integrity sha512-vFd4Tpw3y/4NNiPRy+GpemirfOH9oEsGKrWJJi3eDGksBNPRq+yoCd0w/W4fQkIYJnln3PZWztWvNrl8KZ0/ug== dependencies: "@galacticcouncil/xc-core" "^0.13.0" @@ -2842,6 +2875,23 @@ resolved "https://registry.yarnpkg.com/@jsonjoy.com/util/-/util-1.6.0.tgz#23991b2fe12cb3a006573d9dc97c768d3ed2c9f1" integrity sha512-sw/RMbehRhN68WRtcKCpQOPfnH6lLP4GJfqzi3iYej8tnzpZUDr6UkZYJjcjjC0FWEJOJbyM3PTIwxucUmDG2A== +"@lit-labs/ssr-dom-shim@^1.5.0": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.5.1.tgz#3166900c0d481f03d6d4133686e0febf760d521d" + integrity sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA== + +"@lit/react@1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@lit/react/-/react-1.0.8.tgz#b3e229173b7b57d550909bf95d8f3da1a9510557" + integrity sha512-p2+YcF+JE67SRX3mMlJ1TKCSTsgyOVdAwd/nxp3NuV1+Cb6MWALbN6nT7Ld4tpmYofcE5kcaSY1YBB9erY+6fw== + +"@lit/reactive-element@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-2.1.2.tgz#4c6af9042603c98e61ba90b294607904d51b61cb" + integrity sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A== + dependencies: + "@lit-labs/ssr-dom-shim" "^1.5.0" + "@mdx-js/react@^3.0.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-3.1.0.tgz#c4522e335b3897b9a845db1dbdd2f966ae8fb0ed" @@ -2849,6 +2899,11 @@ dependencies: "@types/mdx" "^2.0.0" +"@msgpack/msgpack@3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@msgpack/msgpack/-/msgpack-3.1.3.tgz#c4bff2b9539faf0882f3ee03537a7e9a4b3a7864" + integrity sha512-47XIizs9XZXvuJgoaJUIE2lFoID8ugvc0jzSHP+Ptfk8nTbnR8g788wv48N03Kx0UkAv559HWRQ3yzOgzlRNUA== + "@mysten/bcs@1.9.2": version "1.9.2" resolved "https://registry.yarnpkg.com/@mysten/bcs/-/bcs-1.9.2.tgz#3bf0e30f14595c9d9e5c142e94b5646ac1318da7" @@ -2898,11 +2953,18 @@ resolved "https://registry.yarnpkg.com/@neoconfetti/react/-/react-1.0.0.tgz#9a619d980a2285a829b1f8c78ca6484f0364a370" integrity sha512-klcSooChXXOzIm+SE5IISIAn3bYzYfPjbX7D7HoqZL84oAfgREeSg5vSIaSFH+DaGzzvImTyWe1OyrJ67vik4A== -"@noble/ciphers@^1.3.0": +"@noble/ciphers@1.3.0", "@noble/ciphers@^1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-1.3.0.tgz#f64b8ff886c240e644e5573c097f86e5b43676dc" integrity sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw== +"@noble/curves@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.8.0.tgz#fe035a23959e6aeadf695851b51a87465b5ba8f7" + integrity sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ== + dependencies: + "@noble/hashes" "1.7.0" + "@noble/curves@1.8.2", "@noble/curves@~1.8.1": version "1.8.2" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.8.2.tgz#8f24c037795e22b90ae29e222a856294c1d9ffc7" @@ -2917,6 +2979,13 @@ dependencies: "@noble/hashes" "1.8.0" +"@noble/curves@1.9.7": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.7.tgz#79d04b4758a43e4bca2cbdc62e7771352fa6b951" + integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== + dependencies: + "@noble/hashes" "1.8.0" + "@noble/curves@=1.9.4": version "1.9.4" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.4.tgz#a748c6837ee7854a558cc3b951aedd87a5e7d6a5" @@ -2924,6 +2993,16 @@ dependencies: "@noble/hashes" "1.8.0" +"@noble/hashes@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" + integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== + +"@noble/hashes@1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.7.0.tgz#5d9e33af2c7d04fee35de1519b80c958b2e35e39" + integrity sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w== + "@noble/hashes@1.7.2", "@noble/hashes@~1.7.1": version "1.7.2" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.7.2.tgz#d53c65a21658fb02f3303e7ee3ba89d6754c64b4" @@ -2960,6 +3039,13 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@phosphor-icons/webcomponents@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@phosphor-icons/webcomponents/-/webcomponents-2.1.5.tgz#79dcdcc49ae17ea309080eebc463710221ced890" + integrity sha512-JcvQkZxvcX2jK+QCclm8+e8HXqtdFW9xV4/kk2aL9Y3dJA2oQVt+pzbv1orkumz3rfx4K9mn9fDoMr1He1yr7Q== + dependencies: + lit "^3" + "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" @@ -3782,6 +3868,120 @@ redux-thunk "^3.1.0" reselect "^5.1.0" +"@reown/appkit-common@1.8.19": + version "1.8.19" + resolved "https://registry.yarnpkg.com/@reown/appkit-common/-/appkit-common-1.8.19.tgz#8cede6a600757376f4de3f57e5d36f5a8e3c9cee" + integrity sha512-z5wDrYjUGY7YbM4b14NHVo54WKZ5++PQtGkcsXhiOP39yAVijubBQD8BfHs/Pu2fSFqnqLIFoCVvIEfNWWccRw== + dependencies: + big.js "6.2.2" + dayjs "1.11.13" + viem ">=2.45.0" + +"@reown/appkit-controllers@1.8.19": + version "1.8.19" + resolved "https://registry.yarnpkg.com/@reown/appkit-controllers/-/appkit-controllers-1.8.19.tgz#191b2810044e4b12809ad262aabbc9ead1b00c6f" + integrity sha512-JFNT8CfAVit9FJXh596Ye4U8A/oIapW+Y0KQqjB59DXyTCDZbxZDB32rULBQrSkZ6PufTEa239Dil4kABCQKtg== + dependencies: + "@reown/appkit-common" "1.8.19" + "@reown/appkit-wallet" "1.8.19" + "@walletconnect/universal-provider" "2.23.7" + valtio "2.1.7" + viem ">=2.45.0" + +"@reown/appkit-pay@1.8.19": + version "1.8.19" + resolved "https://registry.yarnpkg.com/@reown/appkit-pay/-/appkit-pay-1.8.19.tgz#10a6023742ce861ebb2dc2161af072d64960e069" + integrity sha512-HO/tQT0TbTQO3eONxNNPJAOZAOzUiHvjM0Mty1rFFeRBH68auiqQxQi2YFNMs014gNkRN+cb84VYau7+MCC0fQ== + dependencies: + "@reown/appkit-common" "1.8.19" + "@reown/appkit-controllers" "1.8.19" + "@reown/appkit-ui" "1.8.19" + "@reown/appkit-utils" "1.8.19" + lit "3.3.0" + valtio "2.1.7" + +"@reown/appkit-polyfills@1.8.19": + version "1.8.19" + resolved "https://registry.yarnpkg.com/@reown/appkit-polyfills/-/appkit-polyfills-1.8.19.tgz#afa28ef61daccbda32a0c8e62edfbe64b140397b" + integrity sha512-PSoetRSuZg7f2YFPzdfs4BayQl51zcGqYr7frwOe6td0XEsspLrrVFn/zk5QFbFHZVsMdfRZ+TTunt84ozRdnQ== + dependencies: + buffer "6.0.3" + +"@reown/appkit-scaffold-ui@1.8.19": + version "1.8.19" + resolved "https://registry.yarnpkg.com/@reown/appkit-scaffold-ui/-/appkit-scaffold-ui-1.8.19.tgz#9c9d78cffd49edd5284a1ceff629a73ab4c5bc9c" + integrity sha512-Ak767x0VzeDIXb0wbzkl19kx6udw7vkb1EU0SAweG3iKc9BunW87Rfcd48/YimzMZycJaYmlbtfmqQQDYs6Few== + dependencies: + "@reown/appkit-common" "1.8.19" + "@reown/appkit-controllers" "1.8.19" + "@reown/appkit-pay" "1.8.19" + "@reown/appkit-ui" "1.8.19" + "@reown/appkit-utils" "1.8.19" + "@reown/appkit-wallet" "1.8.19" + lit "3.3.0" + +"@reown/appkit-ui@1.8.19": + version "1.8.19" + resolved "https://registry.yarnpkg.com/@reown/appkit-ui/-/appkit-ui-1.8.19.tgz#7e28d35aafd62013de28a9b208d6510c055960cb" + integrity sha512-fCAwW8yyyC3JcgKLBPvCtYuDGC4H8anO7u4LTaAXGEzdcU5H+IrCgNFSPNK7NuTSmgXm1TnoYxPxRFKNiNwFdA== + dependencies: + "@phosphor-icons/webcomponents" "2.1.5" + "@reown/appkit-common" "1.8.19" + "@reown/appkit-controllers" "1.8.19" + "@reown/appkit-wallet" "1.8.19" + lit "3.3.0" + qrcode "1.5.3" + +"@reown/appkit-utils@1.8.19": + version "1.8.19" + resolved "https://registry.yarnpkg.com/@reown/appkit-utils/-/appkit-utils-1.8.19.tgz#29e14ef438728021cf4e11e1502e1000f69d0b0a" + integrity sha512-VQPgUMTFqoh4UD3EDZSw9wyMkyZsmIVmu8CdQ2FUxIuqYW4fLd0VIpkDeO64MMhSv8b0X8Vd6m4+eGcqSwlUAg== + dependencies: + "@reown/appkit-common" "1.8.19" + "@reown/appkit-controllers" "1.8.19" + "@reown/appkit-polyfills" "1.8.19" + "@reown/appkit-wallet" "1.8.19" + "@wallet-standard/wallet" "1.1.0" + "@walletconnect/logger" "3.0.2" + "@walletconnect/universal-provider" "2.23.7" + valtio "2.1.7" + viem ">=2.45.0" + optionalDependencies: + "@base-org/account" "2.4.0" + "@safe-global/safe-apps-provider" "0.18.6" + "@safe-global/safe-apps-sdk" "9.1.0" + +"@reown/appkit-wallet@1.8.19": + version "1.8.19" + resolved "https://registry.yarnpkg.com/@reown/appkit-wallet/-/appkit-wallet-1.8.19.tgz#5fac1c8c564f8c92c2299397a5ff12c35aa113e9" + integrity sha512-NVdIKceUhkXYtsG32925ctmVn0QJFNyDlr+mWheMLCEZ/IUPn+6aA53vTVaSUquhyeFxUXtrCOh3ln6v1tup5w== + dependencies: + "@reown/appkit-common" "1.8.19" + "@reown/appkit-polyfills" "1.8.19" + "@walletconnect/logger" "3.0.2" + zod "3.22.4" + +"@reown/appkit@^1.8.19": + version "1.8.19" + resolved "https://registry.yarnpkg.com/@reown/appkit/-/appkit-1.8.19.tgz#ceddfe587513a2d5b2d04cdf8333b88da181b613" + integrity sha512-wB+xatkRbOy0AY1cZxxtcKzzPk3l3CTFulDbaISLVmZI6ZnQrOFuLnYc285zGsC6DB4d6bmwYUh89zcMLa4PvQ== + dependencies: + "@reown/appkit-common" "1.8.19" + "@reown/appkit-controllers" "1.8.19" + "@reown/appkit-pay" "1.8.19" + "@reown/appkit-polyfills" "1.8.19" + "@reown/appkit-scaffold-ui" "1.8.19" + "@reown/appkit-ui" "1.8.19" + "@reown/appkit-utils" "1.8.19" + "@reown/appkit-wallet" "1.8.19" + "@walletconnect/universal-provider" "2.23.7" + bs58 "6.0.0" + semver "7.7.2" + valtio "2.1.7" + viem ">=2.45.0" + optionalDependencies: + "@lit/react" "1.0.8" + "@repeaterjs/repeater@^3.0.4", "@repeaterjs/repeater@^3.0.6": version "3.0.6" resolved "https://registry.yarnpkg.com/@repeaterjs/repeater/-/repeater-3.0.6.tgz#be23df0143ceec3c69f8b6c2517971a5578fdaa2" @@ -4033,16 +4233,37 @@ resolved "https://registry.yarnpkg.com/@rx-state/core/-/core-0.1.4.tgz#586dde80be9dbdac31844006a0dcaa2bc7f35a5c" integrity sha512-Z+3hjU2xh1HisLxt+W5hlYX/eGSDaXXP+ns82gq/PLZpkXLu0uwcNUh9RLY3Clq4zT+hSsA3vcpIGt6+UAb8rQ== -"@scure/base@^1.1.3", "@scure/base@~1.2.2", "@scure/base@~1.2.4", "@scure/base@~1.2.5": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.5.tgz#f9d1b232425b367d0dcb81c96611dcc651d58671" - integrity sha512-9rE6EOVeIQzt5TSu4v+K523F8u6DhBsoZWPGKlnCshhlDhy0kJzUX4V+tr2dWmzF1GdekvThABoEQBGBQI7xZw== +"@safe-global/safe-apps-provider@0.18.6": + version "0.18.6" + resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.6.tgz#b5756176549e35350b7e090824b71507a0d1f749" + integrity sha512-4LhMmjPWlIO8TTDC2AwLk44XKXaK6hfBTWyljDm0HQ6TWlOEijVWNrt2s3OCVMSxlXAcEzYfqyu1daHZooTC2Q== + dependencies: + "@safe-global/safe-apps-sdk" "^9.1.0" + events "^3.3.0" -"@scure/base@^1.2.6": +"@safe-global/safe-apps-sdk@9.1.0", "@safe-global/safe-apps-sdk@^9.1.0": + version "9.1.0" + resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-sdk/-/safe-apps-sdk-9.1.0.tgz#0e65913e0f202e529ed3c846e0f5a98c2d35aa98" + integrity sha512-N5p/ulfnnA2Pi2M3YeWjULeWbjo7ei22JwU/IXnhoHzKq3pYCN6ynL9mJBOlvDVv892EgLPCWCOwQk/uBT2v0Q== + dependencies: + "@safe-global/safe-gateway-typescript-sdk" "^3.5.3" + viem "^2.1.1" + +"@safe-global/safe-gateway-typescript-sdk@^3.5.3": + version "3.23.1" + resolved "https://registry.yarnpkg.com/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.23.1.tgz#1e86d471bcd2adb0f777246ccbea6fa39618e02c" + integrity sha512-6ORQfwtEJYpalCeVO21L4XXGSdbEMfyp2hEv6cP82afKXSwvse6d3sdelgaPWUxHIsFRkWvHDdzh8IyyKHZKxw== + +"@scure/base@1.2.6", "@scure/base@^1.2.6": version "1.2.6" resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.6.tgz#ca917184b8231394dd8847509c67a0be522e59f6" integrity sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg== +"@scure/base@^1.1.3", "@scure/base@~1.2.2", "@scure/base@~1.2.4", "@scure/base@~1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.5.tgz#f9d1b232425b367d0dcb81c96611dcc651d58671" + integrity sha512-9rE6EOVeIQzt5TSu4v+K523F8u6DhBsoZWPGKlnCshhlDhy0kJzUX4V+tr2dWmzF1GdekvThABoEQBGBQI7xZw== + "@scure/base@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@scure/base/-/base-2.0.0.tgz#ba6371fddf92c2727e88ad6ab485db6e624f9a98" @@ -4092,6 +4313,46 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz#abb11d99aeb6d27f1b563c38147a72d50058e339" integrity sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ== +"@solana-program/system@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@solana-program/system/-/system-0.10.0.tgz#f68ffb0a3e1c1d5e68ecfe111fbbe729f95a582a" + integrity sha512-Go+LOEZmqmNlfr+Gjy5ZWAdY5HbYzk2RBewD9QinEU/bBSzpFfzqDRT55JjFRBGJUvMgf3C2vfXEGT4i8DSI4g== + +"@solana-program/token@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@solana-program/token/-/token-0.9.0.tgz#9582068c6053b1600472eedb3fe084b262cbc1c7" + integrity sha512-vnZxndd4ED4Fc56sw93cWZ2djEeeOFxtaPS8SPf5+a+JZjKA/EnKqzbE1y04FuMhIVrLERQ8uR8H2h72eZzlsA== + +"@solana/accounts@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/accounts/-/accounts-5.5.1.tgz#5a86ecf221dc9c4ad317f5816179a0616a0376fb" + integrity sha512-TfOY9xixg5rizABuLVuZ9XI2x2tmWUC/OoN556xwfDlhBHBjKfszicYYOyD6nbFmwTGYarCmyGIdteXxTXIdhQ== + dependencies: + "@solana/addresses" "5.5.1" + "@solana/codecs-core" "5.5.1" + "@solana/codecs-strings" "5.5.1" + "@solana/errors" "5.5.1" + "@solana/rpc-spec" "5.5.1" + "@solana/rpc-types" "5.5.1" + +"@solana/addresses@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/addresses/-/addresses-5.5.1.tgz#7137c6af545724f19116f3631baa49b501e0253d" + integrity sha512-5xoah3Q9G30HQghu/9BiHLb5pzlPKRC3zydQDmE3O9H//WfayxTFppsUDCL6FjYUHqj/wzK6CWHySglc2RkpdA== + dependencies: + "@solana/assertions" "5.5.1" + "@solana/codecs-core" "5.5.1" + "@solana/codecs-strings" "5.5.1" + "@solana/errors" "5.5.1" + "@solana/nominal-types" "5.5.1" + +"@solana/assertions@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/assertions/-/assertions-5.5.1.tgz#4ffece2a6a30c951d0d9ff96bfc26f9f75c6e2be" + integrity sha512-YTCSWAlGwSlVPnWtWLm3ukz81wH4j2YaCveK+TjpvUU88hTy6fmUqxi0+hvAMAe4zKXpJyj3Az7BrLJRxbIm4Q== + dependencies: + "@solana/errors" "5.5.1" + "@solana/buffer-layout-utils@^0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" @@ -4116,6 +4377,30 @@ dependencies: "@solana/errors" "2.1.1" +"@solana/codecs-core@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-5.5.1.tgz#1b2619c697ad04c99f98cc468135d584b7e2b16d" + integrity sha512-TgBt//bbKBct0t6/MpA8ElaOA3sa8eYVvR7LGslCZ84WiAwwjCY0lW/lOYsFHJQzwREMdUyuEyy5YWBKtdh8Rw== + dependencies: + "@solana/errors" "5.5.1" + +"@solana/codecs-data-structures@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-5.5.1.tgz#4ebadc8feaa5cc30c95a485c5b34c5175245e4b2" + integrity sha512-97bJWGyUY9WvBz3mX1UV3YPWGDTez6btCfD0ip3UVEXJbItVuUiOkzcO5iFDUtQT5riKT6xC+Mzl+0nO76gd0w== + dependencies: + "@solana/codecs-core" "5.5.1" + "@solana/codecs-numbers" "5.5.1" + "@solana/errors" "5.5.1" + +"@solana/codecs-numbers@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-5.5.1.tgz#6ebc43250133ceb7836f1ac5780a7767e383efde" + integrity sha512-rllMIZAHqmtvC0HO/dc/21wDuWaD0B8Ryv8o+YtsICQBuiL/0U4AGwH7Pi5GNFySYk0/crSuwfIqQFtmxNSPFw== + dependencies: + "@solana/codecs-core" "5.5.1" + "@solana/errors" "5.5.1" + "@solana/codecs-numbers@^2.1.0": version "2.1.1" resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.1.1.tgz#b7a69024e2397e236bbfb11b75ff4a077236b9d2" @@ -4124,6 +4409,26 @@ "@solana/codecs-core" "2.1.1" "@solana/errors" "2.1.1" +"@solana/codecs-strings@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-5.5.1.tgz#3849b188bf4a262f63957b69071e945fb82b445d" + integrity sha512-7klX4AhfHYA+uKKC/nxRGP2MntbYQCR3N6+v7bk1W/rSxYuhNmt+FN8aoThSZtWIKwN6BEyR1167ka8Co1+E7A== + dependencies: + "@solana/codecs-core" "5.5.1" + "@solana/codecs-numbers" "5.5.1" + "@solana/errors" "5.5.1" + +"@solana/codecs@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-5.5.1.tgz#9e56d1caec5195ebaaee3e635ee6ab2c3a5a697b" + integrity sha512-Vea29nJub/bXjfzEV7ZZQ/PWr1pYLZo3z0qW0LQL37uKKVzVFRQlwetd7INk3YtTD3xm9WUYr7bCvYUk3uKy2g== + dependencies: + "@solana/codecs-core" "5.5.1" + "@solana/codecs-data-structures" "5.5.1" + "@solana/codecs-numbers" "5.5.1" + "@solana/codecs-strings" "5.5.1" + "@solana/options" "5.5.1" + "@solana/errors@2.1.1": version "2.1.1" resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.1.1.tgz#009ebf387b0c014a8fc60a59d65757fef942e4fd" @@ -4132,6 +4437,280 @@ chalk "^5.4.1" commander "^13.1.0" +"@solana/errors@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-5.5.1.tgz#1c17bc822264fd5a6305d8bfb9d597858e4ce17b" + integrity sha512-vFO3p+S7HoyyrcAectnXbdsMfwUzY2zYFUc2DEe5BwpiE9J1IAxPBGjOWO6hL1bbYdBrlmjNx8DXCslqS+Kcmg== + dependencies: + chalk "5.6.2" + commander "14.0.2" + +"@solana/fast-stable-stringify@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/fast-stable-stringify/-/fast-stable-stringify-5.5.1.tgz#3c9507eb881f1eac7a22ce52c845175a7857b10d" + integrity sha512-Ni7s2FN33zTzhTFgRjEbOVFO+UAmK8qi3Iu0/GRFYK4jN696OjKHnboSQH/EacQ+yGqS54bfxf409wU5dsLLCw== + +"@solana/functional@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/functional/-/functional-5.5.1.tgz#b23437d15a20ac2faa50bb516911baab5f6c33bf" + integrity sha512-tTHoJcEQq3gQx5qsdsDJ0LEJeFzwNpXD80xApW9o/PPoCNimI3SALkZl+zNW8VnxRrV3l3yYvfHWBKe/X3WG3w== + +"@solana/instruction-plans@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/instruction-plans/-/instruction-plans-5.5.1.tgz#df347bbbc77d9380a9486dfedbae5e858ef47ea6" + integrity sha512-7z3CB7YMcFKuVvgcnNY8bY6IsZ8LG61Iytbz7HpNVGX2u1RthOs1tRW8luTzSG1MPL0Ox7afyAVMYeFqSPHnaQ== + dependencies: + "@solana/errors" "5.5.1" + "@solana/instructions" "5.5.1" + "@solana/keys" "5.5.1" + "@solana/promises" "5.5.1" + "@solana/transaction-messages" "5.5.1" + "@solana/transactions" "5.5.1" + +"@solana/instructions@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/instructions/-/instructions-5.5.1.tgz#864a9f2ebd4911379b56a9e01ecfa6d52bbf5173" + integrity sha512-h0G1CG6S+gUUSt0eo6rOtsaXRBwCq1+Js2a+Ps9Bzk9q7YHNFA75/X0NWugWLgC92waRp66hrjMTiYYnLBoWOQ== + dependencies: + "@solana/codecs-core" "5.5.1" + "@solana/errors" "5.5.1" + +"@solana/keys@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/keys/-/keys-5.5.1.tgz#62405c5b25f72add88bc3af63cca66739526f429" + integrity sha512-KRD61cL7CRL+b4r/eB9dEoVxIf/2EJ1Pm1DmRYhtSUAJD2dJ5Xw8QFuehobOGm9URqQ7gaQl+Fkc1qvDlsWqKg== + dependencies: + "@solana/assertions" "5.5.1" + "@solana/codecs-core" "5.5.1" + "@solana/codecs-strings" "5.5.1" + "@solana/errors" "5.5.1" + "@solana/nominal-types" "5.5.1" + +"@solana/kit@^5.1.0": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/kit/-/kit-5.5.1.tgz#5baf7def33dcd5673fc86f8af9c7f326faa01959" + integrity sha512-irKUGiV2yRoyf+4eGQ/ZeCRxa43yjFEL1DUI5B0DkcfZw3cr0VJtVJnrG8OtVF01vT0OUfYOcUn6zJW5TROHvQ== + dependencies: + "@solana/accounts" "5.5.1" + "@solana/addresses" "5.5.1" + "@solana/codecs" "5.5.1" + "@solana/errors" "5.5.1" + "@solana/functional" "5.5.1" + "@solana/instruction-plans" "5.5.1" + "@solana/instructions" "5.5.1" + "@solana/keys" "5.5.1" + "@solana/offchain-messages" "5.5.1" + "@solana/plugin-core" "5.5.1" + "@solana/programs" "5.5.1" + "@solana/rpc" "5.5.1" + "@solana/rpc-api" "5.5.1" + "@solana/rpc-parsed-types" "5.5.1" + "@solana/rpc-spec-types" "5.5.1" + "@solana/rpc-subscriptions" "5.5.1" + "@solana/rpc-types" "5.5.1" + "@solana/signers" "5.5.1" + "@solana/sysvars" "5.5.1" + "@solana/transaction-confirmation" "5.5.1" + "@solana/transaction-messages" "5.5.1" + "@solana/transactions" "5.5.1" + +"@solana/nominal-types@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/nominal-types/-/nominal-types-5.5.1.tgz#61a06d88b463889add17656ac33734e074505af5" + integrity sha512-I1ImR+kfrLFxN5z22UDiTWLdRZeKtU0J/pkWkO8qm/8WxveiwdIv4hooi8pb6JnlR4mSrWhq0pCIOxDYrL9GIQ== + +"@solana/offchain-messages@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/offchain-messages/-/offchain-messages-5.5.1.tgz#0faae304d37a4bf5562b69400a67f5b900e5b877" + integrity sha512-g+xHH95prTU+KujtbOzj8wn+C7ZNoiLhf3hj6nYq3MTyxOXtBEysguc97jJveUZG0K97aIKG6xVUlMutg5yxhw== + dependencies: + "@solana/addresses" "5.5.1" + "@solana/codecs-core" "5.5.1" + "@solana/codecs-data-structures" "5.5.1" + "@solana/codecs-numbers" "5.5.1" + "@solana/codecs-strings" "5.5.1" + "@solana/errors" "5.5.1" + "@solana/keys" "5.5.1" + "@solana/nominal-types" "5.5.1" + +"@solana/options@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/options/-/options-5.5.1.tgz#ee0f1e29bdb7595d3c57bb1932a439ea9055de26" + integrity sha512-eo971c9iLNLmk+yOFyo7yKIJzJ/zou6uKpy6mBuyb/thKtS/haiKIc3VLhyTXty3OH2PW8yOlORJnv4DexJB8A== + dependencies: + "@solana/codecs-core" "5.5.1" + "@solana/codecs-data-structures" "5.5.1" + "@solana/codecs-numbers" "5.5.1" + "@solana/codecs-strings" "5.5.1" + "@solana/errors" "5.5.1" + +"@solana/plugin-core@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/plugin-core/-/plugin-core-5.5.1.tgz#cfd39b3a6231b662b1079f4b7561e5bf25f3f63b" + integrity sha512-VUZl30lDQFJeiSyNfzU1EjYt2QZvoBFKEwjn1lilUJw7KgqD5z7mbV7diJhT+dLFs36i0OsjXvq5kSygn8YJ3A== + +"@solana/programs@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/programs/-/programs-5.5.1.tgz#211ea9cb1811f441146539a1ad1f88622400fdbd" + integrity sha512-7U9kn0Jsx1NuBLn5HRTFYh78MV4XN145Yc3WP/q5BlqAVNlMoU9coG5IUTJIG847TUqC1lRto3Dnpwm6T4YRpA== + dependencies: + "@solana/addresses" "5.5.1" + "@solana/errors" "5.5.1" + +"@solana/promises@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/promises/-/promises-5.5.1.tgz#4dbdea765fe20fe81e92c47d72010e2ff4f35893" + integrity sha512-T9lfuUYkGykJmppEcssNiCf6yiYQxJkhiLPP+pyAc2z84/7r3UVIb2tNJk4A9sucS66pzJnVHZKcZVGUUp6wzA== + +"@solana/rpc-api@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/rpc-api/-/rpc-api-5.5.1.tgz#1214e1ddc24793c101dc9a6dc2098c554a0fd327" + integrity sha512-XWOQQPhKl06Vj0xi3RYHAc6oEQd8B82okYJ04K7N0Vvy3J4PN2cxeK7klwkjgavdcN9EVkYCChm2ADAtnztKnA== + dependencies: + "@solana/addresses" "5.5.1" + "@solana/codecs-core" "5.5.1" + "@solana/codecs-strings" "5.5.1" + "@solana/errors" "5.5.1" + "@solana/keys" "5.5.1" + "@solana/rpc-parsed-types" "5.5.1" + "@solana/rpc-spec" "5.5.1" + "@solana/rpc-transformers" "5.5.1" + "@solana/rpc-types" "5.5.1" + "@solana/transaction-messages" "5.5.1" + "@solana/transactions" "5.5.1" + +"@solana/rpc-parsed-types@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/rpc-parsed-types/-/rpc-parsed-types-5.5.1.tgz#329ff94a5e3661c59167b58de4a55b390a9e24f8" + integrity sha512-HEi3G2nZqGEsa3vX6U0FrXLaqnUCg4SKIUrOe8CezD+cSFbRTOn3rCLrUmJrhVyXlHoQVaRO9mmeovk31jWxJg== + +"@solana/rpc-spec-types@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/rpc-spec-types/-/rpc-spec-types-5.5.1.tgz#6e9a9d8e6856273ee76bf23fe635a0aaac202e54" + integrity sha512-6OFKtRpIEJQs8Jb2C4OO8KyP2h2Hy1MFhatMAoXA+0Ik8S3H+CicIuMZvGZ91mIu/tXicuOOsNNLu3HAkrakrw== + +"@solana/rpc-spec@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/rpc-spec/-/rpc-spec-5.5.1.tgz#3fe48f458c10df76da0f05436cba1117e955af79" + integrity sha512-m3LX2bChm3E3by4mQrH4YwCAFY57QBzuUSWqlUw7ChuZ+oLLOq7b2czi4i6L4Vna67j3eCmB3e+4tqy1j5wy7Q== + dependencies: + "@solana/errors" "5.5.1" + "@solana/rpc-spec-types" "5.5.1" + +"@solana/rpc-subscriptions-api@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions-api/-/rpc-subscriptions-api-5.5.1.tgz#138d73745c7736ec3c78bd4ca9b3d621d16c4cce" + integrity sha512-5Oi7k+GdeS8xR2ly1iuSFkAv6CZqwG0Z6b1QZKbEgxadE1XGSDrhM2cn59l+bqCozUWCqh4c/A2znU/qQjROlw== + dependencies: + "@solana/addresses" "5.5.1" + "@solana/keys" "5.5.1" + "@solana/rpc-subscriptions-spec" "5.5.1" + "@solana/rpc-transformers" "5.5.1" + "@solana/rpc-types" "5.5.1" + "@solana/transaction-messages" "5.5.1" + "@solana/transactions" "5.5.1" + +"@solana/rpc-subscriptions-channel-websocket@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions-channel-websocket/-/rpc-subscriptions-channel-websocket-5.5.1.tgz#ebfa937d12c3629762a256e699342b3ce2d9c940" + integrity sha512-7tGfBBrYY8TrngOyxSHoCU5shy86iA9SRMRrPSyBhEaZRAk6dnbdpmUTez7gtdVo0BCvh9nzQtUycKWSS7PnFQ== + dependencies: + "@solana/errors" "5.5.1" + "@solana/functional" "5.5.1" + "@solana/rpc-subscriptions-spec" "5.5.1" + "@solana/subscribable" "5.5.1" + ws "^8.19.0" + +"@solana/rpc-subscriptions-spec@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions-spec/-/rpc-subscriptions-spec-5.5.1.tgz#dd7859dedcb5ca531e7c20901172c5ec1c2fa5b9" + integrity sha512-iq+rGq5fMKP3/mKHPNB6MC8IbVW41KGZg83Us/+LE3AWOTWV1WT20KT2iH1F1ik9roi42COv/TpoZZvhKj45XQ== + dependencies: + "@solana/errors" "5.5.1" + "@solana/promises" "5.5.1" + "@solana/rpc-spec-types" "5.5.1" + "@solana/subscribable" "5.5.1" + +"@solana/rpc-subscriptions@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions/-/rpc-subscriptions-5.5.1.tgz#a35e84b934a3a18efa1f815844f639223c4e7d88" + integrity sha512-CTMy5bt/6mDh4tc6vUJms9EcuZj3xvK0/xq8IQ90rhkpYvate91RjBP+egvjgSayUg9yucU9vNuUpEjz4spM7w== + dependencies: + "@solana/errors" "5.5.1" + "@solana/fast-stable-stringify" "5.5.1" + "@solana/functional" "5.5.1" + "@solana/promises" "5.5.1" + "@solana/rpc-spec-types" "5.5.1" + "@solana/rpc-subscriptions-api" "5.5.1" + "@solana/rpc-subscriptions-channel-websocket" "5.5.1" + "@solana/rpc-subscriptions-spec" "5.5.1" + "@solana/rpc-transformers" "5.5.1" + "@solana/rpc-types" "5.5.1" + "@solana/subscribable" "5.5.1" + +"@solana/rpc-transformers@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/rpc-transformers/-/rpc-transformers-5.5.1.tgz#632295520087b5935770af1da8329e97e3181bc3" + integrity sha512-OsWqLCQdcrRJKvHiMmwFhp9noNZ4FARuMkHT5us3ustDLXaxOjF0gfqZLnMkulSLcKt7TGXqMhBV+HCo7z5M8Q== + dependencies: + "@solana/errors" "5.5.1" + "@solana/functional" "5.5.1" + "@solana/nominal-types" "5.5.1" + "@solana/rpc-spec-types" "5.5.1" + "@solana/rpc-types" "5.5.1" + +"@solana/rpc-transport-http@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/rpc-transport-http/-/rpc-transport-http-5.5.1.tgz#27f3fbdef6dd99e2507ae2b996107960454c62a3" + integrity sha512-yv8GoVSHqEV0kUJEIhkdOVkR2SvJ6yoWC51cJn2rSV7plr6huLGe0JgujCmB7uZhhaLbcbP3zxXxu9sOjsi7Fg== + dependencies: + "@solana/errors" "5.5.1" + "@solana/rpc-spec" "5.5.1" + "@solana/rpc-spec-types" "5.5.1" + undici-types "^7.19.2" + +"@solana/rpc-types@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/rpc-types/-/rpc-types-5.5.1.tgz#ec16170f2470ece5de7154e920842125b7059cb5" + integrity sha512-bibTFQ7PbHJJjGJPmfYC2I+/5CRFS4O2p9WwbFraX1Keeel+nRrt/NBXIy8veP5AEn2sVJIyJPpWBRpCx1oATA== + dependencies: + "@solana/addresses" "5.5.1" + "@solana/codecs-core" "5.5.1" + "@solana/codecs-numbers" "5.5.1" + "@solana/codecs-strings" "5.5.1" + "@solana/errors" "5.5.1" + "@solana/nominal-types" "5.5.1" + +"@solana/rpc@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/rpc/-/rpc-5.5.1.tgz#933a20f5bfcf005e0b4082746d2f48203a3832ee" + integrity sha512-ku8zTUMrkCWci66PRIBC+1mXepEnZH/q1f3ck0kJZ95a06bOTl5KU7HeXWtskkyefzARJ5zvCs54AD5nxjQJ+A== + dependencies: + "@solana/errors" "5.5.1" + "@solana/fast-stable-stringify" "5.5.1" + "@solana/functional" "5.5.1" + "@solana/rpc-api" "5.5.1" + "@solana/rpc-spec" "5.5.1" + "@solana/rpc-spec-types" "5.5.1" + "@solana/rpc-transformers" "5.5.1" + "@solana/rpc-transport-http" "5.5.1" + "@solana/rpc-types" "5.5.1" + +"@solana/signers@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/signers/-/signers-5.5.1.tgz#21cdc65ed007e8173043af9db44d8adc2fb9c054" + integrity sha512-FY0IVaBT2kCAze55vEieR6hag4coqcuJ31Aw3hqRH7mv6sV8oqwuJmUrx+uFwOp1gwd5OEAzlv6N4hOOple4sQ== + dependencies: + "@solana/addresses" "5.5.1" + "@solana/codecs-core" "5.5.1" + "@solana/errors" "5.5.1" + "@solana/instructions" "5.5.1" + "@solana/keys" "5.5.1" + "@solana/nominal-types" "5.5.1" + "@solana/offchain-messages" "5.5.1" + "@solana/transaction-messages" "5.5.1" + "@solana/transactions" "5.5.1" + "@solana/spl-token@0.3.9": version "0.3.9" resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.3.9.tgz#477e703c3638ffb17dd29b82a203c21c3e465851" @@ -4141,6 +4720,72 @@ "@solana/buffer-layout-utils" "^0.2.0" buffer "^6.0.3" +"@solana/subscribable@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/subscribable/-/subscribable-5.5.1.tgz#4321a5b8d1e9de7f94745708213f4b437e6ec70b" + integrity sha512-9K0PsynFq0CsmK1CDi5Y2vUIJpCqkgSS5yfDN0eKPgHqEptLEaia09Kaxc90cSZDZU5mKY/zv1NBmB6Aro9zQQ== + dependencies: + "@solana/errors" "5.5.1" + +"@solana/sysvars@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/sysvars/-/sysvars-5.5.1.tgz#804cbb993343d31e86a23b071a76710e3c236aca" + integrity sha512-k3Quq87Mm+geGUu1GWv6knPk0ALsfY6EKSJGw9xUJDHzY/RkYSBnh0RiOrUhtFm2TDNjOailg8/m0VHmi3reFA== + dependencies: + "@solana/accounts" "5.5.1" + "@solana/codecs" "5.5.1" + "@solana/errors" "5.5.1" + "@solana/rpc-types" "5.5.1" + +"@solana/transaction-confirmation@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/transaction-confirmation/-/transaction-confirmation-5.5.1.tgz#7fd150846dac1cf177223331f0089f94516752ca" + integrity sha512-j4mKlYPHEyu+OD7MBt3jRoX4ScFgkhZC6H65on4Fux6LMScgivPJlwnKoZMnsgxFgWds0pl+BYzSiALDsXlYtw== + dependencies: + "@solana/addresses" "5.5.1" + "@solana/codecs-strings" "5.5.1" + "@solana/errors" "5.5.1" + "@solana/keys" "5.5.1" + "@solana/promises" "5.5.1" + "@solana/rpc" "5.5.1" + "@solana/rpc-subscriptions" "5.5.1" + "@solana/rpc-types" "5.5.1" + "@solana/transaction-messages" "5.5.1" + "@solana/transactions" "5.5.1" + +"@solana/transaction-messages@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/transaction-messages/-/transaction-messages-5.5.1.tgz#1fc965274ddae9fe39bf44cb6005469faf99fc02" + integrity sha512-aXyhMCEaAp3M/4fP0akwBBQkFPr4pfwoC5CLDq999r/FUwDax2RE/h4Ic7h2Xk+JdcUwsb+rLq85Y52hq84XvQ== + dependencies: + "@solana/addresses" "5.5.1" + "@solana/codecs-core" "5.5.1" + "@solana/codecs-data-structures" "5.5.1" + "@solana/codecs-numbers" "5.5.1" + "@solana/errors" "5.5.1" + "@solana/functional" "5.5.1" + "@solana/instructions" "5.5.1" + "@solana/nominal-types" "5.5.1" + "@solana/rpc-types" "5.5.1" + +"@solana/transactions@5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@solana/transactions/-/transactions-5.5.1.tgz#78aee76dccc6486bd6f8be89bb4369b99d9bdba0" + integrity sha512-8hHtDxtqalZ157pnx6p8k10D7J/KY/biLzfgh9R09VNLLY3Fqi7kJvJCr7M2ik3oRll56pxhraAGCC9yIT6eOA== + dependencies: + "@solana/addresses" "5.5.1" + "@solana/codecs-core" "5.5.1" + "@solana/codecs-data-structures" "5.5.1" + "@solana/codecs-numbers" "5.5.1" + "@solana/codecs-strings" "5.5.1" + "@solana/errors" "5.5.1" + "@solana/functional" "5.5.1" + "@solana/instructions" "5.5.1" + "@solana/keys" "5.5.1" + "@solana/nominal-types" "5.5.1" + "@solana/rpc-types" "5.5.1" + "@solana/transaction-messages" "5.5.1" + "@solana/web3.js@^1.32.0", "@solana/web3.js@^1.68.0", "@solana/web3.js@^1.95.8", "@solana/web3.js@^1.98.0": version "1.98.2" resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.98.2.tgz#45167a5cfb64436944bf4dc1e8be8482bd6d4c14" @@ -4162,6 +4807,27 @@ rpc-websockets "^9.0.2" superstruct "^2.0.2" +"@solana/web3.js@^1.98.1": + version "1.98.4" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.98.4.tgz#df51d78be9d865181ec5138b4e699d48e6895bbe" + integrity sha512-vv9lfnvjUsRiq//+j5pBdXig0IQdtzA0BRZ3bXEP4KaIyF1CcaydWqgyzQgfZMNIsWNWmG+AUHwPy4AHOD6gpw== + dependencies: + "@babel/runtime" "^7.25.0" + "@noble/curves" "^1.4.2" + "@noble/hashes" "^1.4.0" + "@solana/buffer-layout" "^4.0.1" + "@solana/codecs-numbers" "^2.1.0" + agentkeepalive "^4.5.0" + bn.js "^5.2.1" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.3" + fast-stable-stringify "^1.0.0" + jayson "^4.1.1" + node-fetch "^2.7.0" + rpc-websockets "^9.0.2" + superstruct "^2.0.2" + "@standard-schema/spec@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@standard-schema/spec/-/spec-1.0.0.tgz#f193b73dc316c4170f2e82a881da0f550d551b9c" @@ -4946,6 +5612,11 @@ resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.6.tgz#e6e60dad29c2c8c206c026e6dd8d6d1bdda850b8" integrity sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ== +"@types/trusted-types@^2.0.2": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" + integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== + "@types/use-sync-external-store@^0.0.6": version "0.0.6" resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz#60be8d21baab8c305132eb9cb912ed497852aadc" @@ -5266,13 +5937,240 @@ dependencies: "@wallet-standard/base" "^1.1.0" -"@wallet-standard/wallet@^1.1.0": +"@wallet-standard/wallet@1.1.0", "@wallet-standard/wallet@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@wallet-standard/wallet/-/wallet-1.1.0.tgz#a1e46a3f1b2d06a0206058562169b1f0e9652d0f" integrity sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg== dependencies: "@wallet-standard/base" "^1.1.0" +"@walletconnect/core@2.23.7": + version "2.23.7" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.23.7.tgz#31add4d3774e72e3b72a983e96f6fc556bc05707" + integrity sha512-yTyymn9mFaDZkUfLfZ3E9VyaSDPeHAXlrPxQRmNx2zFsEt/25GmTU2A848aomimLxZnAG2jNLhxbJ8I0gyNV+w== + dependencies: + "@walletconnect/heartbeat" "1.2.2" + "@walletconnect/jsonrpc-provider" "1.0.14" + "@walletconnect/jsonrpc-types" "1.0.4" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/jsonrpc-ws-connection" "1.0.16" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/logger" "3.0.2" + "@walletconnect/relay-api" "1.0.11" + "@walletconnect/relay-auth" "1.1.0" + "@walletconnect/safe-json" "1.0.2" + "@walletconnect/time" "1.0.2" + "@walletconnect/types" "2.23.7" + "@walletconnect/utils" "2.23.7" + "@walletconnect/window-getters" "1.0.1" + es-toolkit "1.44.0" + events "3.3.0" + uint8arrays "3.1.1" + +"@walletconnect/environment@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/environment/-/environment-1.0.1.tgz#1d7f82f0009ab821a2ba5ad5e5a7b8ae3b214cd7" + integrity sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg== + dependencies: + tslib "1.14.1" + +"@walletconnect/events@1.0.1", "@walletconnect/events@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/events/-/events-1.0.1.tgz#2b5f9c7202019e229d7ccae1369a9e86bda7816c" + integrity sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ== + dependencies: + keyvaluestorage-interface "^1.0.0" + tslib "1.14.1" + +"@walletconnect/heartbeat@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@walletconnect/heartbeat/-/heartbeat-1.2.2.tgz#e8dc5179db7769950c6f9cf59b23516d9b95227d" + integrity sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw== + dependencies: + "@walletconnect/events" "^1.0.1" + "@walletconnect/time" "^1.0.2" + events "^3.3.0" + +"@walletconnect/jsonrpc-http-connection@1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.8.tgz#2f4c3948f074960a3edd07909560f3be13e2c7ae" + integrity sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.6" + "@walletconnect/safe-json" "^1.0.1" + cross-fetch "^3.1.4" + events "^3.3.0" + +"@walletconnect/jsonrpc-provider@1.0.14": + version "1.0.14" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.14.tgz#696f3e3b6d728b361f2e8b853cfc6afbdf2e4e3e" + integrity sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.8" + "@walletconnect/safe-json" "^1.0.2" + events "^3.3.0" + +"@walletconnect/jsonrpc-types@1.0.4", "@walletconnect/jsonrpc-types@^1.0.2", "@walletconnect/jsonrpc-types@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.4.tgz#ce1a667d79eadf2a2d9d002c152ceb68739c230c" + integrity sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ== + dependencies: + events "^3.3.0" + keyvaluestorage-interface "^1.0.0" + +"@walletconnect/jsonrpc-utils@1.0.8", "@walletconnect/jsonrpc-utils@^1.0.6", "@walletconnect/jsonrpc-utils@^1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz#82d0cc6a5d6ff0ecc277cb35f71402c91ad48d72" + integrity sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw== + dependencies: + "@walletconnect/environment" "^1.0.1" + "@walletconnect/jsonrpc-types" "^1.0.3" + tslib "1.14.1" + +"@walletconnect/jsonrpc-ws-connection@1.0.16": + version "1.0.16" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.16.tgz#666bb13fbf32a2d4f7912d5b4d0bdef26a1d057b" + integrity sha512-G81JmsMqh5nJheE1mPst1W0WfVv0SG3N7JggwLLGnI7iuDZJq8cRJvQwLGKHn5H1WTW7DEPCo00zz5w62AbL3Q== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.6" + "@walletconnect/safe-json" "^1.0.2" + events "^3.3.0" + ws "^7.5.1" + +"@walletconnect/keyvaluestorage@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz#dd2caddabfbaf80f6b8993a0704d8b83115a1842" + integrity sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA== + dependencies: + "@walletconnect/safe-json" "^1.0.1" + idb-keyval "^6.2.1" + unstorage "^1.9.0" + +"@walletconnect/logger@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/logger/-/logger-3.0.2.tgz#dab84d27ff32687f60c7bbe4d2e930c7460ddf2b" + integrity sha512-7wR3wAwJTOmX4gbcUZcFMov8fjftY05+5cO/d4cpDD8wDzJ+cIlKdYOXaXfxHLSYeDazMXIsxMYjHYVDfkx+nA== + dependencies: + "@walletconnect/safe-json" "^1.0.2" + pino "10.0.0" + +"@walletconnect/relay-api@1.0.11": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.11.tgz#80ab7ef2e83c6c173be1a59756f95e515fb63224" + integrity sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q== + dependencies: + "@walletconnect/jsonrpc-types" "^1.0.2" + +"@walletconnect/relay-auth@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-auth/-/relay-auth-1.1.0.tgz#c3c5f54abd44a5138ea7d4fe77970597ba66c077" + integrity sha512-qFw+a9uRz26jRCDgL7Q5TA9qYIgcNY8jpJzI1zAWNZ8i7mQjaijRnWFKsCHAU9CyGjvt6RKrRXyFtFOpWTVmCQ== + dependencies: + "@noble/curves" "1.8.0" + "@noble/hashes" "1.7.0" + "@walletconnect/safe-json" "^1.0.1" + "@walletconnect/time" "^1.0.2" + uint8arrays "^3.0.0" + +"@walletconnect/safe-json@1.0.2", "@walletconnect/safe-json@^1.0.1", "@walletconnect/safe-json@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.2.tgz#7237e5ca48046e4476154e503c6d3c914126fa77" + integrity sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA== + dependencies: + tslib "1.14.1" + +"@walletconnect/sign-client@2.23.7": + version "2.23.7" + resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.23.7.tgz#1f9035c9909547bd5210805424d44d723bd1a117" + integrity sha512-SX61lzb1bTl/LijlcHQttnoHPBzzoY5mW9ArR6qhFtDNDTS7yr2rcH7rCngxHlYeb4rAYcWLHgbiGSrdKxl/mg== + dependencies: + "@walletconnect/core" "2.23.7" + "@walletconnect/events" "1.0.1" + "@walletconnect/heartbeat" "1.2.2" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/logger" "3.0.2" + "@walletconnect/time" "1.0.2" + "@walletconnect/types" "2.23.7" + "@walletconnect/utils" "2.23.7" + events "3.3.0" + +"@walletconnect/time@1.0.2", "@walletconnect/time@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/time/-/time-1.0.2.tgz#6c5888b835750ecb4299d28eecc5e72c6d336523" + integrity sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g== + dependencies: + tslib "1.14.1" + +"@walletconnect/types@2.23.7": + version "2.23.7" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.23.7.tgz#9662c30289ad20e4f27ba1c5ddbd71cf7bda7882" + integrity sha512-6PAKK+iR2IntmlkCFLMAHjYeIaerCJJYRDmdRimhon0u+aNmQT+HyGM6zxDAth0rdpBD7qEvKP5IXZTE7KFUhw== + dependencies: + "@walletconnect/events" "1.0.1" + "@walletconnect/heartbeat" "1.2.2" + "@walletconnect/jsonrpc-types" "1.0.4" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/logger" "3.0.2" + events "3.3.0" + +"@walletconnect/universal-provider@2.23.7": + version "2.23.7" + resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.23.7.tgz#2115edbc87bc4632a5d0c40c5722038b056432ad" + integrity sha512-6UicU/Mhr/1bh7MNoajypz7BhigORbHpP1LFTf8FYLQGDqzmqHMqmMH2GDAImtaY2sFTi2jBvc22tLl8VMze/A== + dependencies: + "@walletconnect/events" "1.0.1" + "@walletconnect/jsonrpc-http-connection" "1.0.8" + "@walletconnect/jsonrpc-provider" "1.0.14" + "@walletconnect/jsonrpc-types" "1.0.4" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/logger" "3.0.2" + "@walletconnect/sign-client" "2.23.7" + "@walletconnect/types" "2.23.7" + "@walletconnect/utils" "2.23.7" + es-toolkit "1.44.0" + events "3.3.0" + +"@walletconnect/utils@2.23.7": + version "2.23.7" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.23.7.tgz#4e3d8431b1176f29844a1a6ca4b270188fee02ca" + integrity sha512-3p38gNrkVcIiQixVrlsWSa66Gjs5PqHOug2TxDgYUVBW5NcKjwQA08GkC6CKBQUfr5iaCtbfy6uZJW1LKSIvWQ== + dependencies: + "@msgpack/msgpack" "3.1.3" + "@noble/ciphers" "1.3.0" + "@noble/curves" "1.9.7" + "@noble/hashes" "1.8.0" + "@scure/base" "1.2.6" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/logger" "3.0.2" + "@walletconnect/relay-api" "1.0.11" + "@walletconnect/relay-auth" "1.1.0" + "@walletconnect/safe-json" "1.0.2" + "@walletconnect/time" "1.0.2" + "@walletconnect/types" "2.23.7" + "@walletconnect/window-getters" "1.0.1" + "@walletconnect/window-metadata" "1.0.1" + blakejs "1.2.1" + detect-browser "5.3.0" + ox "0.9.3" + uint8arrays "3.1.1" + +"@walletconnect/window-getters@1.0.1", "@walletconnect/window-getters@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.1.tgz#f36d1c72558a7f6b87ecc4451fc8bd44f63cbbdc" + integrity sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q== + dependencies: + tslib "1.14.1" + +"@walletconnect/window-metadata@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz#2124f75447b7e989e4e4e1581d55d25bc75f7be5" + integrity sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA== + dependencies: + "@walletconnect/window-getters" "^1.0.1" + tslib "1.14.1" + "@whatwg-node/disposablestack@^0.0.6": version "0.0.6" resolved "https://registry.yarnpkg.com/@whatwg-node/disposablestack/-/disposablestack-0.0.6.tgz#2064a1425ea66194def6df0c7a1851b6939c82bb" @@ -5409,6 +6307,11 @@ resolved "https://registry.yarnpkg.com/@zip.js/zip.js/-/zip.js-2.7.61.tgz#417ba7c6afe2f704d7b5e4f93d14488bc20ab3a6" integrity sha512-+tZvY10nkW0pJoU88XFWLBd2O9PJPvEnDhSY/jQHfIroN5W5qGfPgFHKC4lkx0+9Vw/0IAkNHf1XBVInBkM9Vw== +abitype@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.6.tgz#76410903e1d88e34f1362746e2d407513c38565b" + integrity sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A== + abitype@1.0.8, abitype@^1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.8.tgz#3554f28b2e9d6e9f35eb59878193eabd1b9f46ba" @@ -5419,6 +6322,11 @@ abitype@1.1.0: resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.1.0.tgz#510c5b3f92901877977af5e864841f443bf55406" integrity sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A== +abitype@1.2.3, abitype@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.2.3.tgz#bec3e09dea97d99ef6c719140bee663a329ad1f4" + integrity sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg== + abitype@^1.0.9: version "1.1.1" resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.1.1.tgz#b50ed400f8bfca5452eb4033445c309d3e1117c8" @@ -5513,7 +6421,7 @@ any-promise@^1.0.0: resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== -anymatch@~3.1.2: +anymatch@^3.1.3, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== @@ -5679,6 +6587,11 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== +atomic-sleep@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" + integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== + auto-bind@~4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-4.0.0.tgz#e3589fc6c2da8f7ca43ba9f84fa52a744fc997fb" @@ -5691,6 +6604,22 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" +axios-retry@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/axios-retry/-/axios-retry-4.5.0.tgz#441fdc32cedf63d6abd5de5d53db3667afd4c39b" + integrity sha512-aR99oXhpEDGo0UuAlYcn2iGRds30k366Zfa05XWScR9QaQD4JYiP3/1Qt1u7YlefUOK+cn0CcwoL1oefavQUlQ== + dependencies: + is-retry-allowed "^2.2.0" + +axios@^1.12.2: + version "1.13.6" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.6.tgz#c3f92da917dc209a15dd29936d20d5089b6b6c98" + integrity sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ== + dependencies: + follow-redirects "^1.15.11" + form-data "^4.0.5" + proxy-from-env "^1.1.0" + axios@^1.4.0: version "1.9.0" resolved "https://registry.yarnpkg.com/axios/-/axios-1.9.0.tgz#25534e3b72b54540077d33046f77e3b8d7081901" @@ -5791,7 +6720,7 @@ bech32@1.1.4: resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== -big.js@^6.2.1, big.js@^6.2.2: +big.js@6.2.2, big.js@^6.2.1, big.js@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.2.tgz#be3bb9ac834558b53b099deef2a1d06ac6368e1a" integrity sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ== @@ -5834,6 +6763,11 @@ bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" +blakejs@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + bn.js@^4.11.9: version "4.12.2" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.2.tgz#3d8fed6796c24e177737f7cc5172ee04ef39ec99" @@ -5895,6 +6829,13 @@ browserslist@^4.24.0: node-releases "^2.0.19" update-browserslist-db "^1.1.3" +bs58@6.0.0, bs58@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-6.0.0.tgz#a2cda0130558535dd281a2f8697df79caaf425d8" + integrity sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw== + dependencies: + base-x "^5.0.0" + bs58@^4.0.0, bs58@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" @@ -5902,13 +6843,6 @@ bs58@^4.0.0, bs58@^4.0.1: dependencies: base-x "^3.0.2" -bs58@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-6.0.0.tgz#a2cda0130558535dd281a2f8697df79caaf425d8" - integrity sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw== - dependencies: - base-x "^5.0.0" - bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -6060,6 +6994,11 @@ chai@^5.2.0: loupe "^3.1.0" pathval "^2.0.0" +chalk@5.6.2, chalk@^5.6.2: + version "5.6.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.6.2.tgz#b1238b6e23ea337af71c7f8a295db5af0c158aea" + integrity sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA== + chalk@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" @@ -6081,11 +7020,6 @@ chalk@^5.3.0, chalk@^5.4.1: resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== -chalk@^5.6.2: - version "5.6.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.6.2.tgz#b1238b6e23ea337af71c7f8a295db5af0c158aea" - integrity sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA== - change-case-all@1.0.15: version "1.0.15" resolved "https://registry.yarnpkg.com/change-case-all/-/change-case-all-1.0.15.tgz#de29393167fc101d646cd76b0ef23e27d09756ad" @@ -6162,6 +7096,13 @@ chokidar@^4.0.3: dependencies: readdirp "^4.0.1" +chokidar@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-5.0.0.tgz#949c126a9238a80792be9a0265934f098af369a5" + integrity sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw== + dependencies: + readdirp "^5.0.0" + chromatic@^13.3.4: version "13.3.5" resolved "https://registry.yarnpkg.com/chromatic/-/chromatic-13.3.5.tgz#425d9eac714de2063962172d11914d8ec3feb64d" @@ -6244,6 +7185,11 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== +clsx@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== + clsx@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" @@ -6320,6 +7266,11 @@ comlink@^4.4.2: resolved "https://registry.yarnpkg.com/comlink/-/comlink-4.4.2.tgz#cbbcd82742fbebc06489c28a183eedc5c60a2bca" integrity sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g== +commander@14.0.2, commander@^14.0.2: + version "14.0.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-14.0.2.tgz#b71fd37fe4069e4c3c7c13925252ada4eba14e8e" + integrity sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ== + commander@^12.1.0: version "12.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" @@ -6330,11 +7281,6 @@ commander@^13.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-13.1.0.tgz#776167db68c78f38dcce1f9b8d7b8b9a488abf46" integrity sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw== -commander@^14.0.2: - version "14.0.2" - resolved "https://registry.yarnpkg.com/commander/-/commander-14.0.2.tgz#b71fd37fe4069e4c3c7c13925252ada4eba14e8e" - integrity sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ== - commander@^2.20.0, commander@^2.20.3: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -6404,6 +7350,11 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== +cookie-es@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cookie-es/-/cookie-es-1.2.2.tgz#18ceef9eb513cac1cb6c14bcbf8bdb2679b34821" + integrity sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg== + cookie-es@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/cookie-es/-/cookie-es-2.0.0.tgz#ca6163d7ef8686ea6bbdd551f1de575569c1ed69" @@ -6442,7 +7393,7 @@ cosmiconfig@^8.1.0, cosmiconfig@^8.1.3: parse-json "^5.2.0" path-type "^4.0.0" -cross-fetch@^3.1.5: +cross-fetch@^3.1.4, cross-fetch@^3.1.5: version "3.2.0" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.2.0.tgz#34e9192f53bc757d6614304d9e5e6fb4edb782e3" integrity sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q== @@ -6465,6 +7416,13 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.6: shebang-command "^2.0.0" which "^2.0.1" +crossws@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/crossws/-/crossws-0.3.5.tgz#daad331d44148ea6500098bc858869f3a5ab81a6" + integrity sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA== + dependencies: + uncrypto "^0.1.3" + crypt@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" @@ -6629,6 +7587,11 @@ date-fns@^4.1.0: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-4.1.0.tgz#64b3d83fff5aa80438f5b1a633c2e83b8a1c2d14" integrity sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg== +dayjs@1.11.13: + version "1.11.13" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" + integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== + debounce@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" @@ -6721,6 +7684,11 @@ define-properties@^1.1.3, define-properties@^1.2.1: has-property-descriptors "^1.0.0" object-keys "^1.1.1" +defu@^6.1.4: + version "6.1.4" + resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.4.tgz#4e0c9cf9ff68fe5f3d7f2765cc1a012dfdcb0479" + integrity sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== + delay@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" @@ -6741,6 +7709,16 @@ dequal@^2.0.3: resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== +destr@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/destr/-/destr-2.0.5.tgz#7d112ff1b925fb8d2079fac5bdb4a90973b51fdb" + integrity sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA== + +detect-browser@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca" + integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== + detect-indent@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" @@ -6761,6 +7739,11 @@ diff@^8.0.2: resolved "https://registry.yarnpkg.com/diff/-/diff-8.0.2.tgz#712156a6dd288e66ebb986864e190c2fc9eddfae" integrity sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg== +dijkstrajs@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz#4c8dbdea1f0f6478bff94d9c49c784d623e4fc23" + integrity sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -6912,6 +7895,11 @@ empathic@^2.0.0: resolved "https://registry.yarnpkg.com/empathic/-/empathic-2.0.0.tgz#71d3c2b94fad49532ef98a6c34be0386659f6131" integrity sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA== +encode-utf8@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" + integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== + entities@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" @@ -7058,6 +8046,11 @@ es-to-primitive@^1.3.0: is-date-object "^1.0.5" is-symbol "^1.0.4" +es-toolkit@1.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/es-toolkit/-/es-toolkit-1.44.0.tgz#b363b436b6115c3cc9cc21954c1e08ecdaa51c8c" + integrity sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg== + es-toolkit@^1.39.3: version "1.39.10" resolved "https://registry.yarnpkg.com/es-toolkit/-/es-toolkit-1.39.10.tgz#513407af73e79f9940e7ec7650f2e6dceeaf1d81" @@ -7360,7 +8353,7 @@ eventemitter3@^4.0.0, eventemitter3@^4.0.7: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.3.0: +events@3.3.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -7604,6 +8597,11 @@ follow-redirects@^1.0.0, follow-redirects@^1.15.6: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== +follow-redirects@^1.15.11: + version "1.15.11" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== + for-each@^0.3.3, for-each@^0.3.5: version "0.3.5" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47" @@ -7629,6 +8627,17 @@ form-data@^4.0.0: es-set-tostringtag "^2.1.0" mime-types "^2.1.12" +form-data@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" + integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" + mime-types "^2.1.12" + formdata-polyfill@^4.0.10: version "4.0.10" resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" @@ -7926,6 +8935,21 @@ graphql-ws@^6.0.3: resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.11.0.tgz#96d17f66370678027fdf59b2d4c20b4efaa8a633" integrity sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw== +h3@^1.15.10: + version "1.15.10" + resolved "https://registry.yarnpkg.com/h3/-/h3-1.15.10.tgz#defe650df7b70cf585d2020c4146fb580cfb0d42" + integrity sha512-YzJeWSkDZxAhvmp8dexjRK5hxziRO7I9m0N53WhvYL5NiWfkUkzssVzY9jvGu0HBoLFW6+duYmNSn6MaZBCCtg== + dependencies: + cookie-es "^1.2.2" + crossws "^0.3.5" + defu "^6.1.4" + destr "^2.0.5" + iron-webcrypto "^1.2.1" + node-mock-http "^1.0.4" + radix3 "^1.1.2" + ufo "^1.6.3" + uncrypto "^0.1.3" + has-bigints@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.1.0.tgz#28607e965ac967e03cd2a2c70a2636a1edad49fe" @@ -8139,6 +9163,16 @@ iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +idb-keyval@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-6.2.1.tgz#94516d625346d16f56f3b33855da11bfded2db33" + integrity sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg== + +idb-keyval@^6.2.1: + version "6.2.2" + resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-6.2.2.tgz#b0171b5f73944854a3291a5cdba8e12768c4854a" + integrity sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg== + ieee754@^1.1.13, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" @@ -8259,6 +9293,11 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" +iron-webcrypto@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz#aa60ff2aa10550630f4c0b11fd2442becdb35a6f" + integrity sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg== + is-absolute@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" @@ -8482,6 +9521,11 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" +is-retry-allowed@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz#88f34cbd236e043e71b6932d09b0c65fb7b4d71d" + integrity sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg== + is-set@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" @@ -8702,6 +9746,11 @@ jose@^5.0.0: resolved "https://registry.yarnpkg.com/jose/-/jose-5.10.0.tgz#c37346a099d6467c401351a9a0c2161e0f52c4be" integrity sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg== +jose@^6.0.8: + version "6.2.2" + resolved "https://registry.yarnpkg.com/jose/-/jose-6.2.2.tgz#d6b5279b89b3e88d531c202e3fbe351f39a44aac" + integrity sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ== + joycon@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" @@ -8814,6 +9863,11 @@ keyv@^4.5.3: dependencies: json-buffer "3.0.1" +keyvaluestorage-interface@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" + integrity sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g== + klaw-sync@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" @@ -8860,6 +9914,40 @@ listr2@^4.0.5: through "^2.3.8" wrap-ansi "^7.0.0" +lit-element@^4.2.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-4.2.2.tgz#f74fcbfbea945eae5614ece22a674fa52ca3365b" + integrity sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w== + dependencies: + "@lit-labs/ssr-dom-shim" "^1.5.0" + "@lit/reactive-element" "^2.1.0" + lit-html "^3.3.0" + +lit-html@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-3.3.2.tgz#4db11fdbf98fc8a0c5eabd9b1e7d088d3bb201a2" + integrity sha512-Qy9hU88zcmaxBXcc10ZpdK7cOLXvXpRoBxERdtqV9QOrfpMZZ6pSYP91LhpPtap3sFMUiL7Tw2RImbe0Al2/kw== + dependencies: + "@types/trusted-types" "^2.0.2" + +lit@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lit/-/lit-3.3.0.tgz#b3037ea94676fb89c3dde9951914efefd0441f17" + integrity sha512-DGVsqsOIHBww2DqnuZzW7QsuCdahp50ojuDaBPC7jUDRpYoH0z7kHBBYZewRzer75FwtrkmkKk7iOAwSaWdBmw== + dependencies: + "@lit/reactive-element" "^2.1.0" + lit-element "^4.2.0" + lit-html "^3.3.0" + +lit@^3: + version "3.3.2" + resolved "https://registry.yarnpkg.com/lit/-/lit-3.3.2.tgz#d9230ebbf237bfd3d2091bc0b56c576a470ac4d7" + integrity sha512-NF9zbsP79l4ao2SNrH3NkfmFgN/hBYSQo90saIVI1o5GpjAdCPVstVzO1MrLOakHoEhYkrtRjPK6Ob521aoYWQ== + dependencies: + "@lit/reactive-element" "^2.1.0" + lit-element "^4.2.0" + lit-html "^3.3.0" + load-tsconfig@^0.2.3: version "0.2.5" resolved "https://registry.yarnpkg.com/load-tsconfig/-/load-tsconfig-0.2.5.tgz#453b8cd8961bfb912dea77eb6c168fe8cca3d3a1" @@ -8966,6 +10054,11 @@ lru-cache@^11.1.0, lru-cache@^11.2.2: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.2.4.tgz#ecb523ebb0e6f4d837c807ad1abaea8e0619770d" integrity sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg== +lru-cache@^11.2.7: + version "11.2.7" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.2.7.tgz#9127402617f34cd6767b96daee98c28e74458d35" + integrity sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -9149,6 +10242,11 @@ ms@^2.0.0, ms@^2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +multiformats@^9.4.2: + version "9.9.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== + mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -9200,6 +10298,11 @@ node-domexception@^1.0.0: resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== +node-fetch-native@^1.6.7: + version "1.6.7" + resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.7.tgz#9d09ca63066cc48423211ed4caf5d70075d76a71" + integrity sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q== + node-fetch@^2.6.1, node-fetch@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" @@ -9234,6 +10337,11 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== +node-mock-http@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/node-mock-http/-/node-mock-http-1.0.4.tgz#21f2ab4ce2fe4fbe8a660d7c5195a1db85e042a4" + integrity sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ== + node-releases@^2.0.19: version "2.0.19" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" @@ -9354,6 +10462,20 @@ object.values@^1.1.6, object.values@^1.2.1: define-properties "^1.2.1" es-object-atoms "^1.0.0" +ofetch@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/ofetch/-/ofetch-1.5.1.tgz#5c43cc56e03398b273014957060344254505c5c7" + integrity sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA== + dependencies: + destr "^2.0.5" + node-fetch-native "^1.6.7" + ufo "^1.6.1" + +on-exit-leak-free@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8" + integrity sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA== + once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -9453,6 +10575,20 @@ own-keys@^1.0.1: object-keys "^1.1.1" safe-push-apply "^1.0.0" +ox@0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/ox/-/ox-0.14.7.tgz#efe6770f7a138f823fb2df26001b679c2565b0a4" + integrity sha512-zSQ/cfBdolj7U4++NAvH7sI+VG0T3pEohITCgcQj8KlawvTDY4vGVhDT64Atsm0d6adWfIYHDpu88iUBMMp+AQ== + dependencies: + "@adraffy/ens-normalize" "^1.11.0" + "@noble/ciphers" "^1.3.0" + "@noble/curves" "1.9.1" + "@noble/hashes" "^1.8.0" + "@scure/bip32" "^1.7.0" + "@scure/bip39" "^1.6.0" + abitype "^1.2.3" + eventemitter3 "5.0.1" + ox@0.6.9: version "0.6.9" resolved "https://registry.yarnpkg.com/ox/-/ox-0.6.9.tgz#da1ee04fa10de30c8d04c15bfb80fe58b1f554bd" @@ -9466,6 +10602,20 @@ ox@0.6.9: abitype "^1.0.6" eventemitter3 "5.0.1" +ox@0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/ox/-/ox-0.9.3.tgz#92cc1008dcd913e919364fd4175c860b3eeb18db" + integrity sha512-KzyJP+fPV4uhuuqrTZyok4DC7vFzi7HLUFiUNEmpbyh59htKWkOC98IONC1zgXJPbHAhQgqs6B0Z6StCGhmQvg== + dependencies: + "@adraffy/ens-normalize" "^1.11.0" + "@noble/ciphers" "^1.3.0" + "@noble/curves" "1.9.1" + "@noble/hashes" "^1.8.0" + "@scure/bip32" "^1.7.0" + "@scure/bip39" "^1.6.0" + abitype "^1.0.9" + eventemitter3 "5.0.1" + ox@0.9.6: version "0.9.6" resolved "https://registry.yarnpkg.com/ox/-/ox-0.9.6.tgz#5cf02523b6db364c10ee7f293ff1e664e0e1eab7" @@ -9731,6 +10881,35 @@ picomatch@^4.0.3: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== +pino-abstract-transport@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz#de241578406ac7b8a33ce0d77ae6e8a0b3b68a60" + integrity sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw== + dependencies: + split2 "^4.0.0" + +pino-std-serializers@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-7.1.0.tgz#a7b0cd65225f29e92540e7853bd73b07479893fc" + integrity sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw== + +pino@10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/pino/-/pino-10.0.0.tgz#3d1a8abc7a700142edebf02a7b291834da199fbe" + integrity sha512-eI9pKwWEix40kfvSzqEP6ldqOoBIN7dwD/o91TY5z8vQI12sAffpR/pOqAD1IVVwIVHDpHjkq0joBPdJD0rafA== + dependencies: + atomic-sleep "^1.0.0" + on-exit-leak-free "^2.1.0" + pino-abstract-transport "^2.0.0" + pino-std-serializers "^7.0.0" + process-warning "^5.0.0" + quick-format-unescaped "^4.0.3" + real-require "^0.2.0" + safe-stable-stringify "^2.3.1" + slow-redact "^0.3.0" + sonic-boom "^4.0.1" + thread-stream "^3.0.0" + pirates@^4.0.1: version "4.0.7" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.7.tgz#643b4a18c4257c8a65104b73f3049ce9a0a15e22" @@ -9745,6 +10924,11 @@ pkg-types@^1.3.0: mlly "^1.7.4" pathe "^2.0.1" +pngjs@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" + integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== + polkadot-api@1.23.3: version "1.23.3" resolved "https://registry.yarnpkg.com/polkadot-api/-/polkadot-api-1.23.3.tgz#8d70dc4afd8e00c736a5657342db18be489984e6" @@ -9816,6 +11000,11 @@ postcss@^8.5.6: picocolors "^1.1.1" source-map-js "^1.2.1" +preact@10.24.2: + version "10.24.2" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.24.2.tgz#42179771d3b06e7adb884e3f8127ddd3d99b78f6" + integrity sha512-1cSoF0aCC8uaARATfrlz4VCBqE8LwZwRfLgkxJOQwAlQt6ayTmi0D9OF7nXid1POI5SZidFuG9CnlXbDfLqY/Q== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -9854,6 +11043,11 @@ pretty-ms@^9.2.0: dependencies: parse-ms "^4.0.0" +process-warning@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-5.0.0.tgz#566e0bf79d1dff30a72d8bbbe9e8ecefe8d378d7" + integrity sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA== + process@^0.11.1: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -9875,6 +11069,11 @@ prop-types@^15.8.1: object-assign "^4.1.1" react-is "^16.13.1" +proxy-compare@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-3.0.1.tgz#3262cff3a25a6dedeaa299f6cf2369d6f7588a94" + integrity sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q== + proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" @@ -9890,6 +11089,16 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== +qrcode@1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170" + integrity sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg== + dependencies: + dijkstrajs "^1.0.1" + encode-utf8 "^1.0.3" + pngjs "^5.0.0" + yargs "^15.3.1" + qs@^6.12.3, qs@^6.4.0: version "6.14.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" @@ -9902,6 +11111,16 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +quick-format-unescaped@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" + integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== + +radix3@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/radix3/-/radix3-1.1.2.tgz#fd27d2af3896c6bf4bcdfab6427c69c2afc69ec0" + integrity sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA== + react-docgen-typescript@^2.2.2: version "2.4.0" resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-2.4.0.tgz#033428b4a6a639d050ac8baf2a5195c596521713" @@ -10100,6 +11319,11 @@ readdirp@^4.0.1: resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d" integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== +readdirp@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-5.0.0.tgz#fbf1f71a727891d685bb1786f9ba74084f6e2f91" + integrity sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ== + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -10107,6 +11331,11 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +real-require@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" + integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== + recast@^0.23.11, recast@^0.23.5: version "0.23.11" resolved "https://registry.yarnpkg.com/recast/-/recast-0.23.11.tgz#8885570bb28cf773ba1dc600da7f502f7883f73f" @@ -10484,6 +11713,11 @@ safe-regex-test@^1.1.0: es-errors "^1.3.0" is-regex "^1.2.1" +safe-stable-stringify@^2.3.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" + integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== + "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -10519,16 +11753,16 @@ secure-compare@3.0.1: resolved "https://registry.yarnpkg.com/secure-compare/-/secure-compare-3.0.1.tgz#f1a0329b308b221fae37b9974f3d578d0ca999e3" integrity sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw== +semver@7.7.2, semver@^7.3.5, semver@^7.5.3, semver@^7.6.0: + version "7.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== + semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.5, semver@^7.5.3, semver@^7.6.0: - version "7.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" - integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== - semver@^7.7.3: version "7.7.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" @@ -10699,6 +11933,11 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" +slow-redact@^0.3.0: + version "0.3.2" + resolved "https://registry.yarnpkg.com/slow-redact/-/slow-redact-0.3.2.tgz#d06e25195aa5c492d32631c53d9ae86043b8b0e2" + integrity sha512-MseHyi2+E/hBRqdOi5COy6wZ7j7DxXRz9NkseavNYSvvWC06D8a5cidVZX3tcG5eCW3NIyVU4zT63hw0Q486jw== + smoldot@2.0.40: version "2.0.40" resolved "https://registry.yarnpkg.com/smoldot/-/smoldot-2.0.40.tgz#c898b303d6b2bd512c3b7cbad1799fecc9aa7fb5" @@ -10714,6 +11953,13 @@ snake-case@^3.0.4: dot-case "^3.0.4" tslib "^2.0.3" +sonic-boom@^4.0.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.2.1.tgz#28598250df4899c0ac572d7e2f0460690ba6a030" + integrity sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q== + dependencies: + atomic-sleep "^1.0.0" + sonner@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/sonner/-/sonner-2.0.3.tgz#de7cdbc4b6a25ac3f0a9e0aed3748e0b3d6e092e" @@ -10792,6 +12038,11 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz#6d6e980c9df2b6fc905343a3b2d702a6239536c3" integrity sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg== +split2@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + sponge-case@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/sponge-case/-/sponge-case-1.0.1.tgz#260833b86453883d974f84854cdb63aecc5aef4c" @@ -11162,6 +12413,13 @@ thingies@^1.20.0: resolved "https://registry.yarnpkg.com/thingies/-/thingies-1.21.0.tgz#e80fbe58fd6fdaaab8fad9b67bd0a5c943c445c1" integrity sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g== +thread-stream@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-3.1.0.tgz#4b2ef252a7c215064507d4ef70c05a5e2d34c4f1" + integrity sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A== + dependencies: + real-require "^0.2.0" + throttle-debounce@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb" @@ -11335,6 +12593,11 @@ tsconfig-paths@^4.2.0: minimist "^1.2.6" strip-bom "^3.0.0" +tslib@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.3, tslib@^2.8.0, tslib@^2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" @@ -11519,6 +12782,18 @@ ufo@^1.5.4: resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.6.1.tgz#ac2db1d54614d1b22c1d603e3aef44a85d8f146b" integrity sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA== +ufo@^1.6.1, ufo@^1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.6.3.tgz#799666e4e88c122a9659805e30b9dc071c3aed4f" + integrity sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q== + +uint8arrays@3.1.1, uint8arrays@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" + integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== + dependencies: + multiformats "^9.4.2" + unbox-primitive@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2" @@ -11534,6 +12809,16 @@ unc-path-regex@^0.1.2: resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" integrity sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg== +uncrypto@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/uncrypto/-/uncrypto-0.1.3.tgz#e1288d609226f2d02d8d69ee861fa20d8348ef2b" + integrity sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q== + +undici-types@^7.19.2: + version "7.24.6" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.24.6.tgz#61275b485d7fd4e9d269c7cf04ec2873c9cc0f91" + integrity sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg== + undici-types@~6.21.0: version "6.21.0" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" @@ -11597,6 +12882,20 @@ unplugin@^2.3.5: picomatch "^4.0.3" webpack-virtual-modules "^0.6.2" +unstorage@^1.9.0: + version "1.17.5" + resolved "https://registry.yarnpkg.com/unstorage/-/unstorage-1.17.5.tgz#e76c82fdc1d2c04cb0e2c0a1de08aa08b2253f51" + integrity sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg== + dependencies: + anymatch "^3.1.3" + chokidar "^5.0.0" + destr "^2.0.5" + h3 "^1.15.10" + lru-cache "^11.2.7" + node-fetch-native "^1.6.7" + ofetch "^1.5.1" + ufo "^1.6.3" + update-browserslist-db@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" @@ -11727,6 +13026,13 @@ validate-npm-package-license@^3.0.4: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +valtio@2.1.7: + version "2.1.7" + resolved "https://registry.yarnpkg.com/valtio/-/valtio-2.1.7.tgz#203396dd7be778d00dca03fd629ded1254178eeb" + integrity sha512-DwJhCDpujuQuKdJ2H84VbTjEJJteaSmqsuUltsfbfdbotVfNeTE4K/qc/Wi57I9x8/2ed4JNdjEna7O6PfavRg== + dependencies: + proxy-compare "^3.0.1" + vaul@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vaul/-/vaul-1.1.2.tgz#c959f8b9dc2ed4f7d99366caee433fbef91f5ba9" @@ -11754,6 +13060,20 @@ victory-vendor@^37.0.2: d3-time "^3.0.0" d3-timer "^3.0.1" +viem@>=2.45.0, viem@^2.1.1, viem@^2.21.26, viem@^2.31.7: + version "2.47.6" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.47.6.tgz#0249c166d5e0555074ffd3d320f2be2057551796" + integrity sha512-zExmbI99NGvMdYa7fmqSTLgkwh48dmhgEqFrUgkpL4kfG4XkVefZ8dZqIKVUhZo6Uhf0FrrEXOsHm9LUyIvI2Q== + dependencies: + "@noble/curves" "1.9.1" + "@noble/hashes" "1.8.0" + "@scure/bip32" "1.7.0" + "@scure/bip39" "1.6.0" + abitype "1.2.3" + isows "1.0.7" + ox "0.14.7" + ws "8.18.3" + viem@^2.30.0: version "2.30.0" resolved "https://registry.yarnpkg.com/viem/-/viem-2.30.0.tgz#e8f881bdba290db87fbf94302b0427aaa8abe320" @@ -12077,7 +13397,7 @@ ws@8.18.3: resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== -ws@^7.5.10: +ws@^7.5.1, ws@^7.5.10: version "7.5.10" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== @@ -12182,16 +13502,31 @@ yoctocolors@^2.1.1: resolved "https://registry.yarnpkg.com/yoctocolors/-/yoctocolors-2.1.1.tgz#e0167474e9fbb9e8b3ecca738deaa61dd12e56fc" integrity sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ== +zod@3.22.4: + version "3.22.4" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" + integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg== + zod@^3.24.2: version "3.24.4" resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.4.tgz#e2e2cca5faaa012d76e527d0d36622e0a90c315f" integrity sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg== +zod@^3.24.4: + version "3.25.76" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.76.tgz#26841c3f6fd22a6a2760e7ccb719179768471e34" + integrity sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ== + zod@^4.1.11: version "4.1.11" resolved "https://registry.yarnpkg.com/zod/-/zod-4.1.11.tgz#4aab62f76cfd45e6c6166519ba31b2ea019f75f5" integrity sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg== +zustand@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/zustand/-/zustand-5.0.3.tgz#b323435b73d06b2512e93c77239634374b0e407f" + integrity sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg== + zustand@^5.0.1: version "5.0.4" resolved "https://registry.yarnpkg.com/zustand/-/zustand-5.0.4.tgz#33af161f1e337854ccd8b711ef9e92545d6ae53f"