diff --git a/apps/staking/src/api.ts b/apps/staking/src/api.ts index bf38e98ebf..8772f0e4f8 100644 --- a/apps/staking/src/api.ts +++ b/apps/staking/src/api.ts @@ -5,6 +5,7 @@ import { getAmountByTargetAndState, getCurrentEpoch, PositionState, + PythnetClient, PythStakingClient, type StakeAccountPositions, } from "@pythnetwork/staking-sdk"; @@ -43,6 +44,8 @@ type Data = { cooldown2: bigint; }; yieldRate: bigint; + m: bigint; + z: bigint; integrityStakingPublishers: { name: string | undefined; publicKey: PublicKey; @@ -96,18 +99,29 @@ export const getStakeAccount = async ( export const loadData = async ( client: PythStakingClient, + pythnetClient: PythnetClient, hermesClient: HermesClient, stakeAccount?: PublicKey | undefined, ): Promise => stakeAccount === undefined - ? loadDataNoStakeAccount(client, hermesClient) - : loadDataForStakeAccount(client, hermesClient, stakeAccount); + ? loadDataNoStakeAccount(client, pythnetClient, hermesClient) + : loadDataForStakeAccount( + client, + pythnetClient, + hermesClient, + stakeAccount, + ); const loadDataNoStakeAccount = async ( client: PythStakingClient, + pythnetClient: PythnetClient, hermesClient: HermesClient, ): Promise => { - const { publishers, ...baseInfo } = await loadBaseInfo(client, hermesClient); + const { publishers, ...baseInfo } = await loadBaseInfo( + client, + pythnetClient, + hermesClient, + ); return { ...baseInfo, @@ -128,6 +142,7 @@ const loadDataNoStakeAccount = async ( const loadDataForStakeAccount = async ( client: PythStakingClient, + pythnetClient: PythnetClient, hermesClient: HermesClient, stakeAccount: PublicKey, ): Promise => { @@ -138,7 +153,7 @@ const loadDataForStakeAccount = async ( claimableRewards, stakeAccountPositions, ] = await Promise.all([ - loadBaseInfo(client, hermesClient), + loadBaseInfo(client, pythnetClient, hermesClient), client.getStakeAccountCustody(stakeAccount), client.getUnlockSchedule(stakeAccount), client.getClaimableRewards(stakeAccount), @@ -197,36 +212,49 @@ const loadDataForStakeAccount = async ( const loadBaseInfo = async ( client: PythStakingClient, + pythnetClient: PythnetClient, hermesClient: HermesClient, ) => { - const [publishers, walletAmount, poolConfig, currentEpoch] = + const [publishers, walletAmount, poolConfig, currentEpoch, parameters] = await Promise.all([ - loadPublisherData(client, hermesClient), + loadPublisherData(client, pythnetClient, hermesClient), client.getOwnerPythBalance(), client.getPoolConfigAccount(), getCurrentEpoch(client.connection), + pythnetClient.getStakeCapParameters(), ]); - return { yieldRate: poolConfig.y, walletAmount, publishers, currentEpoch }; + return { + yieldRate: poolConfig.y, + walletAmount, + publishers, + currentEpoch, + m: parameters.m, + z: parameters.z, + }; }; const loadPublisherData = async ( client: PythStakingClient, + pythnetClient: PythnetClient, hermesClient: HermesClient, ) => { - const [poolData, publisherRankings, publisherCaps] = await Promise.all([ - client.getPoolDataAccount(), - getPublisherRankings(), - hermesClient.getLatestPublisherCaps({ - parsed: true, - }), - ]); + const [poolData, publisherRankings, publisherCaps, publisherNumberOfSymbols] = + await Promise.all([ + client.getPoolDataAccount(), + getPublisherRankings(), + hermesClient.getLatestPublisherCaps({ + parsed: true, + }), + pythnetClient.getPublisherNumberOfSymbols(), + ]); return extractPublisherData(poolData).map((publisher) => { const publisherPubkeyString = publisher.pubkey.toBase58(); const publisherRanking = publisherRankings.find( (ranking) => ranking.publisher === publisherPubkeyString, ); + const numberOfSymbols = publisherNumberOfSymbols[publisherPubkeyString]; const apyHistory = publisher.apyHistory.map(({ epoch, apy, selfApy }) => ({ date: epochToDate(epoch + 1n), apy, @@ -236,7 +264,7 @@ const loadPublisherData = async ( return { apyHistory, name: undefined, // TODO - numFeeds: publisherRanking?.numSymbols ?? 0, + numFeeds: numberOfSymbols ?? 0, poolCapacity: getPublisherCap(publisherCaps, publisher.pubkey), poolUtilization: publisher.totalDelegation, poolUtilizationDelta: publisher.totalDelegationDelta, diff --git a/apps/staking/src/components/Header/help-menu.tsx b/apps/staking/src/components/Header/help-menu.tsx index a617f05ab4..84705904a4 100644 --- a/apps/staking/src/components/Header/help-menu.tsx +++ b/apps/staking/src/components/Header/help-menu.tsx @@ -7,6 +7,8 @@ import { import { useState, useCallback } from "react"; import { MenuTrigger, Button } from "react-aria-components"; +import { ProgramParameters } from "./program-pramaeters"; +import { StateType, useApi } from "../../hooks/use-api"; import { GeneralFaq } from "../GeneralFaq"; import { GovernanceGuide } from "../GovernanceGuide"; import { Menu, MenuItem, Section, Separator } from "../Menu"; @@ -14,6 +16,7 @@ import { OracleIntegrityStakingGuide } from "../OracleIntegrityStakingGuide"; import { PublisherFaq } from "../PublisherFaq"; export const HelpMenu = () => { + const api = useApi(); const [faqOpen, setFaqOpen] = useState(false); const openFaq = useCallback(() => { setFaqOpen(true); @@ -34,6 +37,11 @@ export const HelpMenu = () => { setPublisherFaqOpen(true); }, [setPublisherFaqOpen]); + const [parametersOpen, setParametersOpen] = useState(false); + const openParameters = useCallback(() => { + setParametersOpen(true); + }, [setParametersOpen]); + return ( <> @@ -65,6 +73,17 @@ export const HelpMenu = () => { Data Publisher Guide + {(api.type === StateType.Loaded || + api.type === StateType.LoadedNoStakeAccount) && ( + <> + +
+ + Current Program Parameters + +
+ + )}
@@ -80,6 +99,14 @@ export const HelpMenu = () => { isOpen={publisherFaqOpen} onOpenChange={setPublisherFaqOpen} /> + {(api.type === StateType.Loaded || + api.type === StateType.LoadedNoStakeAccount) && ( + + )} ); }; diff --git a/apps/staking/src/components/Header/program-pramaeters.tsx b/apps/staking/src/components/Header/program-pramaeters.tsx new file mode 100644 index 0000000000..16fdbe652c --- /dev/null +++ b/apps/staking/src/components/Header/program-pramaeters.tsx @@ -0,0 +1,101 @@ +import type { ComponentProps, ReactNode } from "react"; + +import type { StateType, States } from "../../hooks/use-api"; +import { StateType as DataStateType, useData } from "../../hooks/use-data"; +import { tokensToString } from "../../tokens"; +import { Link } from "../Link"; +import { ModalDialog } from "../ModalDialog"; +import { Tokens } from "../Tokens"; + +const ONE_SECOND_IN_MS = 1000; +const ONE_MINUTE_IN_MS = 60 * ONE_SECOND_IN_MS; +const REFRESH_INTERVAL = 1 * ONE_MINUTE_IN_MS; + +type Props = Omit, "title" | "children"> & { + api: States[StateType.Loaded] | States[StateType.LoadedNoStakeAccount]; +}; + +export const ProgramParameters = ({ api, ...props }: Props) => { + const data = useData(api.dashboardDataCacheKey, api.loadData, { + refreshInterval: REFRESH_INTERVAL, + }); + + return ( + + See the current program parameters. For more details, see{" "} + + the docs + + + } + {...props} + > +
    + {data.data.m} + ) : ( + + ) + } + variable="M" + > + A constant parameter representing the target stake per symbol + + + ) + } + variable="Z" + > + A constant parameter to control cap contribution from symbols with a + low number of publishers + + + ) + } + variable="y" + > + The cap to the rate of rewards for any pool + +
+
+ ); +}; + +type ParameterProps = { + value: ReactNode; + variable: ReactNode; + children: ReactNode; +}; + +const Parameter = ({ variable, value, children }: ParameterProps) => ( +
  • +
    + {variable} +
    +
    {value}
    +

    {children}

    +
  • +); + +const Loading = () => ( +
    +); diff --git a/apps/staking/src/components/Root/index.tsx b/apps/staking/src/components/Root/index.tsx index 0216f9f311..c8e4544f3f 100644 --- a/apps/staking/src/components/Root/index.tsx +++ b/apps/staking/src/components/Root/index.tsx @@ -13,6 +13,7 @@ import { WALLETCONNECT_PROJECT_ID, MAINNET_RPC, HERMES_URL, + PYTHNET_RPC, } from "../../config/server"; import { ApiProvider } from "../../hooks/use-api"; import { LoggerProvider } from "../../hooks/use-logger"; @@ -79,7 +80,7 @@ const HtmlWithProviders = ({ lang, ...props }: HTMLProps) => ( walletConnectProjectId={WALLETCONNECT_PROJECT_ID} mainnetRpc={MAINNET_RPC} > - + diff --git a/apps/staking/src/config/server.ts b/apps/staking/src/config/server.ts index adafd096ca..081020a5fd 100644 --- a/apps/staking/src/config/server.ts +++ b/apps/staking/src/config/server.ts @@ -52,6 +52,7 @@ export const WALLETCONNECT_PROJECT_ID = demandInProduction( "WALLETCONNECT_PROJECT_ID", ); export const MAINNET_RPC = process.env.MAINNET_RPC; +export const PYTHNET_RPC = getOr("PYTHNET_RPC", "https://pythnet.rpcpool.com"); export const HERMES_URL = getOr("HERMES_URL", "https://hermes.pyth.network"); export const BLOCKED_REGIONS = transformOr("BLOCKED_REGIONS", fromCsv, []); export const IP_ALLOWLIST = transformOr("IP_ALLOWLIST", fromCsv, []); diff --git a/apps/staking/src/hooks/use-api.tsx b/apps/staking/src/hooks/use-api.tsx index f1fedfaaa6..c18621bd8e 100644 --- a/apps/staking/src/hooks/use-api.tsx +++ b/apps/staking/src/hooks/use-api.tsx @@ -1,10 +1,10 @@ "use client"; import { HermesClient } from "@pythnetwork/hermes-client"; -import { PythStakingClient } from "@pythnetwork/staking-sdk"; +import { PythnetClient, PythStakingClient } from "@pythnetwork/staking-sdk"; import { useLocalStorageValue } from "@react-hookz/web"; import { useConnection, useWallet } from "@solana/wallet-adapter-react"; -import type { PublicKey } from "@solana/web3.js"; +import { Connection, type PublicKey } from "@solana/web3.js"; import { type ComponentProps, createContext, useContext, useMemo } from "react"; import { useSWRConfig } from "swr"; @@ -43,6 +43,7 @@ const State = { [StateType.LoadedNoStakeAccount]: ( isMainnet: boolean, client: PythStakingClient, + pythnetClient: PythnetClient, hermesClient: HermesClient, onCreateAccount: (newAccount: PublicKey) => Promise, ) => ({ @@ -51,7 +52,7 @@ const State = { isMainnet ? "mainnet" : "devnet", client.wallet.publicKey.toBase58(), ], - loadData: () => api.loadData(client, hermesClient), + loadData: () => api.loadData(client, pythnetClient, hermesClient), deposit: async (amount: bigint) => { const account = await api.createStakeAccountAndDeposit(client, amount); return onCreateAccount(account); @@ -61,6 +62,7 @@ const State = { [StateType.Loaded]: ( isMainnet: boolean, client: PythStakingClient, + pythnetClient: PythnetClient, hermesClient: HermesClient, account: PublicKey, allAccounts: [PublicKey, ...PublicKey[]], @@ -92,7 +94,8 @@ const State = { selectAccount, dashboardDataCacheKey, - loadData: () => api.loadData(client, hermesClient, account), + loadData: () => + api.loadData(client, pythnetClient, hermesClient, account), claim: bindApi(api.claim), deposit: bindApi(api.deposit), @@ -126,21 +129,30 @@ type ApiProviderProps = Omit< ComponentProps, "value" > & { + pythnetRpcUrl: string; hermesUrl: string; }; -export const ApiProvider = ({ hermesUrl, ...props }: ApiProviderProps) => { - const state = useApiContext(hermesUrl); +export const ApiProvider = ({ + hermesUrl, + pythnetRpcUrl, + ...props +}: ApiProviderProps) => { + const state = useApiContext(hermesUrl, pythnetRpcUrl); return ; }; -const useApiContext = (hermesUrl: string) => { +const useApiContext = (hermesUrl: string, pythnetRpcUrl: string) => { const wallet = useWallet(); const { connection } = useConnection(); const { isMainnet } = useNetwork(); const { mutate } = useSWRConfig(); const hermesClient = useMemo(() => new HermesClient(hermesUrl), [hermesUrl]); + const pythnetClient = useMemo( + () => new PythnetClient(new Connection(pythnetRpcUrl)), + [pythnetRpcUrl], + ); const pythStakingClient = useMemo( () => wallet.publicKey && wallet.signAllTransactions && wallet.signTransaction @@ -209,6 +221,7 @@ const useApiContext = (hermesUrl: string) => { return State[StateType.Loaded]( isMainnet, pythStakingClient, + pythnetClient, hermesClient, selectedAccount ?? firstAccount, [firstAccount, ...otherAccounts], @@ -221,6 +234,7 @@ const useApiContext = (hermesUrl: string) => { return State[StateType.LoadedNoStakeAccount]( isMainnet, pythStakingClient, + pythnetClient, hermesClient, async (newAccount) => { await stakeAccounts.mutate([newAccount]); @@ -239,6 +253,7 @@ const useApiContext = (hermesUrl: string) => { wallet.disconnecting, wallet.connected, pythStakingClient, + pythnetClient, stakeAccounts, hermesClient, lastStakeAccount, diff --git a/governance/pyth_staking_sdk/idl/stake-caps-parameters.json b/governance/pyth_staking_sdk/idl/stake-caps-parameters.json new file mode 100644 index 0000000000..93c63b959d --- /dev/null +++ b/governance/pyth_staking_sdk/idl/stake-caps-parameters.json @@ -0,0 +1,76 @@ +{ + "address": "ujSFv8q8woXW5PUnby52PQyxYGUudxkrvgN6A631Qmm", + "metadata": { + "name": "stake_caps_parameters", + "version": "0.1.0", + "spec": "0.1.0", + "description": "Created with Anchor" + }, + "instructions": [ + { + "name": "set_parameters", + "discriminator": [218, 114, 41, 75, 208, 237, 97, 28], + "accounts": [ + { + "name": "signer", + "writable": true, + "signer": true + }, + { + "name": "parameters", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [112, 97, 114, 97, 109, 101, 116, 101, 114, 115] + } + ] + } + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + } + ], + "args": [ + { + "name": "parameters", + "type": { + "defined": { + "name": "Parameters" + } + } + } + ] + } + ], + "accounts": [ + { + "name": "Parameters", + "discriminator": [233, 2, 25, 109, 70, 228, 206, 228] + } + ], + "types": [ + { + "name": "Parameters", + "type": { + "kind": "struct", + "fields": [ + { + "name": "current_authority", + "type": "pubkey" + }, + { + "name": "m", + "type": "u64" + }, + { + "name": "z", + "type": "u64" + } + ] + } + } + ] +} diff --git a/governance/pyth_staking_sdk/package.json b/governance/pyth_staking_sdk/package.json index d023d26449..2b263f5971 100644 --- a/governance/pyth_staking_sdk/package.json +++ b/governance/pyth_staking_sdk/package.json @@ -38,6 +38,7 @@ }, "dependencies": { "@coral-xyz/anchor": "^0.30.1", + "@pythnetwork/client": "^2.22.0", "@pythnetwork/solana-utils": "workspace:*", "@solana/spl-governance": "^0.3.28", "@solana/spl-token": "^0.3.7", diff --git a/governance/pyth_staking_sdk/src/constants.ts b/governance/pyth_staking_sdk/src/constants.ts index 0b5249ef95..21ddf52b84 100644 --- a/governance/pyth_staking_sdk/src/constants.ts +++ b/governance/pyth_staking_sdk/src/constants.ts @@ -33,3 +33,7 @@ export const PUBLISHER_CAPS_PROGRAM_ADDRESS = new PublicKey( export const GOVERNANCE_ADDRESS = new PublicKey( "pytGY6tWRgGinSCvRLnSv4fHfBTMoiDGiCsesmHWM6U", ); + +export const STAKE_CAPS_PARAMETERS_PROGRAM_ADDRESS = new PublicKey( + "ujSFv8q8woXW5PUnby52PQyxYGUudxkrvgN6A631Qmm", +); diff --git a/governance/pyth_staking_sdk/src/index.ts b/governance/pyth_staking_sdk/src/index.ts index ed51339770..0606d1f3de 100644 --- a/governance/pyth_staking_sdk/src/index.ts +++ b/governance/pyth_staking_sdk/src/index.ts @@ -1,5 +1,6 @@ export * from "./pdas"; export * from "./pyth-staking-client"; +export * from "./pythnet-client"; export * from "./types"; export * from "./utils/apy"; export * from "./utils/clock"; diff --git a/governance/pyth_staking_sdk/src/pdas.ts b/governance/pyth_staking_sdk/src/pdas.ts index 29df5af889..518198d83a 100644 --- a/governance/pyth_staking_sdk/src/pdas.ts +++ b/governance/pyth_staking_sdk/src/pdas.ts @@ -2,6 +2,7 @@ import { PublicKey } from "@solana/web3.js"; import { INTEGRITY_POOL_PROGRAM_ADDRESS, + STAKE_CAPS_PARAMETERS_PROGRAM_ADDRESS, STAKING_PROGRAM_ADDRESS, } from "./constants"; @@ -73,3 +74,10 @@ export const getMaxVoterWeightRecordAddress = () => { STAKING_PROGRAM_ADDRESS, ); }; + +export const getStakeCapsParametersAddress = () => { + return PublicKey.findProgramAddressSync( + [Buffer.from("parameters")], + STAKE_CAPS_PARAMETERS_PROGRAM_ADDRESS, + ); +}; diff --git a/governance/pyth_staking_sdk/src/pythnet-client.ts b/governance/pyth_staking_sdk/src/pythnet-client.ts new file mode 100644 index 0000000000..ef704d7e0b --- /dev/null +++ b/governance/pyth_staking_sdk/src/pythnet-client.ts @@ -0,0 +1,55 @@ +import { AnchorProvider, Program } from "@coral-xyz/anchor"; +import { + AccountType, + getPythProgramKeyForCluster, + parseBaseData, + parsePriceData, +} from "@pythnetwork/client"; +import { Connection } from "@solana/web3.js"; + +import { getStakeCapsParametersAddress } from "./pdas"; +import { convertBNToBigInt } from "./utils/bn"; +import { DummyWallet } from "./utils/wallet"; +import * as StakeCapsParametersIdl from "../idl/stake-caps-parameters.json"; +import type { StakeCapsParameters } from "../types/stake-caps-parameters"; +export class PythnetClient { + connection: Connection; + provider: AnchorProvider; + stakeCapParametersProgram: Program; + + constructor(connection: Connection) { + this.connection = connection; + this.provider = new AnchorProvider(connection, DummyWallet); + this.stakeCapParametersProgram = new Program( + StakeCapsParametersIdl as StakeCapsParameters, + this.provider, + ); + } + + async getPublisherNumberOfSymbols() { + const publisherNumberOfSymbols: Record = {}; + const pythAccounts = await this.connection.getProgramAccounts( + getPythProgramKeyForCluster("pythnet"), + ); + for (const account of pythAccounts) { + const base = parseBaseData(account.account.data); + if (base?.type === AccountType.Price) { + const parsed = parsePriceData(account.account.data); + for (const priceComponent of parsed.priceComponents) { + publisherNumberOfSymbols[priceComponent.publisher.toBase58()] = + (publisherNumberOfSymbols[priceComponent.publisher.toBase58()] ?? + 0) + 1; + } + } + } + return publisherNumberOfSymbols; + } + + async getStakeCapParameters() { + const parameters = + await this.stakeCapParametersProgram.account.parameters.fetch( + getStakeCapsParametersAddress()[0], + ); + return convertBNToBigInt(parameters); + } +} diff --git a/governance/pyth_staking_sdk/types/stake-caps-parameters.ts b/governance/pyth_staking_sdk/types/stake-caps-parameters.ts new file mode 100644 index 0000000000..9c8bfa3e3c --- /dev/null +++ b/governance/pyth_staking_sdk/types/stake-caps-parameters.ts @@ -0,0 +1,82 @@ +/** + * Program IDL in camelCase format in order to be used in JS/TS. + * + * Note that this is only a type helper and is not the actual IDL. The original + * IDL can be found at `target/idl/stake_caps_parameters.json`. + */ +export type StakeCapsParameters = { + address: "ujSFv8q8woXW5PUnby52PQyxYGUudxkrvgN6A631Qmm"; + metadata: { + name: "stakeCapsParameters"; + version: "0.1.0"; + spec: "0.1.0"; + description: "Created with Anchor"; + }; + instructions: [ + { + name: "setParameters"; + discriminator: [218, 114, 41, 75, 208, 237, 97, 28]; + accounts: [ + { + name: "signer"; + writable: true; + signer: true; + }, + { + name: "parameters"; + writable: true; + pda: { + seeds: [ + { + kind: "const"; + value: [112, 97, 114, 97, 109, 101, 116, 101, 114, 115]; + }, + ]; + }; + }, + { + name: "systemProgram"; + address: "11111111111111111111111111111111"; + }, + ]; + args: [ + { + name: "parameters"; + type: { + defined: { + name: "parameters"; + }; + }; + }, + ]; + }, + ]; + accounts: [ + { + name: "parameters"; + discriminator: [233, 2, 25, 109, 70, 228, 206, 228]; + }, + ]; + types: [ + { + name: "parameters"; + type: { + kind: "struct"; + fields: [ + { + name: "currentAuthority"; + type: "pubkey"; + }, + { + name: "m"; + type: "u64"; + }, + { + name: "z"; + type: "u64"; + }, + ]; + }; + }, + ]; +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 794a9b42c4..d26c316168 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -359,13 +359,13 @@ importers: version: 0.9.23(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) '@solana/wallet-adapter-react': specifier: ^0.15.28 - version: 0.15.35(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@5.0.0)(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) + version: 0.15.35(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) '@solana/wallet-adapter-react-ui': specifier: ^0.9.27 - version: 0.9.35(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@5.0.0)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) + version: 0.9.35(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) '@solana/wallet-adapter-wallets': specifier: 0.19.10 - version: 0.19.10(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)))(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@5.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(utf-8-validate@5.0.10) + version: 0.19.10(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)))(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(utf-8-validate@5.0.10) '@solana/web3.js': specifier: 1.92.3 version: 1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -420,7 +420,7 @@ importers: version: 4.9.1 '@cprussin/eslint-config': specifier: ^3.0.0 - version: 3.0.0(@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.4))(jest@29.7.0(@types/node@22.2.0)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4)))(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4))(typescript@5.5.4) + version: 3.0.0(@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@8.3.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(@typescript-eslint/parser@8.3.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(jest@29.7.0(@types/node@22.2.0)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4)))(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4))(typescript@5.5.4) '@cprussin/jest-config': specifier: ^1.4.1 version: 1.4.1(@babel/core@7.24.7)(@jest/globals@29.7.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(@types/jest@29.5.12)(@types/node@22.2.0)(babel-jest@29.7.0(@babel/core@7.24.7))(bufferutil@4.0.8)(eslint@9.9.0(jiti@1.21.0))(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4))(utf-8-validate@5.0.10) @@ -718,6 +718,9 @@ importers: '@coral-xyz/anchor': specifier: ^0.30.1 version: 0.30.1(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@pythnetwork/client': + specifier: ^2.22.0 + version: 2.22.0(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) '@pythnetwork/solana-utils': specifier: workspace:* version: link:../../target_chains/solana/sdk/js/solana_utils @@ -745,7 +748,7 @@ importers: version: 3.0.1 '@solana/wallet-adapter-react': specifier: ^0.15.28 - version: 0.15.35(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) + version: 0.15.35(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@5.0.0)(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) '@types/jest': specifier: ^29.5.12 version: 29.5.12 @@ -24635,45 +24638,6 @@ snapshots: transitivePeerDependencies: - debug - '@cprussin/eslint-config@3.0.0(@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.4))(jest@29.7.0(@types/node@22.2.0)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4)))(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4))(typescript@5.5.4)': - dependencies: - '@babel/core': 7.24.7 - '@babel/eslint-parser': 7.24.7(@babel/core@7.24.7)(eslint@9.5.0) - '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.24.7) - '@eslint/compat': 1.1.0 - '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.5.0 - '@next/eslint-plugin-next': 14.2.3 - eslint: 9.5.0 - eslint-config-prettier: 9.1.0(eslint@9.5.0) - eslint-config-turbo: 1.13.4(eslint@9.5.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.4))(eslint@9.5.0) - eslint-plugin-jest: 28.6.0(@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(eslint@9.5.0)(jest@29.7.0(@types/node@22.2.0)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4)))(typescript@5.5.4) - eslint-plugin-jest-dom: 5.4.0(eslint@9.5.0) - eslint-plugin-jsonc: 2.16.0(eslint@9.5.0) - eslint-plugin-jsx-a11y: 6.8.0(eslint@9.5.0) - eslint-plugin-n: 17.9.0(eslint@9.5.0) - eslint-plugin-react: 7.34.2(eslint@9.5.0) - eslint-plugin-react-hooks: 4.6.2(eslint@9.5.0) - eslint-plugin-storybook: 0.8.0(eslint@9.5.0)(typescript@5.5.4) - eslint-plugin-tailwindcss: 3.17.3(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4))) - eslint-plugin-testing-library: 6.2.2(eslint@9.5.0)(typescript@5.5.4) - eslint-plugin-tsdoc: 0.3.0 - eslint-plugin-unicorn: 53.0.0(eslint@9.5.0) - globals: 15.6.0 - tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4)) - typescript-eslint: 7.13.1(eslint@9.5.0)(typescript@5.5.4) - transitivePeerDependencies: - - '@testing-library/dom' - - '@typescript-eslint/eslint-plugin' - - '@typescript-eslint/parser' - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - jest - - supports-color - - ts-node - - typescript - '@cprussin/eslint-config@3.0.0(@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@8.3.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(@typescript-eslint/parser@8.3.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(jest@29.7.0(@types/node@22.2.0)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4)))(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4))(typescript@5.5.4)': dependencies: '@babel/core': 7.24.7 @@ -24687,7 +24651,7 @@ snapshots: eslint-config-prettier: 9.1.0(eslint@9.5.0) eslint-config-turbo: 1.13.4(eslint@9.5.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@8.3.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(eslint@9.5.0) - eslint-plugin-jest: 28.6.0(@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@8.3.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(eslint@9.5.0)(jest@29.7.0(@types/node@22.2.0)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4)))(typescript@5.5.4) + eslint-plugin-jest: 28.6.0(@typescript-eslint/eslint-plugin@7.13.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(eslint@9.5.0)(jest@29.7.0(@types/node@22.2.0)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4)))(typescript@5.5.4) eslint-plugin-jest-dom: 5.4.0(eslint@9.5.0) eslint-plugin-jsonc: 2.16.0(eslint@9.5.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@9.5.0) @@ -24725,7 +24689,7 @@ snapshots: eslint: 9.5.0 eslint-config-prettier: 9.1.0(eslint@9.5.0) eslint-config-turbo: 1.13.4(eslint@9.5.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.4))(eslint@9.5.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@8.3.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(eslint@9.5.0) eslint-plugin-jest: 28.6.0(@typescript-eslint/eslint-plugin@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)))(typescript@5.5.2) eslint-plugin-jest-dom: 5.4.0(eslint@9.5.0) eslint-plugin-jsonc: 2.16.0(eslint@9.5.0) @@ -29664,12 +29628,6 @@ snapshots: crypto-js: 4.2.0 uuidv4: 6.2.13 - '@particle-network/solana-wallet@1.3.2(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@5.0.0)': - dependencies: - '@particle-network/auth': 1.3.1 - '@solana/web3.js': 1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - bs58: 5.0.0 - '@particle-network/solana-wallet@1.3.2(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)': dependencies: '@particle-network/auth': 1.3.1 @@ -32031,18 +31989,18 @@ snapshots: '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) '@solana/web3.js': 1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-base-ui@0.1.2(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@5.0.0)(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)': + '@solana/wallet-adapter-base-ui@0.1.2(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)(react-native@0.74.2(@babel/core@7.24.0)(@babel/preset-env@7.24.7(@babel/core@7.24.0))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)': dependencies: - '@solana/wallet-adapter-react': 0.15.35(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@5.0.0)(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) + '@solana/wallet-adapter-react': 0.15.35(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)(react-native@0.74.2(@babel/core@7.24.0)(@babel/preset-env@7.24.7(@babel/core@7.24.0))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) '@solana/web3.js': 1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) react: 18.3.1 transitivePeerDependencies: - bs58 - react-native - '@solana/wallet-adapter-base-ui@0.1.2(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)(react-native@0.74.2(@babel/core@7.24.0)(@babel/preset-env@7.24.7(@babel/core@7.24.0))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)': + '@solana/wallet-adapter-base-ui@0.1.2(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)': dependencies: - '@solana/wallet-adapter-react': 0.15.35(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)(react-native@0.74.2(@babel/core@7.24.0)(@babel/preset-env@7.24.7(@babel/core@7.24.0))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) + '@solana/wallet-adapter-react': 0.15.35(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) '@solana/web3.js': 1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) react: 18.3.1 transitivePeerDependencies: @@ -32196,14 +32154,6 @@ snapshots: '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) '@solana/web3.js': 1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-particle@0.1.12(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@5.0.0)': - dependencies: - '@particle-network/solana-wallet': 1.3.2(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@5.0.0) - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bs58 - '@solana/wallet-adapter-particle@0.1.12(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)': dependencies: '@particle-network/solana-wallet': 1.3.2(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0) @@ -32217,11 +32167,11 @@ snapshots: '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) '@solana/web3.js': 1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-react-ui@0.9.35(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@5.0.0)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)': + '@solana/wallet-adapter-react-ui@0.9.35(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.0)(@babel/preset-env@7.24.7(@babel/core@7.24.0))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)': dependencies: '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-base-ui': 0.1.2(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@5.0.0)(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) - '@solana/wallet-adapter-react': 0.15.35(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@5.0.0)(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) + '@solana/wallet-adapter-base-ui': 0.1.2(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)(react-native@0.74.2(@babel/core@7.24.0)(@babel/preset-env@7.24.7(@babel/core@7.24.0))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) + '@solana/wallet-adapter-react': 0.15.35(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)(react-native@0.74.2(@babel/core@7.24.0)(@babel/preset-env@7.24.7(@babel/core@7.24.0))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) '@solana/web3.js': 1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -32229,11 +32179,11 @@ snapshots: - bs58 - react-native - '@solana/wallet-adapter-react-ui@0.9.35(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.0)(@babel/preset-env@7.24.7(@babel/core@7.24.0))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)': + '@solana/wallet-adapter-react-ui@0.9.35(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1)': dependencies: '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-base-ui': 0.1.2(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)(react-native@0.74.2(@babel/core@7.24.0)(@babel/preset-env@7.24.7(@babel/core@7.24.0))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) - '@solana/wallet-adapter-react': 0.15.35(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)(react-native@0.74.2(@babel/core@7.24.0)(@babel/preset-env@7.24.7(@babel/core@7.24.0))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) + '@solana/wallet-adapter-base-ui': 0.1.2(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) + '@solana/wallet-adapter-react': 0.15.35(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10))(react@18.3.1) '@solana/web3.js': 1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -32498,7 +32448,7 @@ snapshots: - uWebSockets.js - utf-8-validate - '@solana/wallet-adapter-wallets@0.19.10(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)))(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@5.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(utf-8-validate@5.0.10)': + '@solana/wallet-adapter-wallets@0.19.10(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.23.1(react-native@0.74.2(@babel/core@7.24.7)(@babel/preset-env@7.24.7(@babel/core@7.24.7))(@types/react@18.3.3)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(utf-8-validate@5.0.10)))(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(utf-8-validate@5.0.10)': dependencies: '@solana/wallet-adapter-alpha': 0.1.10(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) '@solana/wallet-adapter-avana': 0.1.13(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) @@ -32526,7 +32476,7 @@ snapshots: '@solana/wallet-adapter-nightly': 0.1.16(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) '@solana/wallet-adapter-nufi': 0.1.17(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) '@solana/wallet-adapter-onto': 0.1.7(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/wallet-adapter-particle': 0.1.12(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@5.0.0) + '@solana/wallet-adapter-particle': 0.1.12(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10))(bs58@6.0.0) '@solana/wallet-adapter-phantom': 0.9.24(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) '@solana/wallet-adapter-safepal': 0.5.18(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) '@solana/wallet-adapter-saifu': 0.1.15(@solana/web3.js@1.92.3(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) @@ -34457,7 +34407,7 @@ snapshots: '@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.4))(eslint@9.5.0)(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.13.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4) + '@typescript-eslint/parser': 7.13.1(eslint@9.5.0)(typescript@5.5.4) '@typescript-eslint/scope-manager': 7.13.1 '@typescript-eslint/type-utils': 7.13.1(eslint@9.5.0)(typescript@5.5.4) '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.5.4) @@ -34472,25 +34422,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)': - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.13.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4) - '@typescript-eslint/scope-manager': 7.13.1 - '@typescript-eslint/type-utils': 7.13.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4) - '@typescript-eslint/utils': 7.13.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 7.13.1 - eslint: 9.9.0(jiti@1.21.0) - graphemer: 1.4.0 - ignore: 5.3.1 - natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 - transitivePeerDependencies: - - supports-color - optional: true - '@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@8.3.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.10.0 @@ -34639,14 +34570,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.13.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4)': + '@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.4)': dependencies: '@typescript-eslint/scope-manager': 7.13.1 '@typescript-eslint/types': 7.13.1 '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.5.4) '@typescript-eslint/visitor-keys': 7.13.1 debug: 4.3.6(supports-color@8.1.1) - eslint: 9.9.0(jiti@1.21.0) + eslint: 9.5.0 optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: @@ -40055,16 +39986,6 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@9.5.0): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 7.13.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4) - eslint: 9.5.0 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@8.3.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@9.5.0): dependencies: debug: 3.2.7 @@ -40082,33 +40003,6 @@ snapshots: eslint: 9.5.0 eslint-compat-utils: 0.5.1(eslint@9.5.0) - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.4))(eslint@9.5.0): - dependencies: - array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.5 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 9.5.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@9.5.0) - hasown: 2.0.2 - is-core-module: 2.13.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.0 - semver: 6.3.1 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 7.13.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - eslint-plugin-import@2.29.1(@typescript-eslint/parser@8.3.0(eslint@8.56.0)(typescript@5.4.5))(eslint@8.56.0): dependencies: array-includes: 3.1.8 @@ -40169,18 +40063,18 @@ snapshots: eslint: 9.5.0 requireindex: 1.2.0 - eslint-plugin-jest@28.6.0(@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(eslint@9.5.0)(jest@29.7.0(@types/node@22.2.0)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4)))(typescript@5.5.4): + eslint-plugin-jest@28.6.0(@typescript-eslint/eslint-plugin@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)))(typescript@5.5.2): dependencies: - '@typescript-eslint/utils': 7.7.1(eslint@9.5.0)(typescript@5.5.4) + '@typescript-eslint/utils': 7.7.1(eslint@9.5.0)(typescript@5.5.2) eslint: 9.5.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4) - jest: 29.7.0(@types/node@22.2.0)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4)) + '@typescript-eslint/eslint-plugin': 7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(typescript@5.5.2) + jest: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-jest@28.6.0(@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@8.3.0(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(eslint@9.5.0)(jest@29.7.0(@types/node@22.2.0)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4)))(typescript@5.5.4): + eslint-plugin-jest@28.6.0(@typescript-eslint/eslint-plugin@7.13.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4))(eslint@9.5.0)(jest@29.7.0(@types/node@22.2.0)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4)))(typescript@5.5.4): dependencies: '@typescript-eslint/utils': 7.7.1(eslint@9.5.0)(typescript@5.5.4) eslint: 9.5.0 @@ -40191,17 +40085,6 @@ snapshots: - supports-color - typescript - eslint-plugin-jest@28.6.0(@typescript-eslint/eslint-plugin@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(jest@29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)))(typescript@5.5.2): - dependencies: - '@typescript-eslint/utils': 7.7.1(eslint@9.5.0)(typescript@5.5.2) - eslint: 9.5.0 - optionalDependencies: - '@typescript-eslint/eslint-plugin': 7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(typescript@5.5.2) - jest: 29.7.0(@types/node@20.14.7)(ts-node@10.9.2(@types/node@20.14.7)(typescript@5.5.2)) - transitivePeerDependencies: - - supports-color - - typescript - eslint-plugin-jsonc@2.16.0(eslint@9.5.0): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) @@ -51547,7 +51430,7 @@ snapshots: typescript-eslint@7.13.1(eslint@9.5.0)(typescript@5.5.4): dependencies: '@typescript-eslint/eslint-plugin': 7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.4))(eslint@9.5.0)(typescript@5.5.4) - '@typescript-eslint/parser': 7.13.1(eslint@9.9.0(jiti@1.21.0))(typescript@5.5.4) + '@typescript-eslint/parser': 7.13.1(eslint@9.5.0)(typescript@5.5.4) '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.5.4) eslint: 9.5.0 optionalDependencies: