diff --git a/.changeset/blue-suns-battle.md b/.changeset/blue-suns-battle.md new file mode 100644 index 00000000..6e886f7f --- /dev/null +++ b/.changeset/blue-suns-battle.md @@ -0,0 +1,5 @@ +--- +"@stakekit/widget": patch +--- + +refactor: chain configuration diff --git a/.changeset/common-corners-attend.md b/.changeset/common-corners-attend.md new file mode 100644 index 00000000..307d83c3 --- /dev/null +++ b/.changeset/common-corners-attend.md @@ -0,0 +1,5 @@ +--- +"@stakekit/widget": patch +--- + +feat: partial tracking diff --git a/.changeset/stupid-dots-mix.md b/.changeset/stupid-dots-mix.md new file mode 100644 index 00000000..09b32ea5 --- /dev/null +++ b/.changeset/stupid-dots-mix.md @@ -0,0 +1,5 @@ +--- +"@stakekit/widget": patch +--- + +feat(transaction): transaction format option diff --git a/.changeset/tall-dingos-throw.md b/.changeset/tall-dingos-throw.md new file mode 100644 index 00000000..c39e35ae --- /dev/null +++ b/.changeset/tall-dingos-throw.md @@ -0,0 +1,5 @@ +--- +"@stakekit/widget": patch +--- + +feat(externalProviders): check configured chains diff --git a/README.md b/README.md index a3cd65f4..19a81107 100644 --- a/README.md +++ b/README.md @@ -445,70 +445,105 @@ const App = () => { Optionally, you can pass externalProviders property to the widget which will be used to connect to the wallet. ```ts -type SKExternalProviders = { - currentChain?: number; + type SKExternalProviders = { + currentChain?: SupportedSKChainIds; currentAddress: string; initToken?: `${TokenDto["network"]}-${TokenDto["address"]}`; - supportedChainIds?: number[]; + supportedChainIds?: SupportedSKChainIds[]; type: "generic"; - provider: EVMWallet; + provider: SKWallet; }; -type EVMWallet = { - signMessage: (message: string) => Promise; - switchChain: (chainId: string) => Promise; - getTransactionReceipt?(txHash: string): Promise<{ - transactionHash?: string; - }>; - sendTransaction( - tx: SKTx, - txMeta: { - txId: TransactionDto["id"]; - actionId: ActionDto["id"]; - actionType: ActionDto["type"]; - txType: TransactionDto["type"]; - }): Promise; -}; +type SupportedSKChainIds = + | EvmChainIds + | SubstrateChainIds + | MiscChainIds; + +enum EvmChainIds { + Ethereum = 1, + Polygon = 137, + Optimism = 10, + Arbitrum = 42_161, + AvalancheC = 43_114, + Celo = 42_220, + Harmony = 1_666_600_000, + Viction = 88, + Binance = 56, + Base = 8453, + Linea = 59_144, + Core = 1116, + Sonic = 146, + EthereumHolesky = 17000, + EthereumGoerli = 5, +} -type Base64String = string; +enum SubstrateChainIds { + Polkadot = 9999, +} -export enum TxType { - Legacy = "0x1", - EIP1559 = "0x2", +enum MiscChainIds { + Near = 397, + Tezos = 1729, + Solana = 501, + Tron = 79, + Ton = 3412, } -export type EVMTx = { +type EVMTx = { type: "evm"; - tx: { - data: Hex; - from: Hex; - to: Hex; - value: Hex | undefined; - nonce: Hex; - gas: Hex; - chainId: Hex; - type: Hex; - } & ( - | { - type: TxType.EIP1559; // EIP-1559 - maxFeePerGas: Hex | undefined; - maxPriorityFeePerGas: Hex | undefined; - } - | { type: TxType.Legacy } // Legacy - ); + tx: DecodedEVMTransaction; }; -export type SolanaTx = { type: "solana"; tx: Base64String }; +type SolanaTx = { + type: "solana"; + tx: DecodedSolanaTransaction; +}; -export type TonTx = { +type TonTx = { type: "ton"; - tx: { - seqno: bigint; - message: Base64String; - }; + tx: DecodedTonTransaction; }; -export type SKTx = EVMTx | SolanaTx | TonTx; +type TronTx = { + type: "tron"; + tx: DecodedTronTransaction; +}; + +type SKTx = EVMTx | SolanaTx | TonTx | TronTx; + +type ActionMeta = { + actionId: ActionDto["id"]; + actionType: ActionDto["type"]; + amount: ActionDto["amount"]; + inputToken: ActionDto["inputToken"]; + providersDetails: { + name: string; + address: string | undefined; + rewardRate: number | undefined; + rewardType: RewardTypes; + website: string | undefined; + logo: string | undefined; + }[]; +}; + +type SKTxMeta = ActionMeta & { + txId: TransactionDto["id"]; + txType: TransactionDto["type"]; +}; + +type SKWallet = { + signMessage: (message: string) => Promise; + switchChain: (chainId: number) => Promise; + getTransactionReceipt?(txHash: string): Promise<{ transactionHash?: string }>; + sendTransaction( + tx: SKTx, + txMeta: SKTxMeta + ): Promise< + | string + | { type: "success"; txHash: string } + | { type: "error"; error: string } + >; +}; ``` ### Tracking diff --git a/packages/widget/package.json b/packages/widget/package.json index 08d70d44..fa0c915d 100644 --- a/packages/widget/package.json +++ b/packages/widget/package.json @@ -71,7 +71,7 @@ "@radix-ui/react-visually-hidden": "^1.1.3", "@safe-global/safe-apps-provider": "^0.18.6", "@safe-global/safe-apps-sdk": "^9.1.0", - "@stakekit/api-hooks": "0.0.100", + "@stakekit/api-hooks": "0.0.101", "@stakekit/common": "^0.0.48", "@stakekit/rainbowkit": "^2.2.4", "@tanstack/react-query": "^5.74.0", diff --git a/packages/widget/src/domain/types/chains/cosmos.ts b/packages/widget/src/domain/types/chains/cosmos.ts new file mode 100644 index 00000000..539dec54 --- /dev/null +++ b/packages/widget/src/domain/types/chains/cosmos.ts @@ -0,0 +1,54 @@ +import type { CosmosChainsAssets } from "@sk-widget/providers/cosmos/chains/types"; +import { CosmosNetworks } from "@stakekit/common"; +import type { Chain } from "@stakekit/rainbowkit"; + +export const supportedCosmosChains = [ + CosmosNetworks.Akash, + CosmosNetworks.Cosmos, + CosmosNetworks.Juno, + CosmosNetworks.Kava, + CosmosNetworks.Osmosis, + CosmosNetworks.Stargaze, + CosmosNetworks.Onomy, + CosmosNetworks.Persistence, + CosmosNetworks.Axelar, + CosmosNetworks.Quicksilver, + CosmosNetworks.Agoric, + CosmosNetworks.BandProtocol, + CosmosNetworks.Bitsong, + CosmosNetworks.Chihuahua, + CosmosNetworks.Comdex, + CosmosNetworks.Crescent, + CosmosNetworks.Cronos, + CosmosNetworks.Cudos, + CosmosNetworks.FetchAi, + CosmosNetworks.GravityBridge, + CosmosNetworks.IRISnet, + CosmosNetworks.KiNetwork, + CosmosNetworks.MarsProtocol, + CosmosNetworks.Regen, + CosmosNetworks.Secret, + CosmosNetworks.Sentinel, + CosmosNetworks.Sommelier, + CosmosNetworks.Teritori, + CosmosNetworks.Umee, + CosmosNetworks.Coreum, + CosmosNetworks.Desmos, + CosmosNetworks.Dydx, + CosmosNetworks.Injective, + CosmosNetworks.Sei, + CosmosNetworks.Mantra, +] as const; + +export const supportedCosmosChainsSet = new Set(supportedCosmosChains); + +export type SupportedCosmosChains = (typeof supportedCosmosChains)[number]; + +export type CosmosChainsMap = { + [Key in SupportedCosmosChains]: { + type: "cosmos"; + skChainName: Key; + wagmiChain: Chain; + chain: CosmosChainsAssets; + }; +}; diff --git a/packages/widget/src/domain/types/chains/evm.ts b/packages/widget/src/domain/types/chains/evm.ts new file mode 100644 index 00000000..2e08e8ac --- /dev/null +++ b/packages/widget/src/domain/types/chains/evm.ts @@ -0,0 +1,166 @@ +import { getNetworkLogo } from "@sk-widget/utils"; +import { EvmNetworks } from "@stakekit/common"; +import type { Chain } from "@stakekit/rainbowkit"; +import { + arbitrum, + avalanche, + base, + bsc, + celo, + coreDao, + goerli, + harmonyOne, + holesky, + linea, + mainnet, + optimism, + polygon, + sonic, + viction, +} from "viem/chains"; + +const supportedEVMChains = [ + EvmNetworks.AvalancheC, + EvmNetworks.Arbitrum, + EvmNetworks.Binance, + EvmNetworks.Celo, + EvmNetworks.Ethereum, + EvmNetworks.EthereumGoerli, + EvmNetworks.Harmony, + EvmNetworks.Optimism, + EvmNetworks.Polygon, + EvmNetworks.Viction, + EvmNetworks.EthereumHolesky, + EvmNetworks.Base, + EvmNetworks.Linea, + EvmNetworks.Core, + EvmNetworks.Sonic, +] as const; + +export const supportedEVMChainsSet = new Set(supportedEVMChains); + +export type SupportedEvmChain = (typeof supportedEVMChains)[number]; + +export type EvmChainsMap = { + [Key in SupportedEvmChain]: { + type: "evm"; + skChainName: Key; + wagmiChain: Chain; + }; +}; + +export const evmChainsMap: EvmChainsMap = { + [EvmNetworks.Ethereum]: { + type: "evm", + skChainName: EvmNetworks.Ethereum, + wagmiChain: mainnet, + }, + [EvmNetworks.Polygon]: { + type: "evm", + skChainName: EvmNetworks.Polygon, + wagmiChain: polygon, + }, + [EvmNetworks.Optimism]: { + type: "evm", + skChainName: EvmNetworks.Optimism, + wagmiChain: optimism, + }, + [EvmNetworks.Arbitrum]: { + type: "evm", + skChainName: EvmNetworks.Arbitrum, + wagmiChain: arbitrum, + }, + [EvmNetworks.AvalancheC]: { + type: "evm", + skChainName: EvmNetworks.AvalancheC, + wagmiChain: avalanche, + }, + [EvmNetworks.Celo]: { + type: "evm", + skChainName: EvmNetworks.Celo, + wagmiChain: { + ...celo, + iconUrl: getNetworkLogo(EvmNetworks.Celo), + }, + }, + [EvmNetworks.Harmony]: { + type: "evm", + skChainName: EvmNetworks.Harmony, + wagmiChain: { + ...harmonyOne, + iconUrl: getNetworkLogo(EvmNetworks.Harmony), + }, + }, + [EvmNetworks.Viction]: { + type: "evm", + skChainName: EvmNetworks.Viction, + wagmiChain: { + ...viction, + iconUrl: getNetworkLogo(EvmNetworks.Viction), + }, + }, + [EvmNetworks.Binance]: { + type: "evm", + skChainName: EvmNetworks.Binance, + wagmiChain: bsc, + }, + [EvmNetworks.Base]: { + type: "evm", + skChainName: EvmNetworks.Base, + wagmiChain: base, + }, + [EvmNetworks.Linea]: { + type: "evm", + skChainName: EvmNetworks.Linea, + wagmiChain: { + ...linea, + iconUrl: getNetworkLogo(EvmNetworks.Linea), + }, + }, + [EvmNetworks.Core]: { + type: "evm", + skChainName: EvmNetworks.Core, + wagmiChain: { + ...coreDao, + name: "Core", + iconUrl: getNetworkLogo(EvmNetworks.Core), + }, + }, + [EvmNetworks.Sonic]: { + type: "evm", + skChainName: EvmNetworks.Sonic, + wagmiChain: { + ...sonic, + name: "Sonic", + iconUrl: getNetworkLogo(EvmNetworks.Sonic), + }, + }, + [EvmNetworks.EthereumHolesky]: { + type: "evm", + skChainName: EvmNetworks.EthereumHolesky, + wagmiChain: holesky, + }, + [EvmNetworks.EthereumGoerli]: { + type: "evm", + skChainName: EvmNetworks.EthereumGoerli, + wagmiChain: goerli, + }, +}; + +export enum EvmChainIds { + Ethereum = 1, + Polygon = 137, + Optimism = 10, + Arbitrum = 42_161, + AvalancheC = 43_114, + Celo = 42_220, + Harmony = 1_666_600_000, + Viction = 88, + Binance = 56, + Base = 8453, + Linea = 59_144, + Core = 1116, + Sonic = 146, + EthereumHolesky = 17000, + EthereumGoerli = 5, +} diff --git a/packages/widget/src/domain/types/chains/index.ts b/packages/widget/src/domain/types/chains/index.ts new file mode 100644 index 00000000..303eab6e --- /dev/null +++ b/packages/widget/src/domain/types/chains/index.ts @@ -0,0 +1,56 @@ +import { + type SupportedCosmosChains, + supportedCosmosChainsSet, +} from "@sk-widget/domain/types/chains/cosmos"; +import { + type EvmChainIds, + type SupportedEvmChain, + supportedEVMChainsSet, +} from "@sk-widget/domain/types/chains/evm"; +import { + type MiscChainIds, + type SupportedMiscChains, + supportedMiscChainsSet, +} from "@sk-widget/domain/types/chains/misc"; +import { + type SubstrateChainIds, + type SupportedSubstrateChains, + supportedSubstrateChainsSet, +} from "@sk-widget/domain/types/chains/substrate"; +import { MiscNetworks } from "@stakekit/common"; + +export const isEvmChain = (chain: string): chain is SupportedEvmChain => { + return supportedEVMChainsSet.has(chain as SupportedEvmChain); +}; + +export const isSolanaChain = (chain: string): chain is SupportedMiscChains => { + return chain === MiscNetworks.Solana; +}; + +export const isTonChain = (chain: string): chain is SupportedMiscChains => { + return chain === MiscNetworks.Ton; +}; + +export const isTronChain = (chain: string): chain is SupportedMiscChains => { + return chain === MiscNetworks.Tron; +}; + +export const isSupportedChain = (chain: string): chain is SupportedSKChains => { + return ( + isEvmChain(chain) || + supportedCosmosChainsSet.has(chain as SupportedCosmosChains) || + supportedMiscChainsSet.has(chain as SupportedMiscChains) || + supportedSubstrateChainsSet.has(chain as SupportedSubstrateChains) + ); +}; + +export type SupportedSKChainIds = + | EvmChainIds + | SubstrateChainIds + | MiscChainIds; + +export type SupportedSKChains = + | SupportedCosmosChains + | SupportedEvmChain + | SupportedMiscChains + | SupportedSubstrateChains; diff --git a/packages/widget/src/domain/types/chains.ts b/packages/widget/src/domain/types/chains/ledger.ts similarity index 53% rename from packages/widget/src/domain/types/chains.ts rename to packages/widget/src/domain/types/chains/ledger.ts index 462fba1a..fd0421cc 100644 --- a/packages/widget/src/domain/types/chains.ts +++ b/packages/widget/src/domain/types/chains/ledger.ts @@ -1,151 +1,11 @@ import type { Currency, Families } from "@ledgerhq/wallet-api-client"; -import type { CosmosChainsAssets } from "@sk-widget/providers/cosmos/chains/types"; +import type { SupportedSKChains } from "@sk-widget/domain/types/chains"; import { CosmosNetworks, EvmNetworks, MiscNetworks, SubstrateNetworks, } from "@stakekit/common"; -import type { Chain } from "@stakekit/rainbowkit"; -import type { Chain as ChainRainbowKit } from "@stakekit/rainbowkit"; - -export const supportedCosmosChains = [ - CosmosNetworks.Akash, - CosmosNetworks.Cosmos, - CosmosNetworks.Juno, - CosmosNetworks.Kava, - CosmosNetworks.Osmosis, - CosmosNetworks.Stargaze, - CosmosNetworks.Onomy, - CosmosNetworks.Persistence, - CosmosNetworks.Axelar, - CosmosNetworks.Quicksilver, - CosmosNetworks.Agoric, - CosmosNetworks.BandProtocol, - CosmosNetworks.Bitsong, - CosmosNetworks.Chihuahua, - CosmosNetworks.Comdex, - CosmosNetworks.Crescent, - CosmosNetworks.Cronos, - CosmosNetworks.Cudos, - CosmosNetworks.FetchAi, - CosmosNetworks.GravityBridge, - CosmosNetworks.IRISnet, - CosmosNetworks.KiNetwork, - CosmosNetworks.MarsProtocol, - CosmosNetworks.Regen, - CosmosNetworks.Secret, - CosmosNetworks.Sentinel, - CosmosNetworks.Sommelier, - CosmosNetworks.Teritori, - CosmosNetworks.Umee, - CosmosNetworks.Coreum, - CosmosNetworks.Desmos, - CosmosNetworks.Dydx, - CosmosNetworks.Injective, - CosmosNetworks.Sei, - CosmosNetworks.Mantra, -] as const; -export type SupportedCosmosChains = (typeof supportedCosmosChains)[number]; -const supportedCosmosChainsSet = new Set(supportedCosmosChains); -export type CosmosChainsMap = { - [Key in SupportedCosmosChains]: { - type: "cosmos"; - skChainName: Key; - wagmiChain: Chain; - chain: CosmosChainsAssets; - }; -}; - -const supportedEVMChains = [ - EvmNetworks.AvalancheC, - EvmNetworks.Arbitrum, - EvmNetworks.Binance, - EvmNetworks.Celo, - EvmNetworks.Ethereum, - EvmNetworks.EthereumGoerli, - EvmNetworks.Harmony, - EvmNetworks.Optimism, - EvmNetworks.Polygon, - EvmNetworks.Viction, - EvmNetworks.EthereumHolesky, - EvmNetworks.Base, - EvmNetworks.Linea, - EvmNetworks.Core, - EvmNetworks.Sonic, -] as const; -const supportedEVMChainsSet = new Set(supportedEVMChains); -type SupportedEvmChain = (typeof supportedEVMChains)[number]; -export type EvmChainsMap = { - [Key in SupportedEvmChain]: { - type: "evm"; - skChainName: Key; - wagmiChain: Chain; - }; -}; - -const supportedMiscChains = [ - MiscNetworks.Near, - MiscNetworks.Tezos, - MiscNetworks.Solana, - MiscNetworks.Tron, - MiscNetworks.Ton, -] as const; -const supportedMiscChainsSet = new Set(supportedMiscChains); -type SupportedMiscChains = (typeof supportedMiscChains)[number]; -export type MiscChainsMap = { - [Key in SupportedMiscChains]: { - type: "misc"; - skChainName: Key; - wagmiChain: Chain; - }; -}; - -const supportedSubstrateChains = [SubstrateNetworks.Polkadot] as const; -const supportedSubstrateChainsSet = new Set(supportedSubstrateChains); -type SupportedSubstrateChains = (typeof supportedSubstrateChains)[number]; -export type SubstrateChainsMap = { - [Key in SupportedSubstrateChains]: { - type: "substrate"; - skChainName: Key; - wagmiChain: Chain; - }; -}; - -export const isEvmChain = (chain: string): chain is SupportedEvmChain => { - return supportedEVMChainsSet.has(chain as SupportedEvmChain); -}; - -export const isSolanaChain = (chain: string): chain is SupportedMiscChains => { - return chain === MiscNetworks.Solana; -}; - -export const isTonChain = (chain: string): chain is SupportedMiscChains => { - return chain === MiscNetworks.Ton; -}; - -export const isTronChain = (chain: string): chain is SupportedMiscChains => { - return chain === MiscNetworks.Tron; -}; - -export const isSupportedChain = (chain: string): chain is SupportedSKChains => { - return ( - isEvmChain(chain) || - supportedCosmosChainsSet.has(chain as SupportedCosmosChains) || - supportedMiscChainsSet.has(chain as SupportedMiscChains) || - supportedSubstrateChainsSet.has(chain as SupportedSubstrateChains) - ); -}; - -export type SupportedSKChains = - | SupportedCosmosChains - | SupportedEvmChain - | SupportedMiscChains - | SupportedSubstrateChains; - -/** - * LEDGER LIVE - */ export type SupportedLedgerLiveFamilies = Extract< Families, @@ -351,8 +211,3 @@ export type SupportedLedgerFamiliesWithCurrency = Record< } > >; - -export type SupportedSKChainsType = { - chainName: SupportedSKChains; - chainIcon?: ChainRainbowKit["iconUrl"]; -}; diff --git a/packages/widget/src/providers/misc/chains/index.ts b/packages/widget/src/domain/types/chains/misc.ts similarity index 57% rename from packages/widget/src/providers/misc/chains/index.ts rename to packages/widget/src/domain/types/chains/misc.ts index f0f475d6..fbfdcfc6 100644 --- a/packages/widget/src/providers/misc/chains/index.ts +++ b/packages/widget/src/domain/types/chains/misc.ts @@ -1,5 +1,26 @@ +import { getTokenLogo } from "@sk-widget/utils"; +import { MiscNetworks } from "@stakekit/common"; import type { Chain } from "@stakekit/rainbowkit"; -import { getTokenLogo } from "../../../utils"; + +const supportedMiscChains = [ + MiscNetworks.Near, + MiscNetworks.Tezos, + MiscNetworks.Solana, + MiscNetworks.Tron, + MiscNetworks.Ton, +] as const; + +export const supportedMiscChainsSet = new Set(supportedMiscChains); + +export type SupportedMiscChains = (typeof supportedMiscChains)[number]; + +export type MiscChainsMap = { + [Key in SupportedMiscChains]: { + type: "misc"; + skChainName: Key; + wagmiChain: Chain; + }; +}; export const near = { id: 397, @@ -75,3 +96,39 @@ export const ton = { default: { http: ["https://ton.nownodes.io"] }, }, } as const satisfies Chain; + +export const miscChainsMap: MiscChainsMap = { + [MiscNetworks.Near]: { + type: "misc", + skChainName: MiscNetworks.Near, + wagmiChain: near, + }, + [MiscNetworks.Tezos]: { + type: "misc", + skChainName: MiscNetworks.Tezos, + wagmiChain: tezos, + }, + [MiscNetworks.Solana]: { + type: "misc", + skChainName: MiscNetworks.Solana, + wagmiChain: solana, + }, + [MiscNetworks.Tron]: { + type: "misc", + skChainName: MiscNetworks.Tron, + wagmiChain: tron, + }, + [MiscNetworks.Ton]: { + type: "misc", + skChainName: MiscNetworks.Ton, + wagmiChain: ton, + }, +}; + +export enum MiscChainIds { + Near = 397, + Tezos = 1729, + Solana = 501, + Tron = 79, + Ton = 3412, +} diff --git a/packages/widget/src/domain/types/chains/substrate.ts b/packages/widget/src/domain/types/chains/substrate.ts new file mode 100644 index 00000000..c8b3c30a --- /dev/null +++ b/packages/widget/src/domain/types/chains/substrate.ts @@ -0,0 +1,57 @@ +import { getNetworkLogo } from "@sk-widget/utils"; +import { SubstrateNetworks } from "@stakekit/common"; +import type { Chain } from "@stakekit/rainbowkit"; + +const supportedSubstrateChains = [SubstrateNetworks.Polkadot] as const; + +export const supportedSubstrateChainsSet = new Set(supportedSubstrateChains); + +export type SupportedSubstrateChains = + (typeof supportedSubstrateChains)[number]; + +export type SubstrateChainsMap = { + [Key in SupportedSubstrateChains]: { + type: "substrate"; + skChainName: Key; + wagmiChain: Chain; + }; +}; + +export const polkadot = { + id: 9999, + name: "Polkadot", + iconUrl: getNetworkLogo(SubstrateNetworks.Polkadot), + nativeCurrency: { + decimals: 10, + name: "Polkadot", + symbol: "DOT", + }, + rpcUrls: { + public: { + http: [ + "https://rpc.polkadot.io", + "https://flashy-side-arrow.dot-mainnet.quiknode.pro/97d5006f66e37488fb9dc1575ef8960e3870dd0f/", + ], + webSocket: ["wss://rpc.polkadot.io"], + }, + default: { + http: [ + "https://rpc.polkadot.io", + "https://flashy-side-arrow.dot-mainnet.quiknode.pro/97d5006f66e37488fb9dc1575ef8960e3870dd0f/", + ], + webSocket: ["wss://rpc.polkadot.io"], + }, + }, +} as const satisfies Chain; + +export const substrateChainsMap: SubstrateChainsMap = { + [SubstrateNetworks.Polkadot]: { + type: "substrate", + skChainName: SubstrateNetworks.Polkadot, + wagmiChain: polkadot, + }, +}; + +export enum SubstrateChainIds { + Polkadot = 9999, +} diff --git a/packages/widget/src/domain/types/transaction.ts b/packages/widget/src/domain/types/transaction.ts new file mode 100644 index 00000000..b7103535 --- /dev/null +++ b/packages/widget/src/domain/types/transaction.ts @@ -0,0 +1,126 @@ +import type { GetEitherRight } from "@sk-widget/types"; +import type { GetType } from "purify-ts"; +import { + Codec, + Left, + Right, + array, + boolean, + number, + oneOf, + optional, + record, + string, + unknown, +} from "purify-ts"; +import { type Address, type Hex, numberToHex } from "viem"; + +const bigintCodec = Codec.custom({ + decode: (input) => { + if (typeof input !== "string" && typeof input !== "number") { + return Left("Invalid value type"); + } + + const val = BigInt(input); + + return Right(val); + }, + encode: (input) => input.toString(), +}); + +const hexStringCodec = Codec.custom({ + decode: (input) => + typeof input === "string" && input.startsWith("0x") + ? Right(input as Hex) + : Left("Invalid hex string"), + encode: (input) => input, +}); + +const addressCodec = Codec.custom
({ + decode: (input) => + typeof input === "string" && input.startsWith("0x") + ? Right(input as Address) + : Left("Invalid address"), + encode: (input) => input, +}); + +export const unsignedEVMTransactionCodec = Codec.interface({ + data: hexStringCodec, + to: addressCodec, + gasLimit: bigintCodec, + from: addressCodec, + value: optional(bigintCodec), + nonce: number, + type: number, + maxFeePerGas: optional(bigintCodec), + maxPriorityFeePerGas: optional(bigintCodec), + chainId: number, +}); + +export const decodeAndPrepareEvmTransaction = ({ + address, + input, +}: { address: Address; input: unknown }) => + unsignedEVMTransactionCodec.decode(input).map((decodedTx) => ({ + to: decodedTx.to, + from: address, + data: decodedTx.data, + value: decodedTx.value ? numberToHex(decodedTx.value) : undefined, + nonce: numberToHex(decodedTx.nonce), + gas: numberToHex(decodedTx.gasLimit), + chainId: numberToHex(decodedTx.chainId), + ...(decodedTx.maxFeePerGas + ? { + type: "0x2" as const, + maxFeePerGas: numberToHex(decodedTx.maxFeePerGas), + maxPriorityFeePerGas: decodedTx.maxPriorityFeePerGas + ? numberToHex(decodedTx.maxPriorityFeePerGas) + : undefined, + } + : { type: "0x1" as const }), + })); + +export type DecodedEVMTransaction = GetEitherRight< + ReturnType +>; + +export const unsignedTronTransactionCodec = Codec.interface({ + raw_data: Codec.interface({ + contract: array(record(string, unknown)), + ref_block_bytes: string, + ref_block_hash: string, + expiration: number, + timestamp: number, + data: optional(unknown), + fee_limit: optional(unknown), + }), + raw_data_hex: string, + txID: string, + visible: boolean, +}); + +export type DecodedTronTransaction = GetType< + typeof unsignedTronTransactionCodec +>; + +export const unsignedSolanaTransactionCodec = string; + +export type DecodedSolanaTransaction = GetType< + typeof unsignedSolanaTransactionCodec +>; + +export const unsignedTonTransactionCodec = oneOf([ + Codec.interface({ + seqno: bigintCodec, + message: string, + }), + array( + Codec.interface({ + address: string, + amount: string, + payload: string, + }) + ), +]); + +export type DecodedTonTransaction = GetType; diff --git a/packages/widget/src/domain/types/wallets/generic-wallet.ts b/packages/widget/src/domain/types/wallets/generic-wallet.ts index a60496a1..ef5a5619 100644 --- a/packages/widget/src/domain/types/wallets/generic-wallet.ts +++ b/packages/widget/src/domain/types/wallets/generic-wallet.ts @@ -1,50 +1,33 @@ +import type { + DecodedEVMTransaction, + DecodedSolanaTransaction, + DecodedTonTransaction, + DecodedTronTransaction, +} from "@sk-widget/domain/types/transaction"; import type { ActionDto, RewardTypes, TransactionDto, } from "@stakekit/api-hooks"; -import type * as TronWeb from "tronweb"; -import type { Hex } from "viem"; - -export enum TxType { - Legacy = "0x1", - EIP1559 = "0x2", -} export type EVMTx = { type: "evm"; - tx: { - data: Hex; - from: Hex; - to: Hex; - value: Hex | undefined; - nonce: Hex; - gas: Hex; - chainId: Hex; - type: Hex; - } & ( - | { - type: TxType.EIP1559; // EIP-1559 - maxFeePerGas: Hex | undefined; - maxPriorityFeePerGas: Hex | undefined; - } - | { type: TxType.Legacy } // Legacy - ); + tx: DecodedEVMTransaction; }; -export type SolanaTx = { type: "solana"; tx: string }; +export type SolanaTx = { + type: "solana"; + tx: DecodedSolanaTransaction; +}; export type TonTx = { type: "ton"; - tx: { - seqno: bigint; - message: string; - }; + tx: DecodedTonTransaction; }; export type TronTx = { type: "tron"; - tx: TronWeb.Types.Transaction; + tx: DecodedTronTransaction; }; export type SKTx = EVMTx | SolanaTx | TonTx | TronTx; diff --git a/packages/widget/src/domain/types/wallets/index.ts b/packages/widget/src/domain/types/wallets/index.ts index 02158de1..4d783daf 100644 --- a/packages/widget/src/domain/types/wallets/index.ts +++ b/packages/widget/src/domain/types/wallets/index.ts @@ -1,11 +1,12 @@ import type { TokenString } from "@sk-widget/domain/types"; +import type { SupportedSKChainIds } from "@sk-widget/domain/types/chains"; import type { SKWallet } from "./generic-wallet"; export type SKExternalProviders = { - currentChain?: number; + currentChain?: SupportedSKChainIds; currentAddress: string; initToken?: TokenString; - supportedChainIds?: number[]; + supportedChainIds?: SupportedSKChainIds[]; type: "generic"; provider: SKWallet; }; diff --git a/packages/widget/src/index.bundle.ts b/packages/widget/src/index.bundle.ts index 6eac825c..e1102bf3 100644 --- a/packages/widget/src/index.bundle.ts +++ b/packages/widget/src/index.bundle.ts @@ -1,3 +1,9 @@ export { renderSKWidget } from "./App"; -export type { BundledSKWidgetProps } from "./App"; export { darkTheme, lightTheme } from "./styles/theme/themes"; +export { EvmChainIds } from "./domain/types/chains/evm"; +export { SubstrateChainIds } from "./domain/types/chains/substrate"; +export { MiscChainIds } from "./domain/types/chains/misc"; + +export type { BundledSKWidgetProps } from "./App"; +export type { SupportedSKChainIds } from "./domain/types/chains"; +export type * from "./domain/types/wallets/generic-wallet"; diff --git a/packages/widget/src/index.package.ts b/packages/widget/src/index.package.ts index 61754841..eb6193dc 100644 --- a/packages/widget/src/index.package.ts +++ b/packages/widget/src/index.package.ts @@ -2,4 +2,10 @@ export { SKApp } from "./App"; export { TrackingContextProvider } from "./providers/tracking"; export { HelpModal } from "./components/molecules/help-modal"; export { darkTheme, lightTheme } from "./styles/theme/themes"; +export { EvmChainIds } from "./domain/types/chains/evm"; +export { SubstrateChainIds } from "./domain/types/chains/substrate"; +export { MiscChainIds } from "./domain/types/chains/misc"; + export type { SKAppProps } from "./App"; +export type { SupportedSKChainIds } from "./domain/types/chains"; +export type * from "./domain/types/wallets/generic-wallet"; diff --git a/packages/widget/src/pages/steps/hooks/use-steps-machine.hook.ts b/packages/widget/src/pages/steps/hooks/use-steps-machine.hook.ts index fdd30135..80cff55d 100644 --- a/packages/widget/src/pages/steps/hooks/use-steps-machine.hook.ts +++ b/packages/widget/src/pages/steps/hooks/use-steps-machine.hook.ts @@ -1,10 +1,15 @@ import type { ActionMeta } from "@sk-widget/domain/types/wallets/generic-wallet"; import { useSavedRef } from "@sk-widget/hooks"; +import { useSettings } from "@sk-widget/providers/settings"; import type { SendTransactionError, TransactionDecodeError, } from "@sk-widget/providers/sk-wallet/errors"; -import type { ActionDto, TransactionDto } from "@stakekit/api-hooks"; +import type { + ActionDto, + TransactionDto, + TransactionFormat, +} from "@stakekit/api-hooks"; import { transactionConstruct, transactionGetTransaction, @@ -69,7 +74,7 @@ export const useStepsMachine = ({ actionMeta: ActionMeta; }) => { const { signTransaction, signMessage, isLedgerLive } = useSKWallet(); - + const { preferredTransactionFormat } = useSettings(); const trackEvent = useTrackEvent(); const sortedTransactions = useMemo( @@ -85,6 +90,7 @@ export const useStepsMachine = ({ signMessage, signTransaction, actionMeta, + preferredTransactionFormat, }); return useMachine(useState(() => getMachine(machineParams))[0]); @@ -100,6 +106,7 @@ const getMachine = ( signMessage: ReturnType["signMessage"]; signTransaction: ReturnType["signTransaction"]; actionMeta: ActionMeta; + preferredTransactionFormat?: TransactionFormat; }> > ) => { @@ -245,6 +252,9 @@ const getMachine = ( txConstruct(tx.id, { gasArgs: gas?.gasArgs, ledgerWalletAPICompatible: ref.current.isLedgerLive, + ...(!!ref.current.preferredTransactionFormat && { + transactionFormat: ref.current.preferredTransactionFormat, + }), }).mapLeft(() => new TransactionConstructError()) ) .chain< diff --git a/packages/widget/src/providers/cosmos/chains/get-chain-registry.ts b/packages/widget/src/providers/cosmos/chains/get-chain-registry.ts index d0de7841..c2dae7fa 100644 --- a/packages/widget/src/providers/cosmos/chains/get-chain-registry.ts +++ b/packages/widget/src/providers/cosmos/chains/get-chain-registry.ts @@ -1,13 +1,13 @@ +import { + type SupportedCosmosChains, + supportedCosmosChains, +} from "@sk-widget/domain/types/chains/cosmos"; import type { CosmosChain, WithWagmiName, } from "@sk-widget/providers/cosmos/chains/types"; import { CosmosNetworks } from "@stakekit/common"; import { chains as RegistryChains, assets } from "chain-registry"; -import { - type SupportedCosmosChains, - supportedCosmosChains, -} from "../../../domain/types/chains"; type AssetList = (typeof assets)[number]; diff --git a/packages/widget/src/providers/cosmos/config.ts b/packages/widget/src/providers/cosmos/config.ts index 86eafc3c..4792ba94 100644 --- a/packages/widget/src/providers/cosmos/config.ts +++ b/packages/widget/src/providers/cosmos/config.ts @@ -1,9 +1,9 @@ +import type { CosmosChainsMap } from "@sk-widget/domain/types/chains/cosmos"; +import { supportedCosmosChains } from "@sk-widget/domain/types/chains/cosmos"; import type { Chain, WalletList } from "@stakekit/rainbowkit"; import type { QueryClient } from "@tanstack/react-query"; import { EitherAsync, Maybe, Right } from "purify-ts"; import { config } from "../../config"; -import type { CosmosChainsMap } from "../../domain/types/chains"; -import { supportedCosmosChains } from "../../domain/types/chains"; import { typeSafeObjectEntries, typeSafeObjectFromEntries } from "../../utils"; import { getEnabledNetworks } from "../api/get-enabled-networks"; import { getWagmiChain } from "./chains"; diff --git a/packages/widget/src/providers/cosmos/cosmos-connector.ts b/packages/widget/src/providers/cosmos/cosmos-connector.ts index e39392eb..51d8339c 100644 --- a/packages/widget/src/providers/cosmos/cosmos-connector.ts +++ b/packages/widget/src/providers/cosmos/cosmos-connector.ts @@ -6,6 +6,7 @@ import type { MainWalletBase, } from "@cosmos-kit/core"; import type { WCClient } from "@cosmos-kit/walletconnect"; +import type { CosmosChainsMap } from "@sk-widget/domain/types/chains/cosmos"; import type { Wallet } from "@stakekit/rainbowkit"; import { SignDoc, TxRaw } from "cosmjs-types/cosmos/tx/v1beta1/tx"; import EventEmitter from "eventemitter3"; @@ -14,7 +15,6 @@ import { BehaviorSubject } from "rxjs"; import type { Address, Chain } from "viem"; import type { CreateConnectorFn } from "wagmi"; import { createConnector } from "wagmi"; -import type { CosmosChainsMap } from "../../domain/types/chains"; import { getStorageItem, setStorageItem } from "../../services/local-storage"; import { waitForMs } from "../../utils"; import type { ExtraProps } from "./cosmos-connector-meta"; diff --git a/packages/widget/src/providers/cosmos/wallet-manager.ts b/packages/widget/src/providers/cosmos/wallet-manager.ts index daa2e3f9..25539bd1 100644 --- a/packages/widget/src/providers/cosmos/wallet-manager.ts +++ b/packages/widget/src/providers/cosmos/wallet-manager.ts @@ -2,12 +2,12 @@ import type { MainWalletBase } from "@cosmos-kit/core"; import { Logger, WalletManager } from "@cosmos-kit/core"; import { wallets as keplrWallets } from "@cosmos-kit/keplr"; import { wallets as leapWallets } from "@cosmos-kit/leap"; +import type { CosmosChainsMap } from "@sk-widget/domain/types/chains/cosmos"; import type { CosmosChainsAssets } from "@sk-widget/providers/cosmos/chains/types"; import { CosmosNetworks } from "@stakekit/common"; import type { Chain, WalletList } from "@stakekit/rainbowkit"; import { Just } from "purify-ts"; import { config } from "../../config"; -import type { CosmosChainsMap } from "../../domain/types/chains"; import { cosmosAssets, registryIdsToSKCosmosNetworks, diff --git a/packages/widget/src/providers/ethereum/chains.ts b/packages/widget/src/providers/ethereum/chains.ts deleted file mode 100644 index 4b9d379c..00000000 --- a/packages/widget/src/providers/ethereum/chains.ts +++ /dev/null @@ -1,17 +0,0 @@ -import type { Chain } from "@stakekit/rainbowkit"; -import { getTokenLogo } from "../../utils"; - -export const viction = { - id: 88, - name: "Viction", - iconUrl: getTokenLogo("vic"), - nativeCurrency: { - decimals: 18, - name: "Viction", - symbol: "VIC", - }, - rpcUrls: { - public: { http: ["https://rpc.tomochain.com"] }, - default: { http: ["https://rpc.tomochain.com"] }, - }, -} as const satisfies Chain; diff --git a/packages/widget/src/providers/ethereum/config.ts b/packages/widget/src/providers/ethereum/config.ts index 7909f14e..e1f0aa28 100644 --- a/packages/widget/src/providers/ethereum/config.ts +++ b/packages/widget/src/providers/ethereum/config.ts @@ -1,40 +1,20 @@ -import { EvmNetworks } from "@stakekit/common"; +import { + type EvmChainsMap, + evmChainsMap, +} from "@sk-widget/domain/types/chains/evm"; import type { Chain, WalletList } from "@stakekit/rainbowkit"; import { coinbaseWallet, injectedWallet, metaMaskWallet, - // ledgerWallet, rainbowWallet, walletConnectWallet, } from "@stakekit/rainbowkit/wallets"; import type { QueryClient } from "@tanstack/react-query"; import { EitherAsync, Maybe } from "purify-ts"; -import { - arbitrum, - avalanche, - base, - bsc, - celo, - coreDao as core, - goerli, - harmonyOne, - holesky, - linea, - mainnet, - optimism, - polygon, - sonic, -} from "wagmi/chains"; import { config } from "../../config"; -import type { EvmChainsMap } from "../../domain/types/chains"; -import { - getNetworkLogo, - typeSafeObjectEntries, - typeSafeObjectFromEntries, -} from "../../utils"; +import { typeSafeObjectEntries, typeSafeObjectFromEntries } from "../../utils"; import { getEnabledNetworks } from "../api/get-enabled-networks"; -import { viction } from "./chains"; const queryFn = async ({ queryClient, @@ -49,104 +29,14 @@ const queryFn = async ({ }> => getEnabledNetworks({ queryClient }).caseOf({ Right: (networks) => { - const evmChainsMap: Partial = typeSafeObjectFromEntries( - typeSafeObjectEntries({ - [EvmNetworks.Ethereum]: { - type: "evm", - skChainName: EvmNetworks.Ethereum, - wagmiChain: mainnet, - }, - [EvmNetworks.Polygon]: { - type: "evm", - skChainName: EvmNetworks.Polygon, - wagmiChain: polygon, - }, - [EvmNetworks.Optimism]: { - type: "evm", - skChainName: EvmNetworks.Optimism, - wagmiChain: optimism, - }, - [EvmNetworks.Arbitrum]: { - type: "evm", - skChainName: EvmNetworks.Arbitrum, - wagmiChain: arbitrum, - }, - [EvmNetworks.AvalancheC]: { - type: "evm", - skChainName: EvmNetworks.AvalancheC, - wagmiChain: avalanche, - }, - [EvmNetworks.Celo]: { - type: "evm", - skChainName: EvmNetworks.Celo, - wagmiChain: { - ...celo, - iconUrl: getNetworkLogo(EvmNetworks.Celo), - }, - }, - [EvmNetworks.Harmony]: { - type: "evm", - skChainName: EvmNetworks.Harmony, - wagmiChain: { - ...harmonyOne, - iconUrl: getNetworkLogo(EvmNetworks.Harmony), - }, - }, - [EvmNetworks.Viction]: { - type: "evm", - skChainName: EvmNetworks.Viction, - wagmiChain: viction, - }, - [EvmNetworks.Binance]: { - type: "evm", - skChainName: EvmNetworks.Binance, - wagmiChain: bsc, - }, - [EvmNetworks.Base]: { - type: "evm", - skChainName: EvmNetworks.Base, - wagmiChain: base, - }, - [EvmNetworks.Linea]: { - type: "evm", - skChainName: EvmNetworks.Linea, - wagmiChain: { - ...linea, - iconUrl: getNetworkLogo(EvmNetworks.Linea), - }, - }, - [EvmNetworks.Core]: { - type: "evm", - skChainName: EvmNetworks.Core, - wagmiChain: { - ...core, - name: "Core", - iconUrl: getNetworkLogo(EvmNetworks.Core), - }, - }, - [EvmNetworks.Sonic]: { - type: "evm", - skChainName: EvmNetworks.Sonic, - wagmiChain: { - ...sonic, - name: "Sonic", - iconUrl: getNetworkLogo(EvmNetworks.Sonic), - }, - }, - [EvmNetworks.EthereumHolesky]: { - type: "evm", - skChainName: EvmNetworks.EthereumHolesky, - wagmiChain: holesky, - }, - [EvmNetworks.EthereumGoerli]: { - type: "evm", - skChainName: EvmNetworks.EthereumGoerli, - wagmiChain: goerli, - }, - }).filter(([_, v]) => networks.has(v.skChainName)) - ); + const filteredEvmChainsMap: Partial = + typeSafeObjectFromEntries( + typeSafeObjectEntries(evmChainsMap).filter(([_, v]) => + networks.has(v.skChainName) + ) + ); - const evmChains = Object.values(evmChainsMap).map( + const evmChains = Object.values(filteredEvmChainsMap).map( (val) => val.wagmiChain ); @@ -164,7 +54,7 @@ const queryFn = async ({ }; return Promise.resolve({ - evmChainsMap, + evmChainsMap: filteredEvmChainsMap, evmChains, connector: Maybe.fromPredicate(() => !!evmChains.length, connector), }); diff --git a/packages/widget/src/providers/external-provider/index.ts b/packages/widget/src/providers/external-provider/index.ts index f4214315..19207b3c 100644 --- a/packages/widget/src/providers/external-provider/index.ts +++ b/packages/widget/src/providers/external-provider/index.ts @@ -52,6 +52,11 @@ export const externalProviderConnector = ( connectorConfig.chains as [Chain, ...Chain[]] ) ); + + if ($filteredChains.getValue().length === 0) { + throw new Error("No supported chains found!"); + } + const provider = new ExternalProvider(variant); const getAccounts: ReturnType["getAccounts"] = diff --git a/packages/widget/src/providers/ledger/ledger-connector.ts b/packages/widget/src/providers/ledger/ledger-connector.ts index 186f3366..fd66362e 100644 --- a/packages/widget/src/providers/ledger/ledger-connector.ts +++ b/packages/widget/src/providers/ledger/ledger-connector.ts @@ -4,6 +4,10 @@ import { WindowMessageTransport, deserializeTransaction, } from "@ledgerhq/wallet-api-client"; +import { + type SupportedLedgerLiveFamilies, + ledgerChainPriority, +} from "@sk-widget/domain/types/chains/ledger"; import type { Chain, WalletDetailsParams, @@ -16,11 +20,7 @@ import type { CreateConnectorFn } from "wagmi"; import { createConnector } from "wagmi"; import { images } from "../../assets/images"; import { skNormalizeChainId } from "../../domain"; -import { - type SupportedLedgerLiveFamilies, - type SupportedSKChains, - ledgerChainPriority, -} from "../../domain/types/chains"; +import type { SupportedSKChains } from "../../domain/types/chains"; import type { InitParams } from "../../domain/types/init-params"; import { isLedgerDappBrowserProvider } from "../../utils"; import { type ExtraProps, configMeta } from "./ledger-live-connector-meta"; diff --git a/packages/widget/src/providers/ledger/utils.ts b/packages/widget/src/providers/ledger/utils.ts index 03c7e0c7..dc302fd3 100644 --- a/packages/widget/src/providers/ledger/utils.ts +++ b/packages/widget/src/providers/ledger/utils.ts @@ -5,21 +5,19 @@ import type { ERC20TokenCurrency, WalletAPIClient, } from "@ledgerhq/wallet-api-client"; -import type { Chain } from "@stakekit/rainbowkit"; -import { EitherAsync } from "purify-ts"; -import type { - CosmosChainsMap, - EvmChainsMap, - MiscChainsMap, - SubstrateChainsMap, - SupportedLedgerFamiliesWithCurrency, - SupportedLedgerLiveFamilies, - SupportedSKChains, -} from "../../domain/types/chains"; +import type { CosmosChainsMap } from "@sk-widget/domain/types/chains/cosmos"; +import type { EvmChainsMap } from "@sk-widget/domain/types/chains/evm"; import { + type SupportedLedgerFamiliesWithCurrency, + type SupportedLedgerLiveFamilies, ledgerChainPriority, supportedLedgerFamiliesWithCurrency, -} from "../../domain/types/chains"; +} from "@sk-widget/domain/types/chains/ledger"; +import type { MiscChainsMap } from "@sk-widget/domain/types/chains/misc"; +import type { SubstrateChainsMap } from "@sk-widget/domain/types/chains/substrate"; +import type { Chain } from "@stakekit/rainbowkit"; +import { EitherAsync } from "purify-ts"; +import type { SupportedSKChains } from "../../domain/types/chains"; import type { GetEitherAsyncRight } from "../../types"; import { typeSafeObjectEntries } from "../../utils"; diff --git a/packages/widget/src/providers/misc/config.ts b/packages/widget/src/providers/misc/config.ts index 7bfb23ad..f2317160 100644 --- a/packages/widget/src/providers/misc/config.ts +++ b/packages/widget/src/providers/misc/config.ts @@ -1,12 +1,13 @@ +import { + type MiscChainsMap, + miscChainsMap, +} from "@sk-widget/domain/types/chains/misc"; import type { Networks } from "@stakekit/common"; -import { MiscNetworks } from "@stakekit/common"; import type { Chain, WalletList } from "@stakekit/rainbowkit"; import type { QueryClient } from "@tanstack/react-query"; import { EitherAsync, Maybe, MaybeAsync } from "purify-ts"; import { config } from "../../config"; -import type { MiscChainsMap } from "../../domain/types/chains"; import { typeSafeObjectEntries, typeSafeObjectFromEntries } from "../../utils"; -import { near, solana, tezos, ton, tron } from "./chains"; const queryKey = [config.appPrefix, "misc-config"]; const staleTime = Number.POSITIVE_INFINITY; @@ -25,47 +26,26 @@ const queryFn = async ({ wallets: WalletList[number]["wallets"]; }>[]; }> => { - const miscChainsEntries = typeSafeObjectEntries({ - [MiscNetworks.Near]: { - type: "misc", - skChainName: MiscNetworks.Near, - wagmiChain: near, - }, - [MiscNetworks.Tezos]: { - type: "misc", - skChainName: MiscNetworks.Tezos, - wagmiChain: tezos, - }, - [MiscNetworks.Solana]: { - type: "misc", - skChainName: MiscNetworks.Solana, - wagmiChain: solana, - }, - [MiscNetworks.Tron]: { - type: "misc", - skChainName: MiscNetworks.Tron, - wagmiChain: tron, - }, - [MiscNetworks.Ton]: { - type: "misc", - skChainName: MiscNetworks.Ton, - wagmiChain: ton, - }, - }).filter(([_, v]) => enabledNetworks.has(v.skChainName)); + const miscChainsEntries = typeSafeObjectEntries( + miscChainsMap + ).filter(([_, v]) => enabledNetworks.has(v.skChainName)); - const miscChainsMap: Partial = + const filteredMiscChainsMap: Partial = typeSafeObjectFromEntries(miscChainsEntries); - const miscChains = Object.values(miscChainsMap).map((val) => val.wagmiChain); + const miscChains = Object.values(filteredMiscChainsMap).map( + (val) => val.wagmiChain + ); return Promise.all([ - MaybeAsync.liftMaybe(Maybe.fromFalsy(miscChainsMap.tron)).chain(() => - MaybeAsync(() => import("./tron-connector")).map((v) => - v.getTronConnectors({ forceWalletConnectOnly }) - ) + MaybeAsync.liftMaybe(Maybe.fromFalsy(filteredMiscChainsMap.tron)).chain( + () => + MaybeAsync(() => import("./tron-connector")).map((v) => + v.getTronConnectors({ forceWalletConnectOnly }) + ) ), ]).then((connectors) => ({ - miscChainsMap, + miscChainsMap: filteredMiscChainsMap, miscChains, connectors, })); diff --git a/packages/widget/src/providers/misc/tron-connector.ts b/packages/widget/src/providers/misc/tron-connector.ts index 7351730c..9ea4beb0 100644 --- a/packages/widget/src/providers/misc/tron-connector.ts +++ b/packages/widget/src/providers/misc/tron-connector.ts @@ -1,3 +1,4 @@ +import { tron } from "@sk-widget/domain/types/chains/misc"; import type { Chain, WalletDetailsParams, @@ -16,7 +17,6 @@ import { images } from "../../assets/images"; import { config } from "../../config"; import { getStorageItem, setStorageItem } from "../../services/local-storage"; import { getTokenLogo } from "../../utils"; -import { tron } from "./chains"; import type { ExtraProps } from "./tron-connector-meta"; import { configMeta } from "./tron-connector-meta"; diff --git a/packages/widget/src/providers/settings.tsx b/packages/widget/src/providers/settings.tsx index 35c80387..445e1e0c 100644 --- a/packages/widget/src/providers/settings.tsx +++ b/packages/widget/src/providers/settings.tsx @@ -1,5 +1,6 @@ import type { Languages, localResources } from "@sk-widget/translation"; import type { RecursivePartial } from "@sk-widget/types"; +import type { TransactionFormat } from "@stakekit/api-hooks"; import type { PropsWithChildren, ReactNode } from "react"; import { createContext, useContext, useLayoutEffect } from "react"; import { useTranslation } from "react-i18next"; @@ -25,8 +26,8 @@ export type SettingsProps = { theme?: ThemeWrapperTheme; referralCheck?: boolean; tracking?: { - trackEvent: (event: TrackEventVal, properties?: Properties) => void; - trackPageView: (page: TrackPageVal, properties?: Properties) => void; + trackEvent?: (event: TrackEventVal, properties?: Properties) => void; + trackPageView?: (page: TrackPageVal, properties?: Properties) => void; }; onMountAnimationComplete?: () => void; wagmi?: { @@ -45,6 +46,7 @@ export type SettingsProps = { mapWalletFn?: Parameters[0]["mapWalletFn"]; customTranslations?: RecursivePartial; tokensForEnabledYieldsOnly?: boolean; + preferredTransactionFormat?: TransactionFormat; }; export type SettingsContextType = SettingsProps & VariantProps; diff --git a/packages/widget/src/providers/sk-wallet/index.tsx b/packages/widget/src/providers/sk-wallet/index.tsx index 18f85875..5b97fee5 100644 --- a/packages/widget/src/providers/sk-wallet/index.tsx +++ b/packages/widget/src/providers/sk-wallet/index.tsx @@ -7,6 +7,13 @@ import { isTonChain, isTronChain, } from "@sk-widget/domain/types/chains"; +import { + decodeAndPrepareEvmTransaction, + unsignedEVMTransactionCodec, + unsignedSolanaTransactionCodec, + unsignedTonTransactionCodec, + unsignedTronTransactionCodec, +} from "@sk-widget/domain/types/transaction"; import type { SKTx, TronTx, @@ -50,13 +57,7 @@ import { useCosmosCW } from "./use-cosmos-cw"; import { useLedgerAccounts } from "./use-ledger-accounts"; import { useLedgerCurrentAccountId } from "./use-ledger-current-account-id"; import { useSyncExternalProvider } from "./use-sync-external-provider"; -import { prepareEVMTx, wagmiNetworkToSKNetwork } from "./utils"; -import { - unsignedEVMTransactionCodec, - unsignedSolanaTransactionCodec, - unsignedTonTransactionCodec, - unsignedTronTransactionCodec, -} from "./validation"; +import { wagmiNetworkToSKNetwork } from "./utils"; const SKWalletContext = createContext(undefined); @@ -263,8 +264,10 @@ export const SKWalletProvider = ({ children }: PropsWithChildren) => { if (isEvmChain(network)) { return Either.encase(() => JSON.parse(tx)) .mapLeft(() => "Failed to parse tx") - .chain((val) => unsignedEVMTransactionCodec.decode(val)) - .map((v) => prepareEVMTx({ address, decodedTx: v })); + .chain((val) => + decodeAndPrepareEvmTransaction({ address, input: val }) + ) + .map((v) => ({ type: "evm", tx: v })); } if (isSolanaChain(network)) { @@ -313,11 +316,12 @@ export const SKWalletProvider = ({ children }: PropsWithChildren) => { if (isSafeConnector(conn)) { return EitherAsync.liftEither( Either.encase(() => JSON.parse(tx)) - .chain((val) => unsignedEVMTransactionCodec.decode(val)) - .map((val) => prepareEVMTx({ address, decodedTx: val })) + .chain((val) => + decodeAndPrepareEvmTransaction({ address, input: val }) + ) .mapLeft(() => new TransactionDecodeError()) ) - .chain(({ tx }) => + .chain((tx) => conn .sendTransactions({ txs: [ diff --git a/packages/widget/src/providers/sk-wallet/utils.ts b/packages/widget/src/providers/sk-wallet/utils.ts index 9e4f0e6f..5784481c 100644 --- a/packages/widget/src/providers/sk-wallet/utils.ts +++ b/packages/widget/src/providers/sk-wallet/utils.ts @@ -1,16 +1,9 @@ -import type { Hex } from "viem"; -import { numberToHex } from "viem"; +import type { CosmosChainsMap } from "@sk-widget/domain/types/chains/cosmos"; +import type { EvmChainsMap } from "@sk-widget/domain/types/chains/evm"; +import type { MiscChainsMap } from "@sk-widget/domain/types/chains/misc"; +import type { SubstrateChainsMap } from "@sk-widget/domain/types/chains/substrate"; import type { Chain } from "wagmi/chains"; import type { SKWallet } from "../../domain/types"; -import type { - CosmosChainsMap, - EvmChainsMap, - MiscChainsMap, - SubstrateChainsMap, -} from "../../domain/types/chains"; -import type { EVMTx } from "../../domain/types/wallets/generic-wallet"; -import { TxType } from "../../domain/types/wallets/generic-wallet"; -import type { DecodedEVMTransaction } from "./validation"; export const wagmiNetworkToSKNetwork = ({ chain, @@ -34,31 +27,3 @@ export const wagmiNetworkToSKNetwork = ({ }).find((c) => c.wagmiChain.id === chain.id)?.skChainName ?? null ); }; - -export const prepareEVMTx = ({ - address, - decodedTx, -}: { - address: Hex; - decodedTx: DecodedEVMTransaction; -}): EVMTx => ({ - type: "evm", - tx: { - to: decodedTx.to, - from: address, - data: decodedTx.data, - value: decodedTx.value ? numberToHex(decodedTx.value) : undefined, - nonce: numberToHex(decodedTx.nonce), - gas: numberToHex(decodedTx.gasLimit), - chainId: numberToHex(decodedTx.chainId), - ...(decodedTx.maxFeePerGas - ? { - type: TxType.EIP1559, - maxFeePerGas: numberToHex(decodedTx.maxFeePerGas), - maxPriorityFeePerGas: decodedTx.maxPriorityFeePerGas - ? numberToHex(decodedTx.maxPriorityFeePerGas) - : undefined, - } - : { type: TxType.Legacy }), - }, -}); diff --git a/packages/widget/src/providers/sk-wallet/validation.ts b/packages/widget/src/providers/sk-wallet/validation.ts deleted file mode 100644 index d41a3f7f..00000000 --- a/packages/widget/src/providers/sk-wallet/validation.ts +++ /dev/null @@ -1,71 +0,0 @@ -import type { GetType } from "purify-ts"; -import { - Codec, - Left, - Right, - boolean, - number, - optional, - record, - string, - unknown, -} from "purify-ts"; -import type { Address, Hex } from "viem"; - -const bigintCodec = Codec.custom({ - decode: (input) => { - if (typeof input !== "string" && typeof input !== "number") { - return Left("Invalid value type"); - } - - const val = BigInt(input); - - return Right(val); - }, - encode: (input) => input.toString(), -}); - -const hexStringCodec = Codec.custom({ - decode: (input) => - typeof input === "string" && input.startsWith("0x") - ? Right(input as Hex) - : Left("Invalid hex string"), - encode: (input) => input, -}); - -const addressCodec = Codec.custom
({ - decode: (input) => - typeof input === "string" && input.startsWith("0x") - ? Right(input as Address) - : Left("Invalid address"), - encode: (input) => input, -}); - -export const unsignedEVMTransactionCodec = Codec.interface({ - data: hexStringCodec, - to: addressCodec, - gasLimit: bigintCodec, - from: addressCodec, - value: optional(bigintCodec), - nonce: number, - type: number, - maxFeePerGas: optional(bigintCodec), - maxPriorityFeePerGas: optional(bigintCodec), - chainId: number, -}); - -export type DecodedEVMTransaction = GetType; - -export const unsignedTronTransactionCodec = Codec.interface({ - raw_data: record(string, unknown), - raw_data_hex: string, - txID: string, - visible: boolean, -}); - -export const unsignedSolanaTransactionCodec = string; - -export const unsignedTonTransactionCodec = Codec.interface({ - seqno: bigintCodec, - message: string, -}); diff --git a/packages/widget/src/providers/substrate/config.ts b/packages/widget/src/providers/substrate/config.ts index bf1293e2..ad233b2e 100644 --- a/packages/widget/src/providers/substrate/config.ts +++ b/packages/widget/src/providers/substrate/config.ts @@ -1,15 +1,16 @@ -import { SubstrateNetworks } from "@stakekit/common"; +import { + type SubstrateChainsMap, + substrateChainsMap, +} from "@sk-widget/domain/types/chains/substrate"; import type { QueryClient } from "@tanstack/react-query"; import { EitherAsync } from "purify-ts"; import { config } from "../../config"; -import type { SubstrateChainsMap } from "../../domain/types/chains"; import { isLedgerDappBrowserProvider, typeSafeObjectEntries, typeSafeObjectFromEntries, } from "../../utils"; import { getEnabledNetworks } from "../api/get-enabled-networks"; -import { polkadot } from "./chains"; const queryKey = [config.appPrefix, "substrate-config"]; const staleTime = Number.POSITIVE_INFINITY; @@ -21,22 +22,21 @@ const queryFn = async ({ }) => getEnabledNetworks({ queryClient }).caseOf({ Right: (networks) => { - const substrateChainsMap: Partial = + const filteredSubstrateChainsMap: Partial = typeSafeObjectFromEntries( - typeSafeObjectEntries({ - [SubstrateNetworks.Polkadot]: { - type: "substrate", - skChainName: SubstrateNetworks.Polkadot, - wagmiChain: polkadot, - }, - }).filter(([_, v]) => networks.has(v.skChainName)) + typeSafeObjectEntries(substrateChainsMap).filter( + ([_, v]) => networks.has(v.skChainName) + ) ); const substrateChains = isLedgerDappBrowserProvider() - ? Object.values(substrateChainsMap).map((val) => val.wagmiChain) + ? Object.values(filteredSubstrateChainsMap).map((val) => val.wagmiChain) : []; - return Promise.resolve({ substrateChainsMap, substrateChains }); + return Promise.resolve({ + substrateChainsMap: filteredSubstrateChainsMap, + substrateChains, + }); }, Left: (l) => Promise.reject(l), }); diff --git a/packages/widget/src/providers/tracking/index.tsx b/packages/widget/src/providers/tracking/index.tsx index 43fe2e97..f76138de 100644 --- a/packages/widget/src/providers/tracking/index.tsx +++ b/packages/widget/src/providers/tracking/index.tsx @@ -84,8 +84,8 @@ export const TrackingContextProvider = ({ }>) => { const trackEvent = useCallback( (event, props) => { - tracking?.trackEvent(trackEventMap[event], ...(props ? [props] : [])); - variantTracking?.trackEvent( + tracking?.trackEvent?.(trackEventMap[event], ...(props ? [props] : [])); + variantTracking?.trackEvent?.( trackEventMap[event], ...(props ? [props] : []) ); @@ -95,8 +95,8 @@ export const TrackingContextProvider = ({ const trackPageView = useCallback( (page, props) => { - tracking?.trackPageView(trackPageMap[page], ...(props ? [props] : [])); - variantTracking?.trackPageView( + tracking?.trackPageView?.(trackPageMap[page], ...(props ? [props] : [])); + variantTracking?.trackPageView?.( trackPageMap[page], ...(props ? [props] : []) ); diff --git a/packages/widget/src/providers/wagmi/index.ts b/packages/widget/src/providers/wagmi/index.ts index fc8b717e..0e33014b 100644 --- a/packages/widget/src/providers/wagmi/index.ts +++ b/packages/widget/src/providers/wagmi/index.ts @@ -1,9 +1,7 @@ -import type { - CosmosChainsMap, - EvmChainsMap, - MiscChainsMap, - SubstrateChainsMap, -} from "@sk-widget/domain/types/chains"; +import type { CosmosChainsMap } from "@sk-widget/domain/types/chains/cosmos"; +import type { EvmChainsMap } from "@sk-widget/domain/types/chains/evm"; +import type { MiscChainsMap } from "@sk-widget/domain/types/chains/misc"; +import type { SubstrateChainsMap } from "@sk-widget/domain/types/chains/substrate"; import type { Wallet, WalletList } from "@stakekit/rainbowkit"; import { connectorsForWallets } from "@stakekit/rainbowkit"; import type { QueryClient } from "@tanstack/react-query"; diff --git a/packages/widget/tests/use-cases/external-provider/external-provider.test.tsx b/packages/widget/tests/use-cases/external-provider/external-provider.test.tsx index f5ee4457..d7336147 100644 --- a/packages/widget/tests/use-cases/external-provider/external-provider.test.tsx +++ b/packages/widget/tests/use-cases/external-provider/external-provider.test.tsx @@ -1,5 +1,5 @@ import { SKApp, type SKAppProps } from "@sk-widget/App"; -import { solana, ton } from "@sk-widget/providers/misc/chains"; +import { solana, ton } from "@sk-widget/domain/types/chains/misc"; import { VirtualizerObserveElementRectProvider } from "@sk-widget/providers/virtual-scroll"; import { formatAddress } from "@sk-widget/utils"; import type { TokenDto, YieldDto } from "@stakekit/api-hooks"; diff --git a/packages/widget/tests/use-cases/sk-wallet.test.tsx b/packages/widget/tests/use-cases/sk-wallet.test.tsx index 01b42026..953539ff 100644 --- a/packages/widget/tests/use-cases/sk-wallet.test.tsx +++ b/packages/widget/tests/use-cases/sk-wallet.test.tsx @@ -1,7 +1,6 @@ +import { solana, ton } from "@sk-widget/domain/types/chains/misc"; import type { SKExternalProviders } from "@sk-widget/domain/types/wallets"; import { SKApiClientProvider } from "@sk-widget/providers/api/api-client-provider"; -import { ton } from "@sk-widget/providers/misc/chains"; -import { solana } from "@sk-widget/providers/misc/chains"; import { SKQueryClientProvider } from "@sk-widget/providers/query-client"; import { SettingsContextProvider } from "@sk-widget/providers/settings"; import { SKWalletProvider, useSKWallet } from "@sk-widget/providers/sk-wallet"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6d81b3e7..d164c4a4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,7 +46,7 @@ importers: version: link:../../widget next: specifier: 14.2.24 - version: 14.2.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 14.2.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.85.0) react: specifier: ^18.3.1 version: 18.3.1 @@ -74,7 +74,7 @@ importers: version: link:../../widget next: specifier: 15.3.0 - version: 15.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 15.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.85.0) react: specifier: ^19.1.0 version: 19.1.0 @@ -115,13 +115,13 @@ importers: version: 19.0.4(@types/react@19.0.10) '@vitejs/plugin-react-swc': specifier: ^3.8.1 - version: 3.8.1(@swc/helpers@0.5.15)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)) + version: 3.8.1(@swc/helpers@0.5.15)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)) typescript: specifier: ^5.8.3 version: 5.8.3 vite: specifier: ^6.2.6 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2) + version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0) packages/examples/with-vite-bundled: dependencies: @@ -134,7 +134,7 @@ importers: version: 5.8.3 vite: specifier: ^6.2.6 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2) + version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0) packages/widget: dependencies: @@ -150,16 +150,16 @@ importers: version: 0.33.1 '@cosmos-kit/core': specifier: 2.16.0 - version: 2.16.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + version: 2.16.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@cosmos-kit/keplr': specifier: ^2.15.0 - version: 2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@walletconnect/sign-client@2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(starknet@6.23.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) + version: 2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@walletconnect/sign-client@2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(encoding@0.1.13)(starknet@6.23.1(encoding@0.1.13))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) '@cosmos-kit/leap': specifier: ^2.15.0 - version: 2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(cosmjs-types@0.9.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) + version: 2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(cosmjs-types@0.9.0)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) '@cosmos-kit/walletconnect': specifier: 2.13.0 - version: 2.13.0(@cosmjs/amino@0.33.1)(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) + version: 2.13.0(@cosmjs/amino@0.33.1)(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) '@faker-js/faker': specifier: ^9.7.0 version: 9.7.0 @@ -185,14 +185,14 @@ importers: specifier: ^9.1.0 version: 9.1.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) '@stakekit/api-hooks': - specifier: 0.0.100 - version: 0.0.100(@faker-js/faker@9.7.0)(@tanstack/react-query@5.74.0(react@19.1.0))(msw@2.7.4(@types/node@22.14.1)(typescript@5.8.3))(react@19.1.0) + specifier: 0.0.101 + version: 0.0.101(@faker-js/faker@9.7.0)(@tanstack/react-query@5.74.0(react@19.1.0))(msw@2.7.4(@types/node@22.14.1)(typescript@5.8.3))(react@19.1.0) '@stakekit/common': specifier: ^0.0.48 version: 0.0.48 '@stakekit/rainbowkit': specifier: ^2.2.4 - version: 2.2.4(@tanstack/react-query@5.74.0(react@19.1.0))(@types/react@19.0.10)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(wagmi@2.14.16(@tanstack/query-core@5.74.0)(@tanstack/react-query@5.74.0(react@19.1.0))(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2)) + version: 2.2.4(@tanstack/react-query@5.74.0(react@19.1.0))(@types/react@19.0.10)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(wagmi@2.14.16(@tanstack/query-core@5.74.0)(@tanstack/react-query@5.74.0(react@19.1.0))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2)) '@tanstack/react-query': specifier: ^5.74.0 version: 5.74.0(react@19.1.0) @@ -216,7 +216,7 @@ importers: version: 1.1.9(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@tronweb3/tronwallet-adapter-bitkeep': specifier: ^1.1.4 - version: 1.1.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) + version: 1.1.4(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@tronweb3/tronwallet-adapter-ledger': specifier: ^1.1.11 version: 1.1.11(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -225,7 +225,7 @@ importers: version: 1.1.12(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@tronweb3/tronwallet-adapter-walletconnect': specifier: ^2.0.3 - version: 2.0.3(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) + version: 2.0.3(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) '@types/jsdom': specifier: ^21.1.7 version: 21.1.7 @@ -255,10 +255,10 @@ importers: version: 1.6.3(@vanilla-extract/css@1.17.1) '@vanilla-extract/vite-plugin': specifier: ^5.0.1 - version: 5.0.1(@types/node@22.14.1)(jiti@2.4.2)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)) + version: 5.0.1(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)) + version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)) '@xstate/react': specifier: ^5.0.3 version: 5.0.3(@types/react@19.0.10)(react@19.1.0)(xstate@5.19.2) @@ -354,16 +354,16 @@ importers: version: 2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) vite: specifier: 6.2.6 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2) + version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0) vite-plugin-node-polyfills: specifier: ^0.23.0 - version: 0.23.0(rollup@4.40.0)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)) + version: 0.23.0(rollup@4.40.0)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)) vitest: specifier: ^3.1.1 - version: 3.1.1(@types/debug@4.1.12)(@types/node@22.14.1)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(msw@2.7.4(@types/node@22.14.1)(typescript@5.8.3)) + version: 3.1.1(@types/debug@4.1.12)(@types/node@22.14.1)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(less@4.2.2)(msw@2.7.4(@types/node@22.14.1)(typescript@5.8.3))(sass@1.85.0)(terser@5.39.0) wagmi: specifier: ^2.14.16 - version: 2.14.16(@tanstack/query-core@5.74.0)(@tanstack/react-query@5.74.0(react@19.1.0))(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2) + version: 2.14.16(@tanstack/query-core@5.74.0)(@tanstack/react-query@5.74.0(react@19.1.0))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2) xstate: specifier: ^5.19.2 version: 5.19.2 @@ -1352,6 +1352,9 @@ packages: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} @@ -2538,8 +2541,8 @@ packages: '@stablelib/x25519@1.0.3': resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} - '@stakekit/api-hooks@0.0.100': - resolution: {integrity: sha512-vXvZHDU6Wzkt6349D86gw2S7YqgzmvMzQdjXglkdsfVP6p6tz02BJxkZ8x+nIKwRwN9WteIHmIFUwPJiybHUsA==} + '@stakekit/api-hooks@0.0.101': + resolution: {integrity: sha512-h55QZEmG7QC9P5TOybrH9j8uX+JpKf8VQrTQS6/1uYh7ZLUu3YZNTliaY5JVk8JRyoqXXBH58SVP4Ve+tCSr0Q==} peerDependencies: '@faker-js/faker': ^9 '@tanstack/react-query': '>=5' @@ -3368,6 +3371,9 @@ packages: bs58check@2.1.2: resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + buffer-xor@1.0.3: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} @@ -3551,6 +3557,9 @@ packages: resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} engines: {node: '>=18'} + copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + copy-to-clipboard@3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} @@ -3806,6 +3815,9 @@ packages: encode-utf8@1.0.3: resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} @@ -3832,6 +3844,10 @@ packages: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -4214,6 +4230,14 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + immutable@5.1.1: + resolution: {integrity: sha512-3jatXi9ObIsPGr3N5hGw/vWWcTkq6hUYhpQz4k0wLC+owqWi/LiugIw9x0EdNZ2yGedKN/HzePiBvaJRXa0Ujg==} + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} @@ -4310,6 +4334,9 @@ packages: is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} @@ -4440,6 +4467,11 @@ packages: '@types/node': '>=18' typescript: '>=5.0.4' + less@4.2.2: + resolution: {integrity: sha512-tkuLHQlvWUTeQ3doAqnHbNn8T6WX1KA8yvbKG9x4VtKtIjHsVKQZCH11zRgAfbDAXC2UNIg/K9BYAAcEzUIrNg==} + engines: {node: '>=6'} + hasBin: true + libsodium-sumo@0.7.15: resolution: {integrity: sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==} @@ -4479,6 +4511,7 @@ packages: lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} @@ -4536,6 +4569,10 @@ packages: magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -4573,6 +4610,11 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -4671,6 +4713,11 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + next@14.2.24: resolution: {integrity: sha512-En8VEexSJ0Py2FfVnRRh8gtERwDRaJGNvsvad47ShkC2Yi8AXQPXEA2vKoDJlGFSj5WE5SyF21zNi4M5gyi+SQ==} engines: {node: '>=18.17.0'} @@ -4892,6 +4939,10 @@ packages: resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} engines: {node: '>=18'} + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + parse5@7.2.1: resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} @@ -5037,6 +5088,9 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + psl@1.15.0: resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} @@ -5323,6 +5377,14 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sass@1.85.0: + resolution: {integrity: sha512-3ToiC1xZ1Y8aU7+CkgCI/tqyuPXEmYGJXO7H4uqp0xkLXUqp88rQQ4j1HmP37xSJLbCJPaIiv+cT1y+grssrww==} + engines: {node: '>=14.0.0'} + hasBin: true + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} @@ -5424,6 +5486,13 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + spawndamnit@3.0.1: resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} @@ -5554,6 +5623,11 @@ packages: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} + terser@5.39.0: + resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} + engines: {node: '>=10'} + hasBin: true + text-encoding-utf-8@1.0.2: resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} @@ -6357,7 +6431,7 @@ snapshots: '@babel/parser': 7.26.10 '@babel/template': 7.26.9 '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 + '@babel/types': 7.27.0 convert-source-map: 2.0.0 debug: 4.4.0 gensync: 1.0.0-beta.2 @@ -6369,7 +6443,7 @@ snapshots: '@babel/generator@7.26.10': dependencies: '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 + '@babel/types': 7.27.0 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 @@ -6385,7 +6459,7 @@ snapshots: '@babel/helper-module-imports@7.25.9': dependencies: '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color @@ -6409,7 +6483,7 @@ snapshots: '@babel/helpers@7.26.10': dependencies: '@babel/template': 7.26.9 - '@babel/types': 7.26.10 + '@babel/types': 7.27.0 '@babel/parser@7.26.10': dependencies: @@ -6442,7 +6516,7 @@ snapshots: dependencies: '@babel/code-frame': 7.26.2 '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 + '@babel/types': 7.27.0 '@babel/traverse@7.26.10': dependencies: @@ -6450,7 +6524,7 @@ snapshots: '@babel/generator': 7.26.10 '@babel/parser': 7.26.10 '@babel/template': 7.26.9 - '@babel/types': 7.26.10 + '@babel/types': 7.27.0 debug: 4.4.0 globals: 11.12.0 transitivePeerDependencies: @@ -6501,10 +6575,10 @@ snapshots: '@biomejs/cli-win32-x64@1.9.4': optional: true - '@bitget-wallet/web3-sdk@0.0.8(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@bitget-wallet/web3-sdk@0.0.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@metamask/safe-event-emitter': 3.1.2 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) eventemitter3: 5.0.1 transitivePeerDependencies: - bufferutil @@ -6524,12 +6598,12 @@ snapshots: '@types/tough-cookie': 4.0.5 tough-cookie: 4.1.4 - '@chain-registry/client@1.53.100': + '@chain-registry/client@1.53.100(encoding@0.1.13)': dependencies: '@chain-registry/types': 0.50.100 '@chain-registry/utils': 1.51.100 bfs-path: 1.0.2 - cross-fetch: 3.2.0 + cross-fetch: 3.2.0(encoding@0.1.13) transitivePeerDependencies: - encoding @@ -6967,9 +7041,9 @@ snapshots: '@cosmjs/utils@0.33.1': {} - '@cosmos-kit/core@2.16.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@cosmos-kit/core@2.16.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@chain-registry/client': 1.53.100 + '@chain-registry/client': 1.53.100(encoding@0.1.13) '@chain-registry/keplr': 1.74.164 '@chain-registry/types': 0.46.15 '@cosmjs/amino': 0.32.4 @@ -7008,14 +7082,14 @@ snapshots: - uploadthing - utf-8-validate - '@cosmos-kit/keplr-extension@2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(bufferutil@4.0.9)(starknet@6.23.1)(utf-8-validate@5.0.10)': + '@cosmos-kit/keplr-extension@2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(bufferutil@4.0.9)(encoding@0.1.13)(starknet@6.23.1(encoding@0.1.13))(utf-8-validate@5.0.10)': dependencies: '@chain-registry/keplr': 1.74.164 '@cosmjs/amino': 0.33.1 '@cosmjs/proto-signing': 0.32.4 - '@cosmos-kit/core': 2.16.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@keplr-wallet/provider-extension': 0.12.209(starknet@6.23.1) - '@keplr-wallet/types': 0.12.209(starknet@6.23.1) + '@cosmos-kit/core': 2.16.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@keplr-wallet/provider-extension': 0.12.209(starknet@6.23.1(encoding@0.1.13)) + '@keplr-wallet/types': 0.12.209(starknet@6.23.1(encoding@0.1.13)) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -7042,16 +7116,16 @@ snapshots: - uploadthing - utf-8-validate - '@cosmos-kit/keplr-mobile@2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@walletconnect/sign-client@2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(starknet@6.23.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)': + '@cosmos-kit/keplr-mobile@2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@walletconnect/sign-client@2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(encoding@0.1.13)(starknet@6.23.1(encoding@0.1.13))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)': dependencies: '@chain-registry/keplr': 1.74.164 '@cosmjs/amino': 0.33.1 '@cosmjs/proto-signing': 0.32.4 - '@cosmos-kit/core': 2.16.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@cosmos-kit/keplr-extension': 2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(bufferutil@4.0.9)(starknet@6.23.1)(utf-8-validate@5.0.10) - '@cosmos-kit/walletconnect': 2.13.0(@cosmjs/amino@0.33.1)(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) - '@keplr-wallet/provider-extension': 0.12.209(starknet@6.23.1) - '@keplr-wallet/wc-client': 0.12.209(@walletconnect/sign-client@2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(@walletconnect/types@2.19.2)(starknet@6.23.1) + '@cosmos-kit/core': 2.16.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@cosmos-kit/keplr-extension': 2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(bufferutil@4.0.9)(encoding@0.1.13)(starknet@6.23.1(encoding@0.1.13))(utf-8-validate@5.0.10) + '@cosmos-kit/walletconnect': 2.13.0(@cosmjs/amino@0.33.1)(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) + '@keplr-wallet/provider-extension': 0.12.209(starknet@6.23.1(encoding@0.1.13)) + '@keplr-wallet/wc-client': 0.12.209(@walletconnect/sign-client@2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(@walletconnect/types@2.19.2)(starknet@6.23.1(encoding@0.1.13)) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -7082,10 +7156,10 @@ snapshots: - utf-8-validate - zod - '@cosmos-kit/keplr@2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@walletconnect/sign-client@2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(starknet@6.23.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)': + '@cosmos-kit/keplr@2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@walletconnect/sign-client@2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(encoding@0.1.13)(starknet@6.23.1(encoding@0.1.13))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)': dependencies: - '@cosmos-kit/keplr-extension': 2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(bufferutil@4.0.9)(starknet@6.23.1)(utf-8-validate@5.0.10) - '@cosmos-kit/keplr-mobile': 2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@walletconnect/sign-client@2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(starknet@6.23.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) + '@cosmos-kit/keplr-extension': 2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(bufferutil@4.0.9)(encoding@0.1.13)(starknet@6.23.1(encoding@0.1.13))(utf-8-validate@5.0.10) + '@cosmos-kit/keplr-mobile': 2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@walletconnect/sign-client@2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(encoding@0.1.13)(starknet@6.23.1(encoding@0.1.13))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -7118,12 +7192,12 @@ snapshots: - utf-8-validate - zod - '@cosmos-kit/leap-extension@2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@cosmos-kit/leap-extension@2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@chain-registry/keplr': 1.74.164 '@cosmjs/amino': 0.33.1 '@cosmjs/proto-signing': 0.32.4 - '@cosmos-kit/core': 2.16.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@cosmos-kit/core': 2.16.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -7149,12 +7223,12 @@ snapshots: - uploadthing - utf-8-validate - '@cosmos-kit/leap-metamask-cosmos-snap@0.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(bufferutil@4.0.9)(cosmjs-types@0.9.0)(utf-8-validate@5.0.10)': + '@cosmos-kit/leap-metamask-cosmos-snap@0.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(bufferutil@4.0.9)(cosmjs-types@0.9.0)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@chain-registry/keplr': 1.74.164 '@cosmjs/amino': 0.33.1 '@cosmjs/proto-signing': 0.32.4 - '@cosmos-kit/core': 2.16.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@cosmos-kit/core': 2.16.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@leapwallet/cosmos-snap-provider': 0.1.26 '@metamask/providers': 11.1.2 cosmjs-types: 0.9.0 @@ -7183,11 +7257,11 @@ snapshots: - uploadthing - utf-8-validate - '@cosmos-kit/leap-mobile@2.14.0(@cosmjs/amino@0.33.1)(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)': + '@cosmos-kit/leap-mobile@2.14.0(@cosmjs/amino@0.33.1)(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)': dependencies: '@chain-registry/keplr': 1.74.164 - '@cosmos-kit/core': 2.16.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@cosmos-kit/walletconnect': 2.13.0(@cosmjs/amino@0.33.1)(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) + '@cosmos-kit/core': 2.16.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@cosmos-kit/walletconnect': 2.13.0(@cosmjs/amino@0.33.1)(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -7217,11 +7291,11 @@ snapshots: - utf-8-validate - zod - '@cosmos-kit/leap@2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(cosmjs-types@0.9.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)': + '@cosmos-kit/leap@2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(cosmjs-types@0.9.0)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)': dependencies: - '@cosmos-kit/leap-extension': 2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@cosmos-kit/leap-metamask-cosmos-snap': 0.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(bufferutil@4.0.9)(cosmjs-types@0.9.0)(utf-8-validate@5.0.10) - '@cosmos-kit/leap-mobile': 2.14.0(@cosmjs/amino@0.33.1)(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) + '@cosmos-kit/leap-extension': 2.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@cosmos-kit/leap-metamask-cosmos-snap': 0.15.0(@cosmjs/amino@0.33.1)(@cosmjs/proto-signing@0.32.4)(bufferutil@4.0.9)(cosmjs-types@0.9.0)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@cosmos-kit/leap-mobile': 2.14.0(@cosmjs/amino@0.33.1)(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -7253,11 +7327,11 @@ snapshots: - utf-8-validate - zod - '@cosmos-kit/walletconnect@2.13.0(@cosmjs/amino@0.33.1)(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)': + '@cosmos-kit/walletconnect@2.13.0(@cosmjs/amino@0.33.1)(@walletconnect/types@2.19.2)(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)': dependencies: '@cosmjs/amino': 0.33.1 '@cosmjs/proto-signing': 0.32.4 - '@cosmos-kit/core': 2.16.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@cosmos-kit/core': 2.16.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@walletconnect/sign-client': 2.19.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) '@walletconnect/types': 2.19.2 '@walletconnect/utils': 2.19.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) @@ -7659,6 +7733,12 @@ snapshots: '@jridgewell/set-array@1.2.1': {} + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + optional: true + '@jridgewell/sourcemap-codec@1.5.0': {} '@jridgewell/trace-mapping@0.3.25': @@ -7704,30 +7784,30 @@ snapshots: long: 4.0.0 protobufjs: 6.11.4 - '@keplr-wallet/provider-extension@0.12.209(starknet@6.23.1)': + '@keplr-wallet/provider-extension@0.12.209(starknet@6.23.1(encoding@0.1.13))': dependencies: - '@keplr-wallet/types': 0.12.209(starknet@6.23.1) + '@keplr-wallet/types': 0.12.209(starknet@6.23.1(encoding@0.1.13)) deepmerge: 4.3.1 long: 4.0.0 - starknet: 6.23.1 + starknet: 6.23.1(encoding@0.1.13) - '@keplr-wallet/provider@0.12.209(starknet@6.23.1)': + '@keplr-wallet/provider@0.12.209(starknet@6.23.1(encoding@0.1.13))': dependencies: '@keplr-wallet/router': 0.12.209 - '@keplr-wallet/types': 0.12.209(starknet@6.23.1) + '@keplr-wallet/types': 0.12.209(starknet@6.23.1(encoding@0.1.13)) buffer: 6.0.3 deepmerge: 4.3.1 long: 4.0.0 - starknet: 6.23.1 + starknet: 6.23.1(encoding@0.1.13) '@keplr-wallet/router@0.12.209': {} '@keplr-wallet/simple-fetch@0.12.28': {} - '@keplr-wallet/types@0.12.209(starknet@6.23.1)': + '@keplr-wallet/types@0.12.209(starknet@6.23.1(encoding@0.1.13))': dependencies: long: 4.0.0 - starknet: 6.23.1 + starknet: 6.23.1(encoding@0.1.13) '@keplr-wallet/types@0.12.28': dependencies: @@ -7739,16 +7819,16 @@ snapshots: big-integer: 1.6.52 utility-types: 3.11.0 - '@keplr-wallet/wc-client@0.12.209(@walletconnect/sign-client@2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(@walletconnect/types@2.19.2)(starknet@6.23.1)': + '@keplr-wallet/wc-client@0.12.209(@walletconnect/sign-client@2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(@walletconnect/types@2.19.2)(starknet@6.23.1(encoding@0.1.13))': dependencies: - '@keplr-wallet/provider': 0.12.209(starknet@6.23.1) - '@keplr-wallet/types': 0.12.209(starknet@6.23.1) + '@keplr-wallet/provider': 0.12.209(starknet@6.23.1(encoding@0.1.13)) + '@keplr-wallet/types': 0.12.209(starknet@6.23.1(encoding@0.1.13)) '@walletconnect/sign-client': 2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) '@walletconnect/types': 2.19.2 buffer: 6.0.3 deepmerge: 4.3.1 long: 5.3.1 - starknet: 6.23.1 + starknet: 6.23.1(encoding@0.1.13) '@leapwallet/cosmos-snap-provider@0.1.26': dependencies: @@ -7948,10 +8028,10 @@ snapshots: '@metamask/safe-event-emitter@3.1.2': {} - '@metamask/sdk-communication-layer@0.32.0(cross-fetch@4.1.0)(eciesjs@0.4.14)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@metamask/sdk-communication-layer@0.32.0(cross-fetch@4.1.0(encoding@0.1.13))(eciesjs@0.4.14)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: bufferutil: 4.0.9 - cross-fetch: 4.1.0 + cross-fetch: 4.1.0(encoding@0.1.13) date-fns: 2.30.0 debug: 4.4.0 eciesjs: 0.4.14 @@ -7967,16 +8047,16 @@ snapshots: dependencies: '@paulmillr/qr': 0.2.1 - '@metamask/sdk@0.32.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@metamask/sdk@0.32.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.27.0 '@metamask/onboarding': 1.0.1 '@metamask/providers': 16.1.0 - '@metamask/sdk-communication-layer': 0.32.0(cross-fetch@4.1.0)(eciesjs@0.4.14)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@metamask/sdk-communication-layer': 0.32.0(cross-fetch@4.1.0(encoding@0.1.13))(eciesjs@0.4.14)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@metamask/sdk-install-modal-web': 0.32.0 '@paulmillr/qr': 0.2.1 bowser: 2.11.0 - cross-fetch: 4.1.0 + cross-fetch: 4.1.0(encoding@0.1.13) debug: 4.4.0 eciesjs: 0.4.14 eth-rpc-errors: 4.0.3 @@ -8935,7 +9015,7 @@ snapshots: dependencies: buffer: 6.0.3 - '@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.27.0 '@noble/curves': 1.8.1 @@ -8949,7 +9029,7 @@ snapshots: buffer: 6.0.3 fast-stable-stringify: 1.0.0 jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) rpc-websockets: 9.1.1 superstruct: 2.0.2 transitivePeerDependencies: @@ -9025,7 +9105,7 @@ snapshots: '@stablelib/random': 1.0.2 '@stablelib/wipe': 1.0.1 - '@stakekit/api-hooks@0.0.100(@faker-js/faker@9.7.0)(@tanstack/react-query@5.74.0(react@19.1.0))(msw@2.7.4(@types/node@22.14.1)(typescript@5.8.3))(react@19.1.0)': + '@stakekit/api-hooks@0.0.101(@faker-js/faker@9.7.0)(@tanstack/react-query@5.74.0(react@19.1.0))(msw@2.7.4(@types/node@22.14.1)(typescript@5.8.3))(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: @@ -9035,7 +9115,7 @@ snapshots: '@stakekit/common@0.0.48': {} - '@stakekit/rainbowkit@2.2.4(@tanstack/react-query@5.74.0(react@19.1.0))(@types/react@19.0.10)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(wagmi@2.14.16(@tanstack/query-core@5.74.0)(@tanstack/react-query@5.74.0(react@19.1.0))(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2))': + '@stakekit/rainbowkit@2.2.4(@tanstack/react-query@5.74.0(react@19.1.0))(@types/react@19.0.10)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(wagmi@2.14.16(@tanstack/query-core@5.74.0)(@tanstack/react-query@5.74.0(react@19.1.0))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2))': dependencies: '@tanstack/react-query': 5.74.0(react@19.1.0) '@vanilla-extract/css': 1.15.5 @@ -9048,7 +9128,7 @@ snapshots: react-remove-scroll: 2.6.2(@types/react@19.0.10)(react@19.1.0) ua-parser-js: 1.0.40 viem: 2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) - wagmi: 2.14.16(@tanstack/query-core@5.74.0)(@tanstack/react-query@5.74.0(react@19.1.0))(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2) + wagmi: 2.14.16(@tanstack/query-core@5.74.0)(@tanstack/react-query@5.74.0(react@19.1.0))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2) transitivePeerDependencies: - '@types/react' - babel-plugin-macros @@ -9176,9 +9256,9 @@ snapshots: - debug - utf-8-validate - '@tronweb3/tronwallet-adapter-bitkeep@1.1.4(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@tronweb3/tronwallet-adapter-bitkeep@1.1.4(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@bitget-wallet/web3-sdk': 0.0.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@bitget-wallet/web3-sdk': 0.0.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@tronweb3/tronwallet-abstract-adapter': 1.1.9(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@tronweb3/tronwallet-adapter-tronlink': 1.1.12(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: @@ -9209,11 +9289,11 @@ snapshots: - debug - utf-8-validate - '@tronweb3/tronwallet-adapter-walletconnect@2.0.3(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)': + '@tronweb3/tronwallet-adapter-walletconnect@2.0.3(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)': dependencies: '@tronweb3/tronwallet-abstract-adapter': 1.1.9(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@tronweb3/walletconnect-tron': 3.0.0(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) - '@wagmi/core': 1.4.13(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@0.3.50(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2) + '@wagmi/core': 1.4.13(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@0.3.50(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2) '@walletconnect/sign-client': 2.19.1(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) '@walletconnect/types': 2.19.1 viem: 0.3.50(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) @@ -9383,12 +9463,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@vanilla-extract/compiler@0.1.2(@types/node@22.14.1)(jiti@2.4.2)': + '@vanilla-extract/compiler@0.1.2(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)': dependencies: '@vanilla-extract/css': 1.17.1 '@vanilla-extract/integration': 8.0.1 - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2) - vite-node: 3.0.9(@types/node@22.14.1)(jiti@2.4.2) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0) + vite-node: 3.0.9(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -9472,11 +9552,11 @@ snapshots: dependencies: '@vanilla-extract/css': 1.17.1 - '@vanilla-extract/vite-plugin@5.0.1(@types/node@22.14.1)(jiti@2.4.2)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2))': + '@vanilla-extract/vite-plugin@5.0.1(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0))': dependencies: - '@vanilla-extract/compiler': 0.1.2(@types/node@22.14.1)(jiti@2.4.2) + '@vanilla-extract/compiler': 0.1.2(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0) '@vanilla-extract/integration': 8.0.1 - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -9492,21 +9572,21 @@ snapshots: - tsx - yaml - '@vitejs/plugin-react-swc@3.8.1(@swc/helpers@0.5.15)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2))': + '@vitejs/plugin-react-swc@3.8.1(@swc/helpers@0.5.15)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0))': dependencies: '@swc/core': 1.11.11(@swc/helpers@0.5.15) - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0) transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-react@4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2))': + '@vitejs/plugin-react@4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0) transitivePeerDependencies: - supports-color @@ -9517,14 +9597,14 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.1.1(msw@2.7.4(@types/node@22.14.1)(typescript@5.8.3))(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2))': + '@vitest/mocker@3.1.1(msw@2.7.4(@types/node@22.14.1)(typescript@5.8.3))(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0))': dependencies: '@vitest/spy': 3.1.1 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: msw: 2.7.4(@types/node@22.14.1)(typescript@5.8.3) - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0) '@vitest/pretty-format@3.1.1': dependencies: @@ -9555,13 +9635,13 @@ snapshots: optionalDependencies: typescript: 5.8.3 - '@wagmi/connectors@3.1.11(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@0.3.50(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2)': + '@wagmi/connectors@3.1.11(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@0.3.50(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2)': dependencies: '@coinbase/wallet-sdk': 3.9.3 '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) '@safe-global/safe-apps-sdk': 8.1.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) - '@walletconnect/ethereum-provider': 2.11.0(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.1.0)(utf-8-validate@5.0.10) - '@walletconnect/legacy-provider': 2.0.0 + '@walletconnect/ethereum-provider': 2.11.0(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.1.0)(utf-8-validate@5.0.10) + '@walletconnect/legacy-provider': 2.0.0(encoding@0.1.13) '@walletconnect/modal': 2.6.2(@types/react@19.0.10)(react@19.1.0) '@walletconnect/utils': 2.11.0 abitype: 0.8.7(typescript@5.8.3)(zod@3.24.2) @@ -9596,14 +9676,14 @@ snapshots: - utf-8-validate - zod - '@wagmi/connectors@5.7.12(@types/react@19.0.10)(@wagmi/core@2.16.7(@tanstack/query-core@5.74.0)(@types/react@19.0.10)(react@19.1.0)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)))(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2)': + '@wagmi/connectors@5.7.12(@types/react@19.0.10)(@wagmi/core@2.16.7(@tanstack/query-core@5.74.0)(@types/react@19.0.10)(react@19.1.0)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)))(bufferutil@4.0.9)(encoding@0.1.13)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2)': dependencies: '@coinbase/wallet-sdk': 4.3.0 - '@metamask/sdk': 0.32.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metamask/sdk': 0.32.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@safe-global/safe-apps-provider': 0.18.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) '@wagmi/core': 2.16.7(@tanstack/query-core@5.74.0)(@types/react@19.0.10)(react@19.1.0)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)) - '@walletconnect/ethereum-provider': 2.19.2(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) + '@walletconnect/ethereum-provider': 2.19.2(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) cbw-sdk: '@coinbase/wallet-sdk@3.9.3' viem: 2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) optionalDependencies: @@ -9635,9 +9715,9 @@ snapshots: - utf-8-validate - zod - '@wagmi/core@1.4.13(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@0.3.50(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2)': + '@wagmi/core@1.4.13(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@0.3.50(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2)': dependencies: - '@wagmi/connectors': 3.1.11(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@0.3.50(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2) + '@wagmi/connectors': 3.1.11(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@0.3.50(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2) abitype: 0.8.7(typescript@5.8.3)(zod@3.24.2) eventemitter3: 4.0.7 viem: 0.3.50(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) @@ -9687,7 +9767,7 @@ snapshots: - react - use-sync-external-store - '@walletconnect/core@2.11.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@walletconnect/core@2.11.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-provider': 1.0.13 @@ -9703,7 +9783,7 @@ snapshots: '@walletconnect/types': 2.11.0 '@walletconnect/utils': 2.11.0 events: 3.3.0 - isomorphic-unfetch: 3.1.0 + isomorphic-unfetch: 3.1.0(encoding@0.1.13) lodash.isequal: 4.5.0 uint8arrays: 3.1.1 transitivePeerDependencies: @@ -9834,16 +9914,16 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/ethereum-provider@2.11.0(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.1.0)(utf-8-validate@5.0.10)': + '@walletconnect/ethereum-provider@2.11.0(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.1.0)(utf-8-validate@5.0.10)': dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.8 + '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/modal': 2.6.2(@types/react@19.0.10)(react@19.1.0) - '@walletconnect/sign-client': 2.11.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@walletconnect/sign-client': 2.11.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@walletconnect/types': 2.11.0 - '@walletconnect/universal-provider': 2.11.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@walletconnect/universal-provider': 2.11.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@walletconnect/utils': 2.11.0 events: 3.3.0 transitivePeerDependencies: @@ -9871,9 +9951,9 @@ snapshots: - uploadthing - utf-8-validate - '@walletconnect/ethereum-provider@2.19.2(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)': + '@walletconnect/ethereum-provider@2.19.2(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)': dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.8 + '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 @@ -9881,7 +9961,7 @@ snapshots: '@walletconnect/modal': 2.7.0(@types/react@19.0.10)(react@19.1.0) '@walletconnect/sign-client': 2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) '@walletconnect/types': 2.19.2 - '@walletconnect/universal-provider': 2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) + '@walletconnect/universal-provider': 2.19.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) '@walletconnect/utils': 2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2) events: 3.3.0 transitivePeerDependencies: @@ -9928,11 +10008,11 @@ snapshots: '@walletconnect/time': 1.0.2 events: 3.3.0 - '@walletconnect/jsonrpc-http-connection@1.0.8': + '@walletconnect/jsonrpc-http-connection@1.0.8(encoding@0.1.13)': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 - cross-fetch: 3.2.0 + cross-fetch: 3.2.0(encoding@0.1.13) events: 3.3.0 transitivePeerDependencies: - encoding @@ -10030,9 +10110,9 @@ snapshots: preact: 10.26.4 qrcode: 1.5.4 - '@walletconnect/legacy-provider@2.0.0': + '@walletconnect/legacy-provider@2.0.0(encoding@0.1.13)': dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.8 + '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/legacy-client': 2.0.0 '@walletconnect/legacy-modal': 2.0.0 @@ -10134,9 +10214,9 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/sign-client@2.11.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@walletconnect/sign-client@2.11.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@walletconnect/core': 2.11.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@walletconnect/core': 2.11.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-utils': 1.0.8 @@ -10326,14 +10406,14 @@ snapshots: - ioredis - uploadthing - '@walletconnect/universal-provider@2.11.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@walletconnect/universal-provider@2.11.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.8 + '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.11.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@walletconnect/sign-client': 2.11.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@walletconnect/types': 2.11.0 '@walletconnect/utils': 2.11.0 events: 3.3.0 @@ -10360,10 +10440,10 @@ snapshots: - uploadthing - utf-8-validate - '@walletconnect/universal-provider@2.19.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)': + '@walletconnect/universal-provider@2.19.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)': dependencies: '@walletconnect/events': 1.0.1 - '@walletconnect/jsonrpc-http-connection': 1.0.8 + '@walletconnect/jsonrpc-http-connection': 1.0.8(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 @@ -10817,6 +10897,9 @@ snapshots: create-hash: 1.2.0 safe-buffer: 5.2.1 + buffer-from@1.1.2: + optional: true + buffer-xor@1.0.3: {} buffer@5.7.1: @@ -10993,6 +11076,11 @@ snapshots: cookie@1.0.2: {} + copy-anything@2.0.6: + dependencies: + is-what: 3.14.1 + optional: true + copy-to-clipboard@3.3.3: dependencies: toggle-selection: 1.0.6 @@ -11043,15 +11131,15 @@ snapshots: create-require@1.1.1: {} - cross-fetch@3.2.0: + cross-fetch@3.2.0(encoding@0.1.13): dependencies: - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) transitivePeerDependencies: - encoding - cross-fetch@4.1.0: + cross-fetch@4.1.0(encoding@0.1.13): dependencies: - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) transitivePeerDependencies: - encoding @@ -11242,6 +11330,11 @@ snapshots: encode-utf8@1.0.3: {} + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + optional: true + end-of-stream@1.4.4: dependencies: once: 1.4.0 @@ -11274,6 +11367,11 @@ snapshots: env-paths@2.2.1: {} + errno@0.1.8: + dependencies: + prr: 1.0.1 + optional: true + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -11721,6 +11819,12 @@ snapshots: ignore@5.3.2: {} + image-size@0.5.5: + optional: true + + immutable@5.1.1: + optional: true + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 @@ -11803,24 +11907,27 @@ snapshots: is-typedarray@1.0.0: {} + is-what@3.14.1: + optional: true + is-windows@1.0.2: {} isarray@1.0.0: {} isexe@2.0.0: {} - isomorphic-fetch@3.0.0: + isomorphic-fetch@3.0.0(encoding@0.1.13): dependencies: - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) whatwg-fetch: 3.6.20 transitivePeerDependencies: - encoding isomorphic-timers-promises@1.0.1: {} - isomorphic-unfetch@3.1.0: + isomorphic-unfetch@3.1.0(encoding@0.1.13): dependencies: - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) unfetch: 4.2.0 transitivePeerDependencies: - encoding @@ -11969,6 +12076,21 @@ snapshots: zod: 3.24.2 zod-validation-error: 3.4.0(zod@3.24.2) + less@4.2.2: + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.8.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + optional: true + libsodium-sumo@0.7.15: {} libsodium-wrappers-sumo@0.7.15: @@ -12066,6 +12188,12 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 + optional: true + math-intrinsics@1.1.0: {} md5.js@1.3.5: @@ -12100,6 +12228,9 @@ snapshots: dependencies: mime-db: 1.52.0 + mime@1.6.0: + optional: true + min-indent@1.0.1: {} minimalistic-assert@1.0.1: {} @@ -12205,7 +12336,13 @@ snapshots: nanoid@3.3.9: {} - next@14.2.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + needle@3.3.1: + dependencies: + iconv-lite: 0.6.3 + sax: 1.4.1 + optional: true + + next@14.2.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.85.0): dependencies: '@next/env': 14.2.24 '@swc/helpers': 0.5.5 @@ -12226,11 +12363,12 @@ snapshots: '@next/swc-win32-arm64-msvc': 14.2.24 '@next/swc-win32-ia32-msvc': 14.2.24 '@next/swc-win32-x64-msvc': 14.2.24 + sass: 1.85.0 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@15.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next@15.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.85.0): dependencies: '@next/env': 15.3.0 '@swc/counter': 0.1.3 @@ -12250,6 +12388,7 @@ snapshots: '@next/swc-linux-x64-musl': 15.3.0 '@next/swc-win32-arm64-msvc': 15.3.0 '@next/swc-win32-x64-msvc': 15.3.0 + sass: 1.85.0 sharp: 0.34.1 transitivePeerDependencies: - '@babel/core' @@ -12271,9 +12410,11 @@ snapshots: node-fetch-native@1.6.6: {} - node-fetch@2.7.0: + node-fetch@2.7.0(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 node-gyp-build-optional-packages@5.1.1: dependencies: @@ -12464,6 +12605,9 @@ snapshots: parse-ms@4.0.0: {} + parse-node-version@1.0.1: + optional: true + parse5@7.2.1: dependencies: entities: 4.5.0 @@ -12601,6 +12745,9 @@ snapshots: proxy-from-env@1.1.0: {} + prr@1.0.1: + optional: true + psl@1.15.0: dependencies: punycode: 2.3.1 @@ -12922,6 +13069,18 @@ snapshots: safer-buffer@2.1.2: {} + sass@1.85.0: + dependencies: + chokidar: 4.0.3 + immutable: 5.1.1 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.1 + optional: true + + sax@1.4.1: + optional: true + saxes@6.0.0: dependencies: xmlchars: 2.2.0 @@ -13057,6 +13216,15 @@ snapshots: source-map-js@1.2.1: {} + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + optional: true + + source-map@0.6.1: + optional: true + spawndamnit@3.0.1: dependencies: cross-spawn: 7.0.6 @@ -13070,7 +13238,7 @@ snapshots: stackback@0.0.2: {} - starknet@6.23.1: + starknet@6.23.1(encoding@0.1.13): dependencies: '@noble/curves': 1.7.0 '@noble/hashes': 1.6.0 @@ -13078,7 +13246,7 @@ snapshots: '@scure/starknet': 1.1.0 abi-wan-kanabi: 2.2.4 fetch-cookie: 3.0.1 - isomorphic-fetch: 3.0.0 + isomorphic-fetch: 3.0.0(encoding@0.1.13) lossless-json: 4.0.2 pako: 2.1.0 starknet-types-07: '@starknet-io/types-js@0.7.10' @@ -13164,6 +13332,14 @@ snapshots: term-size@2.2.1: {} + terser@5.39.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.1 + commander: 2.20.3 + source-map-support: 0.5.21 + optional: true + text-encoding-utf-8@1.0.2: {} text-extensions@2.4.0: {} @@ -13524,13 +13700,13 @@ snapshots: - utf-8-validate - zod - vite-node@3.0.9(@types/node@22.14.1)(jiti@2.4.2): + vite-node@3.0.9(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0) transitivePeerDependencies: - '@types/node' - jiti @@ -13545,13 +13721,13 @@ snapshots: - tsx - yaml - vite-node@3.1.1(@types/node@22.14.1)(jiti@2.4.2): + vite-node@3.1.1(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0) transitivePeerDependencies: - '@types/node' - jiti @@ -13566,15 +13742,15 @@ snapshots: - tsx - yaml - vite-plugin-node-polyfills@0.23.0(rollup@4.40.0)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)): + vite-plugin-node-polyfills@0.23.0(rollup@4.40.0)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)): dependencies: '@rollup/plugin-inject': 5.0.5(rollup@4.40.0) node-stdlib-browser: 1.3.1 - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0) transitivePeerDependencies: - rollup - vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2): + vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0): dependencies: esbuild: 0.25.2 postcss: 8.5.3 @@ -13583,11 +13759,14 @@ snapshots: '@types/node': 22.14.1 fsevents: 2.3.3 jiti: 2.4.2 + less: 4.2.2 + sass: 1.85.0 + terser: 5.39.0 - vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.1)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(msw@2.7.4(@types/node@22.14.1)(typescript@5.8.3)): + vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.1)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(less@4.2.2)(msw@2.7.4(@types/node@22.14.1)(typescript@5.8.3))(sass@1.85.0)(terser@5.39.0): dependencies: '@vitest/expect': 3.1.1 - '@vitest/mocker': 3.1.1(msw@2.7.4(@types/node@22.14.1)(typescript@5.8.3))(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)) + '@vitest/mocker': 3.1.1(msw@2.7.4(@types/node@22.14.1)(typescript@5.8.3))(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)) '@vitest/pretty-format': 3.1.1 '@vitest/runner': 3.1.1 '@vitest/snapshot': 3.1.1 @@ -13603,8 +13782,8 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2) - vite-node: 3.1.1(@types/node@22.14.1)(jiti@2.4.2) + vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0) + vite-node: 3.1.1(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 @@ -13632,10 +13811,10 @@ snapshots: dependencies: xml-name-validator: 5.0.0 - wagmi@2.14.16(@tanstack/query-core@5.74.0)(@tanstack/react-query@5.74.0(react@19.1.0))(@types/react@19.0.10)(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2): + wagmi@2.14.16(@tanstack/query-core@5.74.0)(@tanstack/react-query@5.74.0(react@19.1.0))(@types/react@19.0.10)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2): dependencies: '@tanstack/react-query': 5.74.0(react@19.1.0) - '@wagmi/connectors': 5.7.12(@types/react@19.0.10)(@wagmi/core@2.16.7(@tanstack/query-core@5.74.0)(@types/react@19.0.10)(react@19.1.0)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)))(bufferutil@4.0.9)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2) + '@wagmi/connectors': 5.7.12(@types/react@19.0.10)(@wagmi/core@2.16.7(@tanstack/query-core@5.74.0)(@types/react@19.0.10)(react@19.1.0)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)))(bufferutil@4.0.9)(encoding@0.1.13)(react@19.1.0)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2))(zod@3.24.2) '@wagmi/core': 2.16.7(@tanstack/query-core@5.74.0)(@types/react@19.0.10)(react@19.1.0)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.26.5(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.2)) react: 19.1.0 use-sync-external-store: 1.4.0(react@19.1.0)