diff --git a/.husky/pre-commit b/.husky/pre-commit index d37daa075..6700f5128 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,2 @@ #!/bin/sh . "$(dirname "$0")/_/husky.sh" - -npx --no-install lint-staged diff --git a/Gemfile b/Gemfile index 1142b1b20..03d333b76 100644 --- a/Gemfile +++ b/Gemfile @@ -3,4 +3,4 @@ source 'https://rubygems.org' # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version ruby '>= 2.6.10' -gem 'cocoapods', '>= 1.11.3' +gem 'cocoapods', '>= 1.14.1' diff --git a/Gemfile.lock b/Gemfile.lock index eeb623191..ac6c19719 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,28 +3,34 @@ GEM specs: CFPropertyList (3.0.6) rexml - activesupport (6.1.7.2) + activesupport (7.1.2) + base64 + bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb i18n (>= 1.6, < 2) minitest (>= 5.1) + mutex_m tzinfo (~> 2.0) - zeitwerk (~> 2.3) - addressable (2.8.1) + addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) algoliasearch (1.27.5) httpclient (~> 2.8, >= 2.8.3) json (>= 1.5.1) atomos (0.1.3) + base64 (0.2.0) + bigdecimal (3.1.5) claide (1.1.0) - cocoapods (1.11.3) + cocoapods (1.14.3) addressable (~> 2.8) claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.11.3) + cocoapods-core (= 1.14.3) cocoapods-deintegrate (>= 1.0.3, < 2.0) - cocoapods-downloader (>= 1.4.0, < 2.0) + cocoapods-downloader (>= 2.1, < 3.0) cocoapods-plugins (>= 1.0.0, < 2.0) cocoapods-search (>= 1.0.0, < 2.0) - cocoapods-trunk (>= 1.4.0, < 2.0) + cocoapods-trunk (>= 1.6.0, < 2.0) cocoapods-try (>= 1.1.0, < 2.0) colored2 (~> 3.1) escape (~> 0.0.4) @@ -32,10 +38,10 @@ GEM gh_inspector (~> 1.0) molinillo (~> 0.8.0) nap (~> 1.0) - ruby-macho (>= 1.0, < 3.0) - xcodeproj (>= 1.21.0, < 2.0) - cocoapods-core (1.11.3) - activesupport (>= 5.0, < 7) + ruby-macho (>= 2.3.0, < 3.0) + xcodeproj (>= 1.23.0, < 2.0) + cocoapods-core (1.14.3) + activesupport (>= 5.0, < 8) addressable (~> 2.8) algoliasearch (~> 1.0) concurrent-ruby (~> 1.1) @@ -45,7 +51,7 @@ GEM public_suffix (~> 4.0) typhoeus (~> 1.0) cocoapods-deintegrate (1.0.5) - cocoapods-downloader (1.6.3) + cocoapods-downloader (2.1) cocoapods-plugins (1.0.0) nap cocoapods-search (1.0.1) @@ -54,44 +60,48 @@ GEM netrc (~> 0.11) cocoapods-try (1.2.0) colored2 (3.1.2) - concurrent-ruby (1.2.0) + concurrent-ruby (1.2.2) + connection_pool (2.4.1) + drb (2.2.0) + ruby2_keywords escape (0.0.4) ethon (0.16.0) ffi (>= 1.15.0) - ffi (1.15.5) + ffi (1.16.3) fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) httpclient (2.8.3) - i18n (1.12.0) + i18n (1.14.1) concurrent-ruby (~> 1.0) - json (2.6.3) - minitest (5.17.0) + json (2.7.1) + minitest (5.20.0) molinillo (0.8.0) + mutex_m (0.2.0) nanaimo (0.3.0) nap (1.1.0) netrc (0.11.0) public_suffix (4.0.7) - rexml (3.2.5) + rexml (3.2.6) ruby-macho (2.5.1) - typhoeus (1.4.0) + ruby2_keywords (0.0.5) + typhoeus (1.4.1) ethon (>= 0.9.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - xcodeproj (1.22.0) + xcodeproj (1.23.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) colored2 (~> 3.1) nanaimo (~> 0.3.0) rexml (~> 3.2.4) - zeitwerk (2.6.6) PLATFORMS ruby DEPENDENCIES - cocoapods (>= 1.11.3) + cocoapods (>= 1.14.1) RUBY VERSION ruby 2.7.5p203 diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 78c798197..ef2ea4a90 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -957,4 +957,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: ca81fc3ff2cc73a5ab3e1674a7d2281321c928fb -COCOAPODS: 1.12.1 +COCOAPODS: 1.14.3 diff --git a/package.json b/package.json index 81a1b6ec3..ddee8cc9a 100644 --- a/package.json +++ b/package.json @@ -21,47 +21,39 @@ "gen-types:all": "yarn gen-types", "prepare": "husky install" }, - "lint-staged": { - "*.{js,ts,tsx,md,html}": [ - "prettier --write ." - ], - "*.{js,ts,tsx}": [ - "eslint --quiet --fix" - ] - }, "dependencies": { "@babel/preset-typescript": "7.21.0", "@bonfida/spl-name-service": "^1.1.1", "@coral-xyz/anchor": "^0.28.0", "@gorhom/bottom-sheet": "4.6.0", "@gorhom/portal": "1.0.14", - "@helium/account-fetch-cache": "^0.6.13", - "@helium/account-fetch-cache-hooks": "^0.6.13", + "@helium/account-fetch-cache": "^0.6.14", + "@helium/account-fetch-cache-hooks": "^0.6.14", "@helium/address": "4.10.2", - "@helium/circuit-breaker-sdk": "^0.6.13", + "@helium/circuit-breaker-sdk": "^0.6.14", "@helium/crypto-react-native": "4.8.0", - "@helium/currency-utils": "^0.6.13", - "@helium/data-credits-sdk": "^0.6.13", - "@helium/distributor-oracle": "^0.6.13", - "@helium/fanout-sdk": "^0.6.13", - "@helium/helium-entity-manager-sdk": "^0.6.13", - "@helium/helium-react-hooks": "^0.6.13", - "@helium/helium-sub-daos-sdk": "^0.6.13", + "@helium/currency-utils": "^0.6.14", + "@helium/data-credits-sdk": "^0.6.14", + "@helium/distributor-oracle": "^0.6.14", + "@helium/fanout-sdk": "^0.6.14", + "@helium/helium-entity-manager-sdk": "^0.6.14", + "@helium/helium-react-hooks": "^0.6.14", + "@helium/helium-sub-daos-sdk": "^0.6.14", "@helium/http": "4.7.5", - "@helium/idls": "^0.6.13", - "@helium/lazy-distributor-sdk": "^0.6.13", + "@helium/idls": "^0.6.14", + "@helium/lazy-distributor-sdk": "^0.6.14", "@helium/modular-governance-hooks": "^0.0.8", "@helium/modular-governance-idls": "^0.0.8-next", "@helium/onboarding": "4.11.0", "@helium/organization-sdk": "^0.0.8", "@helium/proto-ble": "4.0.0", "@helium/react-native-sdk": "^3.0.4", - "@helium/spl-utils": "^0.6.13", + "@helium/spl-utils": "^0.6.14", "@helium/state-controller-sdk": "^0.0.8", "@helium/transactions": "4.8.1", - "@helium/treasury-management-sdk": "^0.6.13", - "@helium/voter-stake-registry-hooks": "^0.6.13", - "@helium/voter-stake-registry-sdk": "^0.6.13", + "@helium/treasury-management-sdk": "^0.6.14", + "@helium/voter-stake-registry-hooks": "^0.6.14", + "@helium/voter-stake-registry-sdk": "^0.6.14", "@helium/wallet-link": "4.11.0", "@jup-ag/api": "^6.0.6", "@ledgerhq/hw-app-solana": "7.0.13", @@ -251,7 +243,6 @@ "husky": "7.0.4", "jest": "29.2.1", "jetifier": "1.6.8", - "lint-staged": "11.2.6", "metro-react-native-babel-preset": "0.66.2", "prettier": "2.7.1", "react-native-cli-bump-version": "1.5.0", @@ -265,10 +256,10 @@ }, "resolutions": { "@types/react": "17", - "@helium/account-fetch-cache": "^0.6.13", - "@helium/account-fetch-cache-hooks": "^0.6.13", - "@helium/helium-react-hooks": "^0.6.13", - "@helium/voter-stake-registry-hooks": "^0.6.13", + "@helium/account-fetch-cache": "^0.6.14", + "@helium/account-fetch-cache-hooks": "^0.6.14", + "@helium/helium-react-hooks": "^0.6.14", + "@helium/voter-stake-registry-hooks": "^0.6.14", "@helium/modular-governance-hooks": "^0.0.8", "@helium/onboarding": "4.11.0" }, diff --git a/src/features/account/TokenListItem.tsx b/src/features/account/TokenListItem.tsx index 2080dd565..c7cb99496 100644 --- a/src/features/account/TokenListItem.tsx +++ b/src/features/account/TokenListItem.tsx @@ -174,11 +174,12 @@ export const TokenListGovItem = ({ mint }: { mint: PublicKey }) => { wallet && mint && connection && { - wallet: anchorProvider?.wallet.publicKey, + wallet, mint, provider: anchorProvider, }, - [mint, wallet, connection, anchorProvider], + // eslint-disable-next-line react-hooks/exhaustive-deps + [wallet?.toBase58(), mint.toBase58(), connection, anchorProvider], ) const { result, loading: loadingPositionKeys } = useAsync( diff --git a/src/hooks/useEnrichedTransactions.ts b/src/hooks/useEnrichedTransactions.ts index 186165039..a9675eb65 100644 --- a/src/hooks/useEnrichedTransactions.ts +++ b/src/hooks/useEnrichedTransactions.ts @@ -1,14 +1,15 @@ -import { useCallback, useEffect, useRef, useState } from 'react' +import AsyncStorage from '@react-native-async-storage/async-storage' import { ConfirmedSignatureInfo } from '@solana/web3.js' +import { useCallback, useEffect, useMemo, useRef, useState } from 'react' +import { useSolana } from '../solana/SolanaProvider' import { useAccountStorage } from '../storage/AccountStorageProvider' +import { useAppDispatch } from '../store/store' import { EnrichedTransaction } from '../types/solana' import { getAllTransactions, onLogs, removeAccountChangeListener, } from '../utils/solanaUtils' -import { useAppDispatch } from '../store/store' -import { useSolana } from '../solana/SolanaProvider' const useEnrichedTransactions = (): { transactions: (EnrichedTransaction | ConfirmedSignatureInfo)[] @@ -32,6 +33,20 @@ const useEnrichedTransactions = (): { const [hasNewTransactions, setHasNewTransactions] = useState(false) const accountSubscriptionId = useRef() const dispatch = useAppDispatch() + const firstSig = useMemo( + () => (transactions[0] ? transactions[0].signature : ''), + [transactions], + ) + + useEffect(() => { + if (transactions.length > 0) { + AsyncStorage.setItem( + `txs-${cluster}-${currentAccount?.solanaAddress}`, + // Limit of 50 stored tx to not blow storage limit + JSON.stringify(transactions.slice(0, 50)), + ) + } + }, [transactions, cluster, currentAccount]) // Reset new transactions when account changes. Maybe we add this all into a slice? useEffect(() => { @@ -57,6 +72,26 @@ const useEnrichedTransactions = (): { setLoading(false) setOnEndReached(false) }, [currentAccount, cluster, anchorProvider]) + const loadTransactionsFromStorage = useCallback(async () => { + try { + const storedTransactions = await AsyncStorage.getItem( + `txs-${cluster}-${currentAccount?.solanaAddress}`, + ) + if (storedTransactions && storedTransactions.length > 0) { + const parsedTransactions = JSON.parse(storedTransactions) + setTransactions(parsedTransactions) + setOldestTransaction( + parsedTransactions.length > 0 + ? parsedTransactions[parsedTransactions.length - 1].signature + : '', + ) + } else { + await refresh() + } + } catch (error) { + console.error('Error loading transactions from AsyncStorage:', error) + } + }, [refresh, cluster, currentAccount]) const fetchMore = useCallback(async () => { if ( @@ -96,13 +131,42 @@ const useEnrichedTransactions = (): { anchorProvider, ]) + const fetchNew = useCallback(async () => { + if (!currentAccount?.solanaAddress || onEndReached || !anchorProvider) { + return + } + + const fetchTransactions = await getAllTransactions( + currentAccount?.solanaAddress, + anchorProvider, + cluster, + undefined, + firstSig, + ) + + if (fetchTransactions.length !== 0) { + setTransactions((t) => [...fetchTransactions, ...t]) + setOldestTransaction( + fetchTransactions.length > 0 + ? fetchTransactions[fetchTransactions.length - 1].signature + : '', + ) + } + }, [ + currentAccount?.solanaAddress, + onEndReached, + anchorProvider, + cluster, + firstSig, + ]) + useEffect(() => { if (!currentAccount?.solanaAddress || !anchorProvider) return - refresh() + loadTransactionsFromStorage() const subId = onLogs(anchorProvider, currentAccount?.solanaAddress, () => { - refresh() + fetchNew() setHasNewTransactions(true) }) @@ -110,7 +174,13 @@ const useEnrichedTransactions = (): { removeAccountChangeListener(anchorProvider, accountSubscriptionId.current) } accountSubscriptionId.current = subId - }, [anchorProvider, currentAccount, refresh, dispatch]) + }, [ + anchorProvider, + currentAccount, + dispatch, + loadTransactionsFromStorage, + fetchNew, + ]) const resetNewTransactions = useCallback(() => { setHasNewTransactions(false) diff --git a/src/solana/AsyncAccountCache.ts b/src/solana/AsyncAccountCache.ts new file mode 100644 index 000000000..b522b3963 --- /dev/null +++ b/src/solana/AsyncAccountCache.ts @@ -0,0 +1,141 @@ +import { AccountCache, ParsedAccountBase } from '@helium/account-fetch-cache' +import AsyncStorage from '@react-native-async-storage/async-storage' +import { AccountInfo, PublicKey } from '@solana/web3.js' + +type SerializedAccountInfo = { + /** `true` if this account's data contains a loaded program */ + executable: boolean + /** Identifier of the program that owns the account */ + owner: string + /** Number of lamports assigned to the account */ + lamports: number + /** Optional data assigned to the account */ + data: string + /** Optional rent epoch info for account */ + rentEpoch?: number +} + +function deserialize( + key: string, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + value: any, +): ParsedAccountBase | undefined { + if (value) { + return { + pubkey: new PublicKey(key), + account: { + ...value, + owner: new PublicKey(value.owner), + data: Buffer.from(value.data, 'base64'), + } as AccountInfo, + } + } +} + +function serialize(account: AccountInfo): SerializedAccountInfo { + return { + ...account, + owner: account.owner.toBase58(), + data: account.data.toString('base64'), + } +} + +const TWO_MB = 2 * 1024 * 1024 + +export class AsyncAccountCache implements AccountCache { + cacheKey: string + + cache = new Map | null>() + + private cacheOrder: Map = new Map() // Maintain the order of keys based on usage + + debouncedSet: () => void + + constructor(cacheKey: string) { + this.cacheKey = cacheKey + this.debouncedSet = debounce(this.setAsyncStorage, 10000) + } + + keys(): string[] { + return [...this.cache.keys()] + } + + async init(): Promise { + const cachedData = await AsyncStorage.getItem(this.cacheKey) + if (cachedData) { + const parsedCache = JSON.parse(cachedData) + this.cache = new Map | null>( + parsedCache.map(([key, value]: unknown[]) => [ + key, + deserialize(key as string, value), + ]), + ) + } + } + + delete(key: string): void { + this.cache.delete(key) + this.debouncedSet() + } + + has(key: string): boolean { + return this.cache.has(key) + } + + get(key: string): ParsedAccountBase | null | undefined { + const value = this.cache.get(key) + if (value) { + // Update the cache order based on key usage + this.cacheOrder.set(key, Date.now()) // Update the timestamp for the key + } + return value + } + + set(key: string, value: ParsedAccountBase | null): void { + this.cache.set(key, value) + this.debouncedSet() + } + + private setAsyncStorage = (): void => { + // Make sure we purge the least recently used items + const orderedCache = [...this.cache.keys()] + .sort( + (a, b) => (this.cacheOrder.get(b) || 0) - (this.cacheOrder.get(a) || 0), + ) // Sort by timestamp + .map((key) => [key, this.cache.get(key)]) + let serializedCache = Array.from(orderedCache).map(([key, value]) => [ + key, + value ? serialize((value as ParsedAccountBase).account) : null, + ]) + + let serializedData = JSON.stringify(serializedCache) + let dataSizeInBytes = Buffer.byteLength(serializedData) + + // Limit 2mb per async storage item + // Track a maximum of 200 accounts to save from too many calls on load + while (dataSizeInBytes > TWO_MB || serializedCache.length > 200) { + // estimate num accounts to delete + const bytesPerAccount = dataSizeInBytes / serializedCache.length + const bytesOver = dataSizeInBytes - TWO_MB + const numToDelete = Math.ceil(bytesOver / bytesPerAccount) + serializedCache = serializedCache.slice( + 0, + Math.min(200, serializedCache.length - numToDelete), + ) + serializedData = JSON.stringify(serializedCache) + dataSizeInBytes = Buffer.byteLength(serializedData) + } + + AsyncStorage.setItem(this.cacheKey, serializedData) + } +} + +function debounce(func: any, wait: number) { + let timeout: NodeJS.Timeout + return function (this: any, ...args: any[]) { + // eslint-disable-next-line @typescript-eslint/no-this-alias + const context = this + clearTimeout(timeout) + timeout = setTimeout(() => func.apply(context, args), wait) + } +} diff --git a/src/solana/SolanaProvider.tsx b/src/solana/SolanaProvider.tsx index e8a744f46..4b1a59070 100644 --- a/src/solana/SolanaProvider.tsx +++ b/src/solana/SolanaProvider.tsx @@ -34,6 +34,7 @@ import { RootState } from '../store/rootReducer' import { appSlice } from '../store/slices/appSlice' import { useAppDispatch } from '../store/store' import { getConnection, isVersionedTransaction } from '../utils/solanaUtils' +import { AsyncAccountCache } from './AsyncAccountCache' const useSolanaHook = () => { const { currentAccount } = useAccountStorage() @@ -180,16 +181,39 @@ const useSolanaHook = () => { }) }, [connection, currentAccount, secureAcct, signTxn]) - const cache = useMemo(() => { - if (!connection) return + const { result: cache } = useAsync(async () => { + if (!connection || !cluster) return + const asyncCache = new AsyncAccountCache(`accounts-${cluster}`) + try { + await asyncCache.init() + } catch (e) { + console.error('Failed to init cache', e) + } const c = new AccountFetchCache({ connection, delay: 100, commitment: 'confirmed', missingRefetchDelay: 60 * 1000, extendConnection: true, + cache: asyncCache, }) + // Async fetch the cache accounts to check for changes and update account fetch cache + ;(async () => { + const keys = asyncCache.keys().map((k) => new PublicKey(k)) + const accts = await connection.getMultipleAccountsInfo(keys) + accts.forEach((acc, index) => { + if (acc) { + const key = keys[index] + if (!c.get(key)?.account.data.equals(acc.data)) { + c.updateCacheAndRaiseUpdated(key.toBase58(), { + pubkey: key, + account: acc, + }) + } + } + }) + })() // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore if (!connection.wrapped) { @@ -223,7 +247,7 @@ const useSolanaHook = () => { } return c - }, [connection]) + }, [connection, cluster]) useEffect(() => { // Don't sub to hnt or dc they change a bunch cache?.statics.add(HNT_MINT.toBase58()) diff --git a/src/utils/solanaUtils.ts b/src/utils/solanaUtils.ts index 348a77068..8c080cd10 100644 --- a/src/utils/solanaUtils.ts +++ b/src/utils/solanaUtils.ts @@ -1297,6 +1297,7 @@ export const getAllTransactions = async ( anchorProvider: AnchorProvider, cluster: Cluster, oldestTransaction?: string, + newestTransaction?: string, ): Promise<(EnrichedTransaction | ConfirmedSignatureInfo)[]> => { const pubKey = new PublicKey(address) const conn = anchorProvider.connection @@ -1312,6 +1313,7 @@ export const getAllTransactions = async ( const txList = await conn.getSignaturesForAddress(pubKey, { before: oldestTransaction, limit: 100, + until: newestTransaction, }) const sigList = txList.map((tx) => tx.signature) diff --git a/yarn.lock b/yarn.lock index 83a7b5d5b..0b67a3eb8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2369,19 +2369,19 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@helium/account-fetch-cache-hooks@^0.5.0", "@helium/account-fetch-cache-hooks@^0.6.13": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@helium/account-fetch-cache-hooks/-/account-fetch-cache-hooks-0.6.13.tgz#9cf7d6ee3ae1e516fb6c33c6456e93e40a6dd171" - integrity sha512-pwYk9G7jsEo9svypD9r7GbDld9t5Litnu/7zt9TyDSSelvUmlesBfszcRdMa5ACGw+4kLnpdwA1yXhAxFtocYw== +"@helium/account-fetch-cache-hooks@^0.5.0", "@helium/account-fetch-cache-hooks@^0.6.14": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@helium/account-fetch-cache-hooks/-/account-fetch-cache-hooks-0.6.14.tgz#f8cf4fcc6bd826e37070956d5ee3dfe16cdf1034" + integrity sha512-QHF5fUNM/PxQbda9uJGahoYVumqOJajNF3FPd8MeIf1K3pKRKZfdaYJvRqRV2mhle/htzfycK8bJnsIR/ls5+g== dependencies: - "@helium/account-fetch-cache" "^0.6.13" + "@helium/account-fetch-cache" "^0.6.14" "@solana/web3.js" "^1.78.4" react-async-hook "^4.0.0" -"@helium/account-fetch-cache@^0.5.0", "@helium/account-fetch-cache@^0.6.11", "@helium/account-fetch-cache@^0.6.13": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@helium/account-fetch-cache/-/account-fetch-cache-0.6.13.tgz#c3468b67f75e00e94effbd5b5b8bc60849fe983f" - integrity sha512-F7xs/8fRSuTK/QiWBeSTNXPtgLumgSqaW3VHBVUDWVa6ATp4cqTSquP8VRO8HbH1rDKhmI6TbbusLR+uQGmjXg== +"@helium/account-fetch-cache@^0.5.0", "@helium/account-fetch-cache@^0.6.11", "@helium/account-fetch-cache@^0.6.14": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@helium/account-fetch-cache/-/account-fetch-cache-0.6.14.tgz#7ce3330042460878181f27cc14de8399f60d021c" + integrity sha512-hANH/PudH0HyiCB94GbXxNh2uzBN+exnmtzKix/Q29rkAqme5hc8BLh4HZwluhMkhHusKDjkC71P5uXRd3tmaA== dependencies: "@solana/web3.js" "^1.78.4" @@ -2411,7 +2411,7 @@ "@solana/spl-token" "^0.3.8" "@solana/web3.js" "^1.78.4" -"@helium/anchor-resolvers@^0.6.11", "@helium/anchor-resolvers@^0.6.13": +"@helium/anchor-resolvers@^0.6.11": version "0.6.13" resolved "https://registry.yarnpkg.com/@helium/anchor-resolvers/-/anchor-resolvers-0.6.13.tgz#cb086cc5bfd20a3aac75e0f0c2f1fcd9e34a825c" integrity sha512-G/2DUPp9oiY5CVHpg41+A0PR63qoBh5bon93w+acqSFoqfp26Cd49m9cKvCrZDX0Ug8hjgiGPpCAtUfMhTzVDw== @@ -2419,6 +2419,14 @@ "@solana/spl-token" "^0.3.8" "@solana/web3.js" "^1.78.4" +"@helium/anchor-resolvers@^0.6.14": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@helium/anchor-resolvers/-/anchor-resolvers-0.6.14.tgz#717a16d7811bea7681d061a1242a2b4d27e62cff" + integrity sha512-5KGqS1rR9mSqaQUZXoAagQ6oJi5pqdewFJtHCBrj2IpKpOsKn6jqHC6PfDY8uCnWpskDxSYzI8Zj4Nu2QJ3lig== + dependencies: + "@solana/spl-token" "^0.3.8" + "@solana/web3.js" "^1.78.4" + "@helium/anchor-resolvers@^0.6.6": version "0.6.6" resolved "https://registry.yarnpkg.com/@helium/anchor-resolvers/-/anchor-resolvers-0.6.6.tgz#41451cc3eaf52d322e770ae3e2cf3291024c25f2" @@ -2439,14 +2447,14 @@ bn.js "^5.2.0" bs58 "^4.0.1" -"@helium/circuit-breaker-sdk@^0.6.13": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@helium/circuit-breaker-sdk/-/circuit-breaker-sdk-0.6.13.tgz#62832078650475129af2b932af0afb903bbd9159" - integrity sha512-5wtyvQ45fr41M0Tz+17hjNrmNwNsJbIJPkeubbAr9uT+yxlMzbrL2ZGnyak0TeP7kP8AEx00jQ0Yefk0gMpUUQ== +"@helium/circuit-breaker-sdk@^0.6.14": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@helium/circuit-breaker-sdk/-/circuit-breaker-sdk-0.6.14.tgz#180f1f9b33d1a11dfffca5f0a362e2be0bbc5084" + integrity sha512-4VGWqfNKhxaUxQBGPjz2mNXLrZMDSCaVgSvfpILXPZJnODaXD6sQOkfiYHmTeAC0WjpEhZS3kM2P8vCSV51Vvw== dependencies: "@coral-xyz/anchor" "^0.28.0" - "@helium/anchor-resolvers" "^0.6.13" - "@helium/idls" "^0.6.13" + "@helium/anchor-resolvers" "^0.6.14" + "@helium/idls" "^0.6.14" bn.js "^5.2.0" bs58 "^4.0.1" @@ -2480,10 +2488,10 @@ "@solana/spl-token" "^0.3.7" "@solana/web3.js" "^1.73.0" -"@helium/currency-utils@^0.6.13": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@helium/currency-utils/-/currency-utils-0.6.13.tgz#6706a8e0c1be5e7ff9a27d13b1a85e35d9b4b5fb" - integrity sha512-blPd8eJKKw+vQQtcKd+ttq9mS3bxWAlcuCXqM245aG4sd1+T0BBV/n89j+gJlslsGLIuzJTGzou3lBdjKMIRKw== +"@helium/currency-utils@^0.6.14": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@helium/currency-utils/-/currency-utils-0.6.14.tgz#b5fd7358c3aa3881c3725f54951eee3283619b17" + integrity sha512-W5w+boZT9GqtN7b0miqdytonik6avx1Gf0g3hzxN7kynTgWc+FUiElezZ2GoT5uBQxg5VUYeKEmAOd38/3iCsw== dependencies: "@pythnetwork/client" "^2.12.0" "@solana/spl-token" "^0.3.8" @@ -2520,16 +2528,16 @@ bs58 "^4.0.1" crypto-js "^4.1.1" -"@helium/data-credits-sdk@^0.6.13": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@helium/data-credits-sdk/-/data-credits-sdk-0.6.13.tgz#06c5a47f7719688eb307c893ca71d01cf0d111a7" - integrity sha512-XPhp+d+tWy4bfaeIGzhLhrted4GKgnKHTn8CJE5tjNko7x/AREiajSOrtaU5eY2NEF+SUMblmrMQZ2GYC+IdAg== +"@helium/data-credits-sdk@^0.6.14": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@helium/data-credits-sdk/-/data-credits-sdk-0.6.14.tgz#ad701a3de800d59d11050a26ea912f7cec74f066" + integrity sha512-7pjO6j8NtLpOsaFLD0GKenjTu7TbFiYYl9TjFqMdUfDu507karogwG3MyKEPSRY9MHMrxD5SZlA6ZM7b/A5Fsg== dependencies: "@coral-xyz/anchor" "^0.28.0" - "@helium/anchor-resolvers" "^0.6.13" - "@helium/circuit-breaker-sdk" "^0.6.13" - "@helium/helium-sub-daos-sdk" "^0.6.13" - "@helium/idls" "^0.6.13" + "@helium/anchor-resolvers" "^0.6.14" + "@helium/circuit-breaker-sdk" "^0.6.14" + "@helium/helium-sub-daos-sdk" "^0.6.14" + "@helium/idls" "^0.6.14" bn.js "^5.2.0" bs58 "^4.0.1" crypto-js "^4.1.1" @@ -2548,21 +2556,21 @@ bs58 "^4.0.1" crypto-js "^4.1.1" -"@helium/distributor-oracle@^0.6.13": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@helium/distributor-oracle/-/distributor-oracle-0.6.13.tgz#5d2a3d53a55f942bfe136092832e38a2a546d2c9" - integrity sha512-rKpBEu0ZdR1wPBcdRQBO/3WJH/DmP12OwupWsv6okAGNLW1MrwRWaDh1SDfKBqiBWQ4Nf1THD1VQ08aw3BtLbg== +"@helium/distributor-oracle@^0.6.14": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@helium/distributor-oracle/-/distributor-oracle-0.6.14.tgz#8e0e00f237ef8783515a86fdf48b94c28304e655" + integrity sha512-N+PO+8XJmITWNEbZGe67d4+1/UFVZrnkjoahooTVJPDJk9OWk4hRuMeAXf2BaZu8H58uwipk3uT2eS/w7EfWdA== dependencies: "@coral-xyz/anchor" "^0.28.0" "@fastify/cors" "^8.1.1" - "@helium/account-fetch-cache" "^0.6.13" + "@helium/account-fetch-cache" "^0.6.14" "@helium/address" "^4.10.2" - "@helium/helium-entity-manager-sdk" "^0.6.13" - "@helium/helium-sub-daos-sdk" "^0.6.13" - "@helium/idls" "^0.6.13" - "@helium/lazy-distributor-sdk" "^0.6.13" - "@helium/rewards-oracle-sdk" "^0.6.13" - "@helium/spl-utils" "^0.6.13" + "@helium/helium-entity-manager-sdk" "^0.6.14" + "@helium/helium-sub-daos-sdk" "^0.6.14" + "@helium/idls" "^0.6.14" + "@helium/lazy-distributor-sdk" "^0.6.14" + "@helium/rewards-oracle-sdk" "^0.6.14" + "@helium/spl-utils" "^0.6.14" "@metaplex-foundation/mpl-bubblegum" "^0.7.0" "@solana/spl-token" "^0.3.8" "@types/sequelize" "^4.28.14" @@ -2579,14 +2587,14 @@ sequelize "^6.28.0" typescript-collections "^1.3.3" -"@helium/fanout-sdk@^0.6.13": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@helium/fanout-sdk/-/fanout-sdk-0.6.13.tgz#065a56d86bdf54d6ecf4a335c065e3a69319d2b4" - integrity sha512-YcseSqRo2nB1mCxlvp1uVm7KUu39tJIWwavLhJ3ZH2MgvmnRSArYKGmLolhgIb28m8H76A/rUxYrhSEfwwaIKA== +"@helium/fanout-sdk@^0.6.14": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@helium/fanout-sdk/-/fanout-sdk-0.6.14.tgz#ac210bc29a7f00696948902d3cfba68dae140da2" + integrity sha512-Y1HyDvcSC/29tE7qhEFGIRUvhcDa9pgCxlYp1/xOEz5ZIpqYk490S+MbtyXg9HxaFhLnbPY637KHBRIWRBOkOQ== dependencies: "@coral-xyz/anchor" "^0.28.0" - "@helium/anchor-resolvers" "^0.6.13" - "@helium/idls" "^0.6.13" + "@helium/anchor-resolvers" "^0.6.14" + "@helium/idls" "^0.6.14" bn.js "^5.2.0" bs58 "^4.0.1" @@ -2609,18 +2617,18 @@ crypto-js "^4.1.1" js-sha256 "^0.9.0" -"@helium/helium-entity-manager-sdk@^0.6.13": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@helium/helium-entity-manager-sdk/-/helium-entity-manager-sdk-0.6.13.tgz#cfb936729574fd64280ff453cd0c8c6aee3e384a" - integrity sha512-nGuXEQM8IIMVYII2jPAck2qCYQCJMt8kcJSkh1vBnfSkzjtgUCSbdq0JEvRqYwVdLFj9zVXYihn7g2y6fnR9iA== +"@helium/helium-entity-manager-sdk@^0.6.14": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@helium/helium-entity-manager-sdk/-/helium-entity-manager-sdk-0.6.14.tgz#5240325fff5247bae8981326bbc206a199df3d31" + integrity sha512-44ppUDT0uRKNleW9LZLM4cgCzGAWIYCwiyj3t3y7AeW2iIv9OElIjjkmmqeZkI/zbGqMbBS3C7q+bNlENpPHMQ== dependencies: "@coral-xyz/anchor" "^0.28.0" "@helium/address" "^4.10.2" - "@helium/anchor-resolvers" "^0.6.13" - "@helium/helium-sub-daos-sdk" "^0.6.13" - "@helium/idls" "^0.6.13" - "@helium/no-emit-sdk" "^0.6.13" - "@helium/spl-utils" "^0.6.13" + "@helium/anchor-resolvers" "^0.6.14" + "@helium/helium-sub-daos-sdk" "^0.6.14" + "@helium/idls" "^0.6.14" + "@helium/no-emit-sdk" "^0.6.14" + "@helium/spl-utils" "^0.6.14" bn.js "^5.2.0" bs58 "^4.0.1" crypto-js "^4.1.1" @@ -2643,14 +2651,14 @@ crypto-js "^4.1.1" js-sha256 "^0.9.0" -"@helium/helium-react-hooks@^0.5.0", "@helium/helium-react-hooks@^0.6.13": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@helium/helium-react-hooks/-/helium-react-hooks-0.6.13.tgz#aed15a94a8c2d7d515a30a32825353425faf6cea" - integrity sha512-B4YAMkYp2zZOvGhmLOVDSFPiYHEmsgNkzAqg0jka/CLa/JPEJBW2meEdviwjs0MLACGrWJa+Hmv5fVKAuRDkCA== +"@helium/helium-react-hooks@^0.5.0", "@helium/helium-react-hooks@^0.6.14": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@helium/helium-react-hooks/-/helium-react-hooks-0.6.14.tgz#1a5171f22e4571270bf656fa37480eee4c87b411" + integrity sha512-lGB4PypRgJFOmLU8c2e2PLbYb+AjKnf2Q2/1+39IbZOXXAjyAUv3y3amX3Um7rrmhxVZWFBjGLmvcIEou7pqzg== dependencies: "@coral-xyz/anchor" "^0.28.0" - "@helium/account-fetch-cache" "^0.6.13" - "@helium/account-fetch-cache-hooks" "^0.6.13" + "@helium/account-fetch-cache" "^0.6.14" + "@helium/account-fetch-cache-hooks" "^0.6.14" "@solana/spl-token" "^0.3.8" "@solana/web3.js" "^1.78.4" bs58 "^4.0.1" @@ -2670,16 +2678,16 @@ bn.js "^5.2.0" bs58 "^4.0.1" -"@helium/helium-sub-daos-sdk@^0.6.13": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@helium/helium-sub-daos-sdk/-/helium-sub-daos-sdk-0.6.13.tgz#b5842fc91c42b40e537b6b11d107ca5c76541e28" - integrity sha512-uhbCQGtndqEz0DM0e0mAaZrS70xxf55HT60n12H9htFD5xoQXZNFha8vLM9uRUOoor+GQ05VlDlc/m11/EvsGA== +"@helium/helium-sub-daos-sdk@^0.6.14": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@helium/helium-sub-daos-sdk/-/helium-sub-daos-sdk-0.6.14.tgz#209bbd3cf2f867f946cf04ffa4f2e2e7f8b812bd" + integrity sha512-g22rIiiqwLKZ3J7NQKIBtOMc2YUXXTDReSKeexhT0dYeP1wadH8xLTu6oYXkltTMhQTbrW/k1oH0nWVQ08CGyA== dependencies: "@coral-xyz/anchor" "^0.28.0" - "@helium/anchor-resolvers" "^0.6.13" - "@helium/circuit-breaker-sdk" "^0.6.13" - "@helium/treasury-management-sdk" "^0.6.13" - "@helium/voter-stake-registry-sdk" "^0.6.13" + "@helium/anchor-resolvers" "^0.6.14" + "@helium/circuit-breaker-sdk" "^0.6.14" + "@helium/treasury-management-sdk" "^0.6.14" + "@helium/voter-stake-registry-sdk" "^0.6.14" bn.js "^5.2.0" bs58 "^4.0.1" @@ -2768,10 +2776,10 @@ borsh "^0.7.0" bs58 "^4.0.1" -"@helium/idls@^0.6.13": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@helium/idls/-/idls-0.6.13.tgz#591b3b4407a4ddb1636f645a21d16502290a7987" - integrity sha512-fqpVN7XtXrXhyo6IkbWVS4Bt6rbpo5SdGs2Zm8mofUgc5P6HYgKcN9l58xfBTHUDD/Jqak882PLH8YHnb9L3Rg== +"@helium/idls@^0.6.14": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@helium/idls/-/idls-0.6.14.tgz#6894b4bdaac11bc5f85f4e1d3afc6c562de0a748" + integrity sha512-VbJFjb78fYjBOASNYryGAbAjtgRND5vi4TCNBBYXPy3VoV7CiBWD1KU9+Rx2gl4qNsdQ8YYQfRubB3usmfTezQ== dependencies: "@coral-xyz/anchor" "^0.28.0" "@solana/web3.js" "^1.78.4" @@ -2790,14 +2798,14 @@ borsh "^0.7.0" bs58 "^4.0.1" -"@helium/lazy-distributor-sdk@^0.6.13": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@helium/lazy-distributor-sdk/-/lazy-distributor-sdk-0.6.13.tgz#dffb03b73f2ac27b18786f1da675f68bd151415b" - integrity sha512-stAhj6d0iS2tpeLrsrWfT57aSdFArrKWDNIMR85Cfznd6cqMaJzoJB1eMcp19t9lcktnG4+irqDeuwFEWrGmMQ== +"@helium/lazy-distributor-sdk@^0.6.14": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@helium/lazy-distributor-sdk/-/lazy-distributor-sdk-0.6.14.tgz#67ee7837b88cfcf384217e17d499946e3adb4b01" + integrity sha512-72rpHjdNI8fX+W2cijIP/yj7U4sJLjj42ykKG+FJuaBPUEyyyJWfDsU6q2H9FUc7gGtzTrYQnJZzWARhVDZwtA== dependencies: "@coral-xyz/anchor" "^0.28.0" - "@helium/anchor-resolvers" "^0.6.13" - "@helium/circuit-breaker-sdk" "^0.6.13" + "@helium/anchor-resolvers" "^0.6.14" + "@helium/circuit-breaker-sdk" "^0.6.14" bn.js "^5.2.0" bs58 "^4.0.1" @@ -2830,10 +2838,10 @@ "@coral-xyz/anchor" "^0.28.0" "@solana/web3.js" "^1.78.4" -"@helium/no-emit-sdk@^0.6.13": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@helium/no-emit-sdk/-/no-emit-sdk-0.6.13.tgz#d734fadeb99275dabc80226a42f8c9e0d24054f0" - integrity sha512-Wth4ijXekn92KeeEwRlrH7DOYMQdUjtKOdKF0/Jh6vsdFUVmn59ZvGE2NcoF7pRYk8d8aGsSoIlpvvAiV8biMg== +"@helium/no-emit-sdk@^0.6.14": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@helium/no-emit-sdk/-/no-emit-sdk-0.6.14.tgz#da57698c36fa237b50535f888586537aa6191744" + integrity sha512-qK5Kwajnfx6ux9rpY9RE3pfyoS/JEIe2QBOleFj4SzJSLWSOQueN8VtrQ/jDkm8txLnTOK7x9HRTnMwGuiTkUg== dependencies: "@coral-xyz/anchor" "^0.28.0" "@helium/anchor-resolvers" "^0.5.0" @@ -2954,14 +2962,14 @@ bn.js "^5.2.0" bs58 "^4.0.1" -"@helium/rewards-oracle-sdk@^0.6.13": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@helium/rewards-oracle-sdk/-/rewards-oracle-sdk-0.6.13.tgz#9320b4da0793eb072bb551038867a9e2b4c15a9f" - integrity sha512-lkXJktrailbYnk8JjrWY1tueoEJbWFo+3PnCa/A2dRHMXPpWPnXaoaKfUSORsbfxm++kW9JlYbCsJSgoye2BGg== +"@helium/rewards-oracle-sdk@^0.6.14": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@helium/rewards-oracle-sdk/-/rewards-oracle-sdk-0.6.14.tgz#2d8cc9b14cf60dcb5672dd1e7ffb0976cc31eaed" + integrity sha512-fQ5Yy9Ji7AfxxNoFlHcJxRczgXHnCm0IpKlhTgoLIljJDXUCi1ADqQmQYHlK3A3r/lraunmmNB7+eSgoOxMUng== dependencies: "@coral-xyz/anchor" "^0.28.0" - "@helium/anchor-resolvers" "^0.6.13" - "@helium/idls" "^0.6.13" + "@helium/anchor-resolvers" "^0.6.14" + "@helium/idls" "^0.6.14" bn.js "^5.2.0" bs58 "^4.0.1" @@ -2992,15 +3000,15 @@ borsh "^0.7.0" bs58 "^5.0.0" -"@helium/spl-utils@^0.6.13": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@helium/spl-utils/-/spl-utils-0.6.13.tgz#c622304587e3601bef258c5af2f2752f493ee630" - integrity sha512-eDcHiZnUXugNxyNxz7AzIreT9Cen5nV2Ts77HMrTiuMZ8PJNk0YRitnxnm04ZYSuQwzHOt2rOpt1suN40gto7w== +"@helium/spl-utils@^0.6.14": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@helium/spl-utils/-/spl-utils-0.6.14.tgz#62362a8650e31b51c9d2ac50f0777e2d832a4c37" + integrity sha512-swp3eS6lS+9pbz1VtI3RPZb2AqLo4gC2kuYfl8pklUB1V8PIJ+oQkU28iXnv2MTjb1Zpvb2VazITQsWentNcng== dependencies: "@coral-xyz/anchor" "^0.28.0" - "@helium/account-fetch-cache" "^0.6.13" + "@helium/account-fetch-cache" "^0.6.14" "@helium/address" "^4.10.2" - "@helium/anchor-resolvers" "^0.6.13" + "@helium/anchor-resolvers" "^0.6.14" "@metaplex-foundation/mpl-token-metadata" "^2.10.0" "@solana/spl-account-compression" "^0.1.7" "@solana/spl-token" "^0.3.8" @@ -3072,15 +3080,15 @@ bn.js "^5.2.0" bs58 "^4.0.1" -"@helium/treasury-management-sdk@^0.6.13": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@helium/treasury-management-sdk/-/treasury-management-sdk-0.6.13.tgz#3f88c129e40c779731489336ddf4e4421d941bce" - integrity sha512-YsfzVgUTrBjVExrFXbhtUQn2MRyQqsMfUc4b4W8gEQ2QVulBSfQ4ED+EiBXx4qtaod6HfILtrXfAbPuE8ThQ+Q== +"@helium/treasury-management-sdk@^0.6.14": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@helium/treasury-management-sdk/-/treasury-management-sdk-0.6.14.tgz#c1108e34482719be905f39e02febfb349a4f0c6c" + integrity sha512-8oGBnr2+jCRAKYdSnmFjKet9aWnSI81kGMwJJCXrA6NiUMA9LgqSwTtB2sQK/EHthipOxLGxJzLpoS1LtyUJZA== dependencies: "@coral-xyz/anchor" "^0.28.0" - "@helium/anchor-resolvers" "^0.6.13" - "@helium/circuit-breaker-sdk" "^0.6.13" - "@helium/idls" "^0.6.13" + "@helium/anchor-resolvers" "^0.6.14" + "@helium/circuit-breaker-sdk" "^0.6.14" + "@helium/idls" "^0.6.14" bn.js "^5.2.0" bs58 "^4.0.1" @@ -3096,19 +3104,19 @@ bn.js "^5.2.0" bs58 "^4.0.1" -"@helium/voter-stake-registry-hooks@^0.6.13": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@helium/voter-stake-registry-hooks/-/voter-stake-registry-hooks-0.6.13.tgz#eebe3aea4b999c2883b8ff8e23903a210ec97a9f" - integrity sha512-/l4Lkz5EXnrifT0vOux9E48mMdkWO7VieQwWLubOwgH6V6VErK9OhTijwaWmydVfTlbxgA5PlRY0onalLr9gDw== +"@helium/voter-stake-registry-hooks@^0.6.14": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@helium/voter-stake-registry-hooks/-/voter-stake-registry-hooks-0.6.14.tgz#6cdd253e7eebca862cfdec7040b25ba96af1123e" + integrity sha512-Xvm5XPaAxjFYJdq5UU7RFjlZbNMcge2C0nGqtB9YTSDXD8PkziWwJkbJyemW2VuIjx2ZLvlurn/ZgTH26lOe/A== dependencies: "@coral-xyz/anchor" "^0.28.0" - "@helium/account-fetch-cache" "^0.6.13" - "@helium/account-fetch-cache-hooks" "^0.6.13" - "@helium/helium-react-hooks" "^0.6.13" - "@helium/helium-sub-daos-sdk" "^0.6.13" + "@helium/account-fetch-cache" "^0.6.14" + "@helium/account-fetch-cache-hooks" "^0.6.14" + "@helium/helium-react-hooks" "^0.6.14" + "@helium/helium-sub-daos-sdk" "^0.6.14" "@helium/modular-governance-hooks" "^0.0.8" - "@helium/spl-utils" "^0.6.13" - "@helium/voter-stake-registry-sdk" "^0.6.13" + "@helium/spl-utils" "^0.6.14" + "@helium/voter-stake-registry-sdk" "^0.6.14" "@metaplex-foundation/js" "^0.19.4" "@solana/wallet-adapter-base" "^0.9.22" "@solana/wallet-adapter-react" "^0.15.32" @@ -3143,14 +3151,14 @@ bn.js "^5.2.0" bs58 "^4.0.1" -"@helium/voter-stake-registry-sdk@^0.6.13": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@helium/voter-stake-registry-sdk/-/voter-stake-registry-sdk-0.6.13.tgz#7ab180196a9291412c66c01ff3b551d1d3f55a7f" - integrity sha512-sW1gWfLBDpoHfwn+Ouu3eDiFC4fU8pObyGdsrLrEgyrgM5rfMgLotU7qNO+aBG0Yg/PTU0rIx9VpYrh9lFrRVQ== +"@helium/voter-stake-registry-sdk@^0.6.14": + version "0.6.14" + resolved "https://registry.yarnpkg.com/@helium/voter-stake-registry-sdk/-/voter-stake-registry-sdk-0.6.14.tgz#2f9a0d0c6b40d4570a414edd3e1abeed2baa54aa" + integrity sha512-40XFjYhkd4f/fBlkw317qAg/IYAov2/z2K6RiJBvUi/mHB3Eo3SsNSXFi4VHYmNsJQDZWtl6p24futGTPx5xag== dependencies: "@coral-xyz/anchor" "^0.28.0" - "@helium/anchor-resolvers" "^0.6.13" - "@helium/idls" "^0.6.13" + "@helium/anchor-resolvers" "^0.6.14" + "@helium/idls" "^0.6.14" "@metaplex-foundation/mpl-token-metadata" "^2.10.0" "@solana/spl-token" "^0.3.8" bn.js "^5.2.0" @@ -5163,11 +5171,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - "@types/parse5@5.0.3": version "5.0.3" resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" @@ -5891,7 +5894,7 @@ ansi-colors@^4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0, ansi-escapes@^4.3.2: +ansi-escapes@^4.2.1, ansi-escapes@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== @@ -7253,14 +7256,6 @@ cli-spinners@^2.0.0, cli-spinners@^2.5.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.1.tgz#9c0b9dad69a6d47cbb4333c14319b060ed395a35" integrity sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ== -cli-truncate@2.1.0, cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== - dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" - cli-width@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" @@ -7394,16 +7389,11 @@ color@^4.2.3: color-convert "^2.0.1" color-string "^1.9.0" -colorette@^1.0.7, colorette@^1.4.0: +colorette@^1.0.7: version "1.4.0" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== -colorette@^2.0.16: - version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" - integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== - colors@^1.1.2: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" @@ -7606,17 +7596,6 @@ cosmiconfig@^5.0.5, cosmiconfig@^5.1.0, cosmiconfig@^5.2.1: js-yaml "^3.13.1" parse-json "^4.0.0" -cosmiconfig@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" - integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - create-ecdh@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" @@ -8310,7 +8289,7 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" -enquirer@^2.3.5, enquirer@^2.3.6: +enquirer@^2.3.5: version "2.4.1" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== @@ -8869,7 +8848,7 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^5.0.0, execa@^5.1.1: +execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== @@ -9669,11 +9648,6 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@ has-proto "^1.0.1" has-symbols "^1.0.3" -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -10470,11 +10444,6 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== - is-object@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/is-object/-/is-object-0.1.2.tgz#00efbc08816c33cfc4ac8251d132e10dc65098d7" @@ -10510,11 +10479,6 @@ is-regex@^1.0.4, is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== - is-retry-allowed@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz#88f34cbd236e043e71b6932d09b0c65fb7b4d71d" @@ -11695,40 +11659,6 @@ linkify-it@^4.0.1: dependencies: uc.micro "^1.0.1" -lint-staged@11.2.6: - version "11.2.6" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-11.2.6.tgz#f477b1af0294db054e5937f171679df63baa4c43" - integrity sha512-Vti55pUnpvPE0J9936lKl0ngVeTdSZpEdTNhASbkaWX7J5R9OEifo1INBGQuGW4zmy6OG+TcWPJ3m5yuy5Q8Tg== - dependencies: - cli-truncate "2.1.0" - colorette "^1.4.0" - commander "^8.2.0" - cosmiconfig "^7.0.1" - debug "^4.3.2" - enquirer "^2.3.6" - execa "^5.1.1" - listr2 "^3.12.2" - micromatch "^4.0.4" - normalize-path "^3.0.0" - please-upgrade-node "^3.2.0" - string-argv "0.3.1" - stringify-object "3.3.0" - supports-color "8.1.1" - -listr2@^3.12.2: - version "3.14.0" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" - integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== - dependencies: - cli-truncate "^2.1.0" - colorette "^2.0.16" - log-update "^4.0.0" - p-map "^4.0.0" - rfdc "^1.3.0" - rxjs "^7.5.1" - through "^2.3.8" - wrap-ansi "^7.0.0" - locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -11801,16 +11731,6 @@ log-symbols@^4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" -log-update@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== - dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" - logkitty@^0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/logkitty/-/logkitty-0.7.1.tgz#8e8d62f4085a826e8d38987722570234e33c6aa7" @@ -13303,7 +13223,7 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse-json@^5.0.0, parse-json@^5.2.0: +parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -13599,13 +13519,6 @@ pkg-up@^3.1.0: dependencies: find-up "^3.0.0" -please-upgrade-node@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" - integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== - dependencies: - semver-compare "^1.0.0" - plist@^3.0.5: version "3.1.0" resolved "https://registry.yarnpkg.com/plist/-/plist-3.1.0.tgz#797a516a93e62f5bde55e0b9cc9c967f860893c9" @@ -14991,7 +14904,7 @@ rxjs@7.5.6: dependencies: tslib "^2.1.0" -rxjs@^7.5.1, rxjs@^7.5.5: +rxjs@^7.5.5: version "7.8.1" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== @@ -15120,11 +15033,6 @@ secure-json-parse@^2.5.0: resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw== -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== - semver@7.3.2: version "7.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" @@ -15396,15 +15304,6 @@ slice-ansi@^2.0.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" -slice-ansi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - slice-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" @@ -15649,11 +15548,6 @@ strict-uri-encode@^2.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== -string-argv@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" - integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== - string-hash-64@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string-hash-64/-/string-hash-64-1.0.3.tgz#0deb56df58678640db5c479ccbbb597aaa0de322" @@ -15742,15 +15636,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-object@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - strip-ansi@^5.0.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" @@ -15850,13 +15735,6 @@ superstruct@^0.15.4: resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.15.5.tgz#0f0a8d3ce31313f0d84c6096cd4fa1bfdedc9dab" integrity sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ== -supports-color@8.1.1, supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -15871,6 +15749,13 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + supports-hyperlinks@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" @@ -16066,7 +15951,7 @@ through2@^2.0.1: readable-stream "~2.3.6" xtend "~4.0.1" -through@2, "through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8: +through@2, "through@>=2.2.7 <3", through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== @@ -17007,11 +16892,6 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - yaml@^2.2.2: version "2.3.4" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2"