diff --git a/__tests__/components/waves/outcome/WaveManualOutcome.test.tsx b/__tests__/components/waves/outcome/WaveManualOutcome.test.tsx index 161e1543c9..e846721cbe 100644 --- a/__tests__/components/waves/outcome/WaveManualOutcome.test.tsx +++ b/__tests__/components/waves/outcome/WaveManualOutcome.test.tsx @@ -5,19 +5,27 @@ import { WaveManualOutcome } from '@/components/waves/outcome/WaveManualOutcome' const outcome = { description: 'desc', - distribution: [ - { amount: 1, description: 'A' }, - { amount: 2, description: 'B' }, - { amount: 3, description: 'C' }, - { amount: 4, description: 'D' }, +} as any; + +const distribution = { + items: [ + { index: 1, amount: 0, description: 'A' }, + { index: 2, amount: 150, description: 'B' }, + { index: 3, amount: 250, description: 'C' }, + { index: 4, amount: 350, description: 'D' }, ], + totalCount: 4, + hasNextPage: false, + isFetchingNextPage: false, + fetchNextPage: jest.fn(), } as any; describe('WaveManualOutcome', () => { it('expands and shows all winners', async () => { const user = userEvent.setup(); - render(); + render(); await user.click(screen.getByRole('button')); + expect(screen.getByText('-')).toBeInTheDocument(); expect(screen.getByText('View more')).toBeInTheDocument(); await user.click(screen.getByText('View more')); expect(screen.queryByText('View more')).toBeNull(); diff --git a/__tests__/components/waves/outcome/WaveOutcome.test.tsx b/__tests__/components/waves/outcome/WaveOutcome.test.tsx index 9294b778e1..e4ded493d1 100644 --- a/__tests__/components/waves/outcome/WaveOutcome.test.tsx +++ b/__tests__/components/waves/outcome/WaveOutcome.test.tsx @@ -14,22 +14,50 @@ jest.mock("@/components/waves/outcome/WaveManualOutcome", () => ({ WaveManualOutcome: (props: any) =>
, })); +jest.mock("@/hooks/waves/useWaveOutcomeDistributionQuery", () => ({ + useWaveOutcomeDistributionQuery: jest.fn().mockReturnValue({ + items: [], + totalCount: 0, + hasNextPage: false, + isFetchingNextPage: false, + fetchNextPage: jest.fn(), + isLoading: false, + isError: false, + errorMessage: undefined, + }), +})); + import { WaveOutcome } from "@/components/waves/outcome/WaveOutcome"; import { ApiWaveOutcomeCredit } from "@/generated/models/ApiWaveOutcomeCredit"; describe("WaveOutcome", () => { it("renders rep outcome", () => { - render(); + render( + + ); expect(screen.getByTestId("rep")).toBeInTheDocument(); }); it("renders nic outcome", () => { - render(); + render( + + ); expect(screen.getByTestId("nic")).toBeInTheDocument(); }); it("renders manual outcome", () => { - render(); + render( + + ); expect(screen.getByTestId("manual")).toBeInTheDocument(); }); }); diff --git a/__tests__/components/waves/outcome/WaveRepOutcome.test.tsx b/__tests__/components/waves/outcome/WaveRepOutcome.test.tsx index 191fedf99e..11d091facc 100644 --- a/__tests__/components/waves/outcome/WaveRepOutcome.test.tsx +++ b/__tests__/components/waves/outcome/WaveRepOutcome.test.tsx @@ -14,13 +14,25 @@ jest.mock('@fortawesome/react-fontawesome', () => ({ FontAwesomeIcon: () => { const outcome = { - distribution: [{ amount: 10 }, { amount: 20 }, { amount: 30 }, { amount: 40 }], amount: 100, rep_category: 'rep', } as any; + const distribution = { + items: [ + { index: 1, amount: 10 }, + { index: 2, amount: 20 }, + { index: 3, amount: 30 }, + { index: 4, amount: 40 }, + ], + totalCount: 4, + hasNextPage: false, + isFetchingNextPage: false, + fetchNextPage: jest.fn(), + } as any; + it('expands list and shows more items', () => { - render(); + render(); expect(screen.queryByText('10 Rep')).toBeNull(); fireEvent.click(screen.getByRole('button')); @@ -30,4 +42,20 @@ describe('WaveRepOutcome', () => { fireEvent.click(screen.getByText(/View more/i)); expect(screen.getByText('40 Rep')).toBeInTheDocument(); }); + + it('shows loading state when fetching next page', () => { + const loadingDistribution = { + ...distribution, + hasNextPage: true, + isFetchingNextPage: true, + }; + render(); + + fireEvent.click(screen.getByRole('button')); // Expand accordion + + const viewMoreBtn = screen.getByRole('button', { name: /loading\.\.\./i }); + expect(viewMoreBtn).toBeInTheDocument(); + expect(viewMoreBtn).toBeDisabled(); + expect(screen.getByText(/1 more/i)).toBeInTheDocument(); + }); }); diff --git a/__tests__/hooks/waves/useWaveOutcomeDistributionQuery.test.tsx b/__tests__/hooks/waves/useWaveOutcomeDistributionQuery.test.tsx new file mode 100644 index 0000000000..fb4ec3bd63 --- /dev/null +++ b/__tests__/hooks/waves/useWaveOutcomeDistributionQuery.test.tsx @@ -0,0 +1,93 @@ +import { renderHook } from '@testing-library/react'; +import { useWaveOutcomeDistributionQuery } from '@/hooks/waves/useWaveOutcomeDistributionQuery'; +import { useInfiniteQuery } from '@tanstack/react-query'; +import { commonApiFetch } from '@/services/api/common-api'; +import { QueryKey } from '@/components/react-query-wrapper/ReactQueryWrapper'; + +jest.mock('@tanstack/react-query'); +jest.mock('@/services/api/common-api'); + +const useInfiniteQueryMock = useInfiniteQuery as jest.Mock; +const fetchMock = commonApiFetch as jest.Mock; + +describe('useWaveOutcomeDistributionQuery', () => { + beforeEach(() => { + jest.clearAllMocks(); + useInfiniteQueryMock.mockReturnValue({ + data: { pages: [], pageParams: [] }, + isError: false, + error: null, + refetch: jest.fn(), + isFetching: false, + isFetchingNextPage: false, + hasNextPage: false, + fetchNextPage: jest.fn(), + }); + }); + + it('should be disabled when outcomeIndex is null', () => { + renderHook(() => + useWaveOutcomeDistributionQuery({ + waveId: 'wave1', + outcomeIndex: null, + }) + ); + + expect(useInfiniteQueryMock).toHaveBeenCalledWith( + expect.objectContaining({ + queryKey: [ + QueryKey.WAVE_OUTCOME_DISTRIBUTION, + 'wave1', + '', + 100, + 'ASC', + ], + enabled: false, + }) + ); + }); + + it('should be enabled when outcomeIndex is 0', () => { + renderHook(() => + useWaveOutcomeDistributionQuery({ + waveId: 'wave1', + outcomeIndex: 0, + }) + ); + + expect(useInfiniteQueryMock).toHaveBeenCalledWith( + expect.objectContaining({ + queryKey: [ + QueryKey.WAVE_OUTCOME_DISTRIBUTION, + 'wave1', + '0', + 100, + 'ASC', + ], + enabled: true, + }) + ); + }); + + it('should be enabled when outcomeIndex is "1"', () => { + renderHook(() => + useWaveOutcomeDistributionQuery({ + waveId: 'wave1', + outcomeIndex: '1', + }) + ); + + expect(useInfiniteQueryMock).toHaveBeenCalledWith( + expect.objectContaining({ + queryKey: [ + QueryKey.WAVE_OUTCOME_DISTRIBUTION, + 'wave1', + '1', + 100, + 'ASC', + ], + enabled: true, + }) + ); + }); +}); diff --git a/components/brain/my-stream/MyStreamWaveOutcome.tsx b/components/brain/my-stream/MyStreamWaveOutcome.tsx index 7318d7acf4..3865256c9d 100644 --- a/components/brain/my-stream/MyStreamWaveOutcome.tsx +++ b/components/brain/my-stream/MyStreamWaveOutcome.tsx @@ -1,33 +1,81 @@ -"use client" +"use client"; -import React, { useMemo } from "react"; +import { FC, useMemo, useRef } from "react"; import { ApiWave } from "@/generated/models/ApiWave"; import { WaveOutcome } from "@/components/waves/outcome/WaveOutcome"; import { useLayout } from "./layout/LayoutContext"; +import SpinnerLoader from "@/components/common/SpinnerLoader"; +import { useInfiniteScroll } from "@/hooks/useInfiniteScroll"; +import { useWaveOutcomesQuery } from "@/hooks/waves/useWaveOutcomesQuery"; interface MyStreamWaveOutcomeProps { readonly wave: ApiWave; } -// Removed in favor of useWaveViewHeight hook - -const MyStreamWaveOutcome: React.FC = ({ wave }) => { +const MyStreamWaveOutcome: FC = ({ wave }) => { // Get the pre-calculated style from LayoutContext const { outcomeViewStyle } = useLayout(); - + const scrollContainerRef = useRef(null); + const sentinelRef = useRef(null); + + const { + outcomes, + fetchNextPage, + hasNextPage, + isFetching, + isFetchingNextPage, + isLoading, + errorMessage, + } = useWaveOutcomesQuery({ waveId: wave.id }); + + const containerClassName = useMemo(() => { return `tw-pt-4 tw-pb-4 tw-w-full tw-flex tw-flex-col tw-overflow-y-auto no-scrollbar lg:tw-scrollbar-thin tw-scrollbar-thumb-iron-500 tw-scrollbar-track-iron-800 desktop-hover:hover:tw-scrollbar-thumb-iron-300 tw-flex-grow lg:tw-pr-2`; }, []); + + useInfiniteScroll( + hasNextPage, + isFetchingNextPage, + fetchNextPage, + scrollContainerRef, + sentinelRef, + "200px" + ); + + const hasOutcomes = outcomes.length > 0; + const isInitialLoading = isLoading && !hasOutcomes; return ( -
-
- {wave.outcomes.map((outcome, index) => ( - - ))} -
+
+ {isInitialLoading && } + {!isInitialLoading && errorMessage && ( +
+ {errorMessage} +
+ )} + {!isInitialLoading && !errorMessage && !hasOutcomes && !isFetching && ( +
+ No outcomes to show. +
+ )} + {hasOutcomes && ( +
+ {outcomes.map((outcome, index) => ( + + ))} +
+ {isFetchingNextPage && ( + + )} +
+ )}
); }; diff --git a/components/react-query-wrapper/ReactQueryWrapper.tsx b/components/react-query-wrapper/ReactQueryWrapper.tsx index 3448d16247..c7c774b11f 100644 --- a/components/react-query-wrapper/ReactQueryWrapper.tsx +++ b/components/react-query-wrapper/ReactQueryWrapper.tsx @@ -93,6 +93,8 @@ export enum QueryKey { WAVE_FOLLOWERS = "WAVE_FOLLOWERS", FEED_ITEMS = "FEED_ITEMS", WAVE_DECISIONS = "WAVE_DECISIONS", + WAVE_OUTCOMES = "WAVE_OUTCOMES", + WAVE_OUTCOME_DISTRIBUTION = "WAVE_OUTCOME_DISTRIBUTION", } interface InitProfileRatersParamsAndData { @@ -1139,6 +1141,12 @@ export default function ReactQueryWrapper({ queryClient.invalidateQueries({ queryKey: [QueryKey.WAVE], }); + queryClient.invalidateQueries({ + queryKey: [QueryKey.WAVE_OUTCOMES], + }); + queryClient.invalidateQueries({ + queryKey: [QueryKey.WAVE_OUTCOME_DISTRIBUTION], + }); }; const invalidateDrops = () => { diff --git a/components/waves/leaderboard/drops/header/WaveLeaderboardDropAuthor.tsx b/components/waves/leaderboard/drops/header/WaveLeaderboardDropAuthor.tsx index e80e90cfe7..10ef82915f 100644 --- a/components/waves/leaderboard/drops/header/WaveLeaderboardDropAuthor.tsx +++ b/components/waves/leaderboard/drops/header/WaveLeaderboardDropAuthor.tsx @@ -3,12 +3,14 @@ import { ExtendedDrop } from "@/helpers/waves/drop.helpers"; import { cicToType } from "@/helpers/Helpers"; import Link from "next/link"; +import Image from "next/image"; import UserCICAndLevel, { UserCICAndLevelSize, } from "@/components/user/utils/UserCICAndLevel"; import WinnerDropBadge from "@/components/waves/drops/winner/WinnerDropBadge"; import WaveDropTime from "@/components/waves/drops/time/WaveDropTime"; import UserProfileTooltipWrapper from "@/components/utils/tooltip/UserProfileTooltipWrapper"; +import { resolveIpfsUrlSync } from "@/components/ipfs/IPFSContext"; interface WaveLeaderboardDropAuthorProps { readonly drop: ExtendedDrop; @@ -29,10 +31,12 @@ export const WaveLeaderboardDropAuthor: React.FC<
- Profile picture
diff --git a/components/waves/leaderboard/drops/header/WaveleaderboardDropRaters.tsx b/components/waves/leaderboard/drops/header/WaveleaderboardDropRaters.tsx index 3723b94bf1..8c6c64d008 100644 --- a/components/waves/leaderboard/drops/header/WaveleaderboardDropRaters.tsx +++ b/components/waves/leaderboard/drops/header/WaveleaderboardDropRaters.tsx @@ -11,6 +11,7 @@ import { import DropVoteProgressing from "@/components/drops/view/utils/DropVoteProgressing"; import { WAVE_VOTING_LABELS, WAVE_VOTE_STATS_LABELS } from "@/helpers/waves/waves.constants"; import { ApiWaveCreditType } from "@/generated/models/ApiWaveCreditType"; +import { resolveIpfsUrlSync } from "@/components/ipfs/IPFSContext"; interface WaveLeaderboardDropRatersProps { readonly drop: ExtendedDrop; @@ -76,10 +77,10 @@ export const WaveLeaderboardDropRaters: React.FC< {voter.profile.pfp ? ( {`${voter.profile.handle}'s = ({ outcome }) => { +export const WaveManualOutcome: FC = ({ + outcome, + distribution, +}) => { const [isOpen, setIsOpen] = useState(false); - const winnersCount = outcome.distribution?.filter((d) => !!d).length ?? 0; - const totalCount = outcome.distribution?.length ?? 0; const [showAll, setShowAll] = useState(false); + const { + items, + totalCount, + hasNextPage, + isFetchingNextPage, + fetchNextPage, + isLoading, + isError, + errorMessage, + } = distribution; + const winnersCount = totalCount; + const visibleItems = showAll + ? items + : items.slice(0, DEFAULT_AMOUNTS_TO_SHOW); + const remainingCount = Math.max(totalCount - visibleItems.length, 0); + const shouldShowMore = + hasNextPage || (!showAll && items.length > DEFAULT_AMOUNTS_TO_SHOW); - const getAmounts = (): number[] => { - if (showAll) { - return outcome.distribution?.map((d) => d.amount ?? 0) ?? []; + const onViewMore = () => { + if (!showAll) { + setShowAll(true); + } + if (hasNextPage && !isFetchingNextPage) { + fetchNextPage(); } - return ( - outcome.distribution - ?.slice(0, DEFAULT_AMOUNTS_TO_SHOW) - .map((d) => d.amount ?? 0) ?? [] - ); }; - const [amounts, setAmounts] = useState(getAmounts()); - - useEffect(() => { - setAmounts(getAmounts()); - }, [showAll]); - return (
@@ -97,31 +116,53 @@ export const WaveManualOutcome: FC = ({ outcome }) => { transition={{ duration: 0.2 }} className="tw-overflow-hidden tw-bg-gradient-to-b tw-from-iron-900/50 tw-to-iron-950/50">
- {amounts.map((_, i) => ( -
-
- - {i + 1} - - - {outcome.distribution?.[i].amount - ? outcome.distribution?.[i].description - : ""} - + {visibleItems.map((item, i) => { + const itemLabel = + item.amount === 0 ? "-" : item.description ?? ""; + + return ( +
+
+ + {i + 1} + + + {itemLabel} + +
+ ); + })} + + {isLoading && ( +
+ Loading winners... +
+ )} + + {isError && ( +
+ {errorMessage || "Failed to load winners"} +
+ )} + + {!isLoading && !isError && items.length === 0 && ( +
+ No winners yet
- ))} + )} - {totalCount > DEFAULT_AMOUNTS_TO_SHOW && !showAll && ( + {shouldShowMore && ( )} diff --git a/components/waves/outcome/WaveNICOutcome.tsx b/components/waves/outcome/WaveNICOutcome.tsx index ba5b6c965f..091efa24d2 100644 --- a/components/waves/outcome/WaveNICOutcome.tsx +++ b/components/waves/outcome/WaveNICOutcome.tsx @@ -1,40 +1,52 @@ "use client"; -import { FC, useEffect, useState } from "react"; -import { ApiWaveOutcomeOld } from "@/generated/models/ApiWaveOutcomeOld"; +import { FC, useState } from "react"; +import type { ApiWaveOutcome } from "@/generated/models/ApiWaveOutcome"; +import type { WaveOutcomeDistributionState } from "@/types/waves.types"; import { formatNumberWithCommas } from "@/helpers/Helpers"; import { motion, AnimatePresence } from "framer-motion"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faAddressCard } from "@fortawesome/free-regular-svg-icons"; interface WaveNICOutcomeProps { - readonly outcome: ApiWaveOutcomeOld; + readonly outcome: ApiWaveOutcome; + readonly distribution: WaveOutcomeDistributionState; } const DEFAULT_AMOUNTS_TO_SHOW = 3; -export const WaveNICOutcome: FC = ({ outcome }) => { +export const WaveNICOutcome: FC = ({ + outcome, + distribution, +}) => { const [isOpen, setIsOpen] = useState(false); const [showAll, setShowAll] = useState(false); - const winnersCount = - outcome.distribution?.filter((d) => !!d.amount).length ?? 0; - const totalCount = outcome.distribution?.length ?? 0; + const { + items, + totalCount, + hasNextPage, + isFetchingNextPage, + fetchNextPage, + isLoading, + isError, + errorMessage, + } = distribution; + const winnersCount = totalCount; + const visibleItems = showAll + ? items + : items.slice(0, DEFAULT_AMOUNTS_TO_SHOW); + const remainingCount = Math.max(totalCount - visibleItems.length, 0); + const shouldShowMore = + hasNextPage || (!showAll && items.length > DEFAULT_AMOUNTS_TO_SHOW); - const getAmounts = (): number[] => { - if (showAll) { - return outcome.distribution?.map((d) => d?.amount ?? 0) ?? []; + const onViewMore = () => { + if (!showAll) { + setShowAll(true); + } + if (hasNextPage && !isFetchingNextPage) { + fetchNextPage(); } - return ( - outcome.distribution - ?.slice(0, DEFAULT_AMOUNTS_TO_SHOW) - .map((d) => d?.amount ?? 0) ?? [] - ); }; - const [amounts, setAmounts] = useState(getAmounts()); - - useEffect(() => { - setAmounts(getAmounts()); - }, [showAll]); return (
@@ -55,8 +67,14 @@ export const WaveNICOutcome: FC = ({ outcome }) => { NIC
- {formatNumberWithCommas(winnersCount)}{" "} - {winnersCount === 1 ? "Winner" : "Winners"} + {isLoading ? ( + + ) : ( + <> + {formatNumberWithCommas(winnersCount)}{" "} + {winnersCount === 1 ? "Winner" : "Winners"} + + )}
@@ -96,29 +114,47 @@ export const WaveNICOutcome: FC = ({ outcome }) => { transition={{ duration: 0.2 }} className="tw-overflow-hidden tw-bg-gradient-to-b tw-from-iron-900/50 tw-to-iron-950/50">
- {amounts.map((amount, i) => ( + {visibleItems.map((item, i) => (
{i + 1} - {formatNumberWithCommas(amount)} NIC + {formatNumberWithCommas(item.amount ?? 0)} NIC
))} - {!showAll && totalCount > DEFAULT_AMOUNTS_TO_SHOW && ( + {isLoading && ( +
+ Loading winners... +
+ )} + + {isError && ( +
+ {errorMessage || "Failed to load winners"} +
+ )} + + {!isLoading && !isError && items.length === 0 && ( +
+ No winners yet +
+ )} + + {shouldShowMore && ( )} diff --git a/components/waves/outcome/WaveOutcome.tsx b/components/waves/outcome/WaveOutcome.tsx index 01f07cc420..c7c9bd6bfa 100644 --- a/components/waves/outcome/WaveOutcome.tsx +++ b/components/waves/outcome/WaveOutcome.tsx @@ -1,5 +1,9 @@ -import { FC, type JSX } from "react"; -import { ApiWaveOutcomeOld } from "@/generated/models/ApiWaveOutcomeOld"; +"use client"; + +import { FC, type JSX, useMemo } from "react"; +import { ApiWaveOutcome } from "@/generated/models/ApiWaveOutcome"; +import type { WaveOutcomeDistributionState } from "@/types/waves.types"; +import { useWaveOutcomeDistributionQuery } from "@/hooks/waves/useWaveOutcomeDistributionQuery"; import { WaveRepOutcome } from "./WaveRepOutcome"; import { WaveNICOutcome } from "./WaveNICOutcome"; import { WaveManualOutcome } from "./WaveManualOutcome"; @@ -12,12 +16,47 @@ enum OutcomeType { } interface WaveOutcomeProps { - readonly outcome: ApiWaveOutcomeOld; + readonly waveId: string; + readonly outcome: ApiWaveOutcome; } -export const WaveOutcome: FC = ({ - outcome, -}) => { +export const WaveOutcome: FC = ({ waveId, outcome }) => { + const { + items, + totalCount, + hasNextPage, + isFetchingNextPage, + fetchNextPage, + isLoading, + isError, + errorMessage, + } = useWaveOutcomeDistributionQuery({ + waveId, + outcomeIndex: outcome.index, + }); + const distributionState: WaveOutcomeDistributionState = useMemo( + () => ({ + items, + totalCount, + hasNextPage: Boolean(hasNextPage), + isFetchingNextPage, + fetchNextPage, + isLoading, + isError, + errorMessage, + }), + [ + items, + totalCount, + hasNextPage, + isFetchingNextPage, + fetchNextPage, + isLoading, + isError, + errorMessage, + ] + ); + const getOutcomeType = (): OutcomeType => { if (outcome.credit === ApiWaveOutcomeCredit.Rep) { return OutcomeType.REP; @@ -31,10 +70,16 @@ export const WaveOutcome: FC = ({ const outcomeType = getOutcomeType(); const component: Record = { - [OutcomeType.REP]: , - [OutcomeType.NIC]: , - [OutcomeType.MANUAL]: , + [OutcomeType.REP]: ( + + ), + [OutcomeType.NIC]: ( + + ), + [OutcomeType.MANUAL]: ( + + ), }; return
{component[outcomeType]}
; -}; \ No newline at end of file +}; diff --git a/components/waves/outcome/WaveRepOutcome.tsx b/components/waves/outcome/WaveRepOutcome.tsx index f35ef7dba9..44c4a60766 100644 --- a/components/waves/outcome/WaveRepOutcome.tsx +++ b/components/waves/outcome/WaveRepOutcome.tsx @@ -1,40 +1,60 @@ "use client"; -import { FC, useEffect, useState } from "react"; +import { FC, useState } from "react"; import { motion, AnimatePresence } from "framer-motion"; -import { ApiWaveOutcomeOld } from "@/generated/models/ApiWaveOutcomeOld"; +import type { ApiWaveOutcome } from "@/generated/models/ApiWaveOutcome"; +import type { WaveOutcomeDistributionState } from "@/types/waves.types"; import { formatNumberWithCommas } from "@/helpers/Helpers"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faStar } from "@fortawesome/free-regular-svg-icons"; interface WaveRepOutcomeProps { - readonly outcome: ApiWaveOutcomeOld; + readonly outcome: ApiWaveOutcome; + readonly distribution: WaveOutcomeDistributionState; } const DEFAULT_AMOUNTS_TO_SHOW = 3; -export const WaveRepOutcome: FC = ({ outcome }) => { +export const WaveRepOutcome: FC = ({ + outcome, + distribution, +}) => { const [isOpen, setIsOpen] = useState(false); - const winnersCount = - outcome.distribution?.filter((d) => !!d.amount).length ?? 0; - const totalCount = outcome.distribution?.length ?? 0; const [showAll, setShowAll] = useState(false); + const { + items, + totalCount, + hasNextPage, + isFetchingNextPage, + fetchNextPage, + isLoading, + isError, + errorMessage, + } = distribution; + const winnersCount = totalCount; + const visibleItems = showAll + ? items + : items.slice(0, DEFAULT_AMOUNTS_TO_SHOW); - const getAmounts = (): number[] => { - if (showAll) { - return outcome.distribution?.map((d) => d.amount ?? 0) ?? []; + const hiddenLocalCount = Math.max( + items.length - DEFAULT_AMOUNTS_TO_SHOW, + 0 + ); + const remainingFromServer = Math.max(totalCount - items.length, 0); + const remainingCount = showAll + ? remainingFromServer + : hiddenLocalCount + remainingFromServer; + const shouldShowMore = + hasNextPage || (!showAll && items.length > DEFAULT_AMOUNTS_TO_SHOW); + + const onViewMore = () => { + if (!showAll) { + setShowAll(true); + } + if (hasNextPage && !isFetchingNextPage) { + fetchNextPage(); } - return ( - outcome.distribution - ?.slice(0, DEFAULT_AMOUNTS_TO_SHOW) - .map((d) => d.amount ?? 0) ?? [] - ); }; - const [amounts, setAmounts] = useState(getAmounts()); - - useEffect(() => { - setAmounts(getAmounts()); - }, [showAll]); return (
@@ -55,8 +75,14 @@ export const WaveRepOutcome: FC = ({ outcome }) => { Rep
- {formatNumberWithCommas(winnersCount)}{" "} - {winnersCount === 1 ? "Winner" : "Winners"} + {isLoading ? ( + + ) : ( + <> + {formatNumberWithCommas(winnersCount)}{" "} + {winnersCount === 1 ? "Winner" : "Winners"} + + )}
@@ -106,29 +132,48 @@ export const WaveRepOutcome: FC = ({ outcome }) => { transition={{ duration: 0.2 }} className="tw-overflow-hidden tw-bg-gradient-to-b tw-from-iron-900/50 tw-to-iron-950/50">
- {amounts.map((amount, i) => ( + {visibleItems.map((item, i) => (
{i + 1} - {formatNumberWithCommas(amount)} Rep + {formatNumberWithCommas(item.amount ?? 0)} Rep
))} - {totalCount > DEFAULT_AMOUNTS_TO_SHOW && !showAll && ( + {isLoading && ( +
+ Loading winners... +
+ )} + + {isError && ( +
+ {errorMessage || "Failed to load winners"} +
+ )} + + {!isLoading && !isError && items.length === 0 && ( +
+ No winners yet +
+ )} + + {shouldShowMore && ( )} diff --git a/helpers/waves/create-wave.helpers.ts b/helpers/waves/create-wave.helpers.ts index 974dc38bad..3f8502f14e 100644 --- a/helpers/waves/create-wave.helpers.ts +++ b/helpers/waves/create-wave.helpers.ts @@ -3,7 +3,6 @@ import { ApiCreateWaveDropRequest } from "@/generated/models/ApiCreateWaveDropRe import { ApiIntRange } from "@/generated/models/ApiIntRange"; import { ApiWaveCreditScope } from "@/generated/models/ApiWaveCreditScope"; import { ApiWaveCreditType } from "@/generated/models/ApiWaveCreditType"; -import { ApiWaveOutcomeOld } from "@/generated/models/ApiWaveOutcomeOld"; import { ApiWaveOutcomeCredit } from "@/generated/models/ApiWaveOutcomeCredit"; import { ApiWaveOutcomeSubType } from "@/generated/models/ApiWaveOutcomeSubType"; import { ApiWaveOutcomeType } from "@/generated/models/ApiWaveOutcomeType"; @@ -16,6 +15,7 @@ import { TimeWeightedVotingSettings, } from "@/types/waves.types"; import { assertUnreachable } from "../AllowlistToolHelpers"; +import { ApiCreateWaveOutcome } from "@/generated/models/ApiCreateWaveOutcome"; /** * Converts time-weighted voting settings to milliseconds, ensuring it's within acceptable range @@ -148,9 +148,8 @@ const getRankOutcomes = ({ config, }: { readonly config: CreateWaveConfig; -}): ApiWaveOutcomeOld[] => { - // TODO: add proper typing - const outcomes: any[] = []; +}): ApiCreateWaveOutcome[] => { + const outcomes: ApiCreateWaveOutcome[] = []; for (const outcome of config.outcomes) { if ( outcome.type === CreateWaveOutcomeType.MANUAL && @@ -206,9 +205,8 @@ const getApproveOutcomes = ({ config, }: { readonly config: CreateWaveConfig; -}): ApiWaveOutcomeOld[] => { - // TODO: add proper typing - const outcomes: any[] = []; +}): ApiCreateWaveOutcome[] => { + const outcomes: ApiCreateWaveOutcome[] = []; for (const outcome of config.outcomes) { if ( outcome.type === CreateWaveOutcomeType.MANUAL && @@ -249,16 +247,14 @@ const getOutcomes = ({ config, }: { readonly config: CreateWaveConfig; -}): ApiWaveOutcomeOld[] => { +}): ApiCreateWaveOutcome[] => { const waveType = config.overview.type; switch (waveType) { case ApiWaveType.Chat: return []; case ApiWaveType.Approve: - // TODO add max winners return getApproveOutcomes({ config }); case ApiWaveType.Rank: - // TODO add max winners return getRankOutcomes({ config }); default: assertUnreachable(waveType); diff --git a/helpers/waves/waves.helpers.ts b/helpers/waves/waves.helpers.ts index 9b4deeb7b8..8540abdfb8 100644 --- a/helpers/waves/waves.helpers.ts +++ b/helpers/waves/waves.helpers.ts @@ -1,6 +1,6 @@ import { ApiIdentity } from "@/generated/models/ApiIdentity"; import { ApiProfileProxy } from "@/generated/models/ApiProfileProxy"; -// import { ApiUpdateWaveRequest } from "@/generated/models/ApiUpdateWaveRequest"; +import { ApiUpdateWaveRequest } from "@/generated/models/ApiUpdateWaveRequest"; import { ApiWave } from "@/generated/models/ApiWave"; import { commonApiPost } from "@/services/api/common-api"; import { CreateWaveStepStatus } from "@/types/waves.types"; @@ -23,8 +23,7 @@ export const getCreateWaveStepStatus = ({ export const convertWaveToUpdateWave = ( wave: ApiWave - // TODO: add proper typing -): any => ({ +): ApiUpdateWaveRequest => ({ name: wave.name, picture: wave.picture, voting: { @@ -75,7 +74,6 @@ export const convertWaveToUpdateWave = ( }, decisions_strategy: wave.wave.decisions_strategy, }, - outcomes: wave.outcomes, }); export const canEditWave = ({ diff --git a/hooks/waves/useWaveOutcomeDistributionQuery.ts b/hooks/waves/useWaveOutcomeDistributionQuery.ts new file mode 100644 index 0000000000..1bcf8ce27e --- /dev/null +++ b/hooks/waves/useWaveOutcomeDistributionQuery.ts @@ -0,0 +1,120 @@ +"use client"; + +import { useMemo } from "react"; +import { + keepPreviousData, + type InfiniteData, + type UseInfiniteQueryResult, + useInfiniteQuery, +} from "@tanstack/react-query"; + +import { QueryKey } from "@/components/react-query-wrapper/ReactQueryWrapper"; +import { getDefaultQueryRetry } from "@/components/react-query-wrapper/utils/query-utils"; +import type { ApiWaveOutcomeDistributionItemsPage } from "@/generated/models/ApiWaveOutcomeDistributionItemsPage"; +import { commonApiFetch } from "@/services/api/common-api"; + +export type WaveOutcomeDistributionSortDirection = "ASC" | "DESC"; + +export interface UseWaveOutcomeDistributionQueryParams { + readonly waveId?: string | null; + readonly outcomeIndex?: string | number | null; + readonly pageSize?: number; + readonly sortDirection?: WaveOutcomeDistributionSortDirection; + readonly enabled?: boolean; +} + +type WaveOutcomeDistributionInfiniteData = + InfiniteData; + +export type UseWaveOutcomeDistributionQueryResult = UseInfiniteQueryResult< + WaveOutcomeDistributionInfiniteData, + Error +> & { + readonly items: ApiWaveOutcomeDistributionItemsPage["data"]; + readonly totalCount: number; + readonly errorMessage?: string; + readonly isEnabled: boolean; +}; + +const DEFAULT_PAGE = 1; +const DEFAULT_PAGE_SIZE = 100; +const DEFAULT_SORT_DIRECTION: WaveOutcomeDistributionSortDirection = "ASC"; +const DEFAULT_STALE_TIME = 30_000; + +export function useWaveOutcomeDistributionQuery({ + waveId, + outcomeIndex, + pageSize = DEFAULT_PAGE_SIZE, + sortDirection = DEFAULT_SORT_DIRECTION, + enabled = true, +}: Readonly): UseWaveOutcomeDistributionQueryResult { + const normalizedWaveId = waveId?.trim() ?? ""; + const normalizedOutcomeIndex = + outcomeIndex == null ? "" : String(outcomeIndex).trim(); + const hasRequiredParams = + Boolean(normalizedWaveId) && Boolean(normalizedOutcomeIndex); + const isEnabled = hasRequiredParams && enabled; + const normalizedPageSize = + Number.isFinite(pageSize) && pageSize > 0 + ? Math.floor(pageSize) + : DEFAULT_PAGE_SIZE; + const normalizedSortDirection: WaveOutcomeDistributionSortDirection = + sortDirection === "DESC" ? "DESC" : "ASC"; + + const queryKey = useMemo( + () => [ + QueryKey.WAVE_OUTCOME_DISTRIBUTION, + normalizedWaveId, + normalizedOutcomeIndex, + normalizedPageSize, + normalizedSortDirection, + ], + [ + normalizedWaveId, + normalizedOutcomeIndex, + normalizedPageSize, + normalizedSortDirection, + ] + ); + + const query = useInfiniteQuery({ + queryKey, + queryFn: async ({ pageParam }: { pageParam?: number }) => { + const currentPage = pageParam ?? DEFAULT_PAGE; + const params: Record = { + page: currentPage.toString(), + page_size: normalizedPageSize.toString(), + sort_direction: normalizedSortDirection, + }; + + return commonApiFetch({ + endpoint: `waves/${normalizedWaveId}/outcomes/${normalizedOutcomeIndex}/distribution`, + params, + }); + }, + initialPageParam: DEFAULT_PAGE, + getNextPageParam: (lastPage) => + lastPage.next ? lastPage.page + 1 : undefined, + enabled: isEnabled, + staleTime: DEFAULT_STALE_TIME, + placeholderData: keepPreviousData, + ...getDefaultQueryRetry(), + }); + + const items = useMemo( + () => query.data?.pages.flatMap((pageData) => pageData.data) ?? [], + [query.data] + ); + const totalCount = query.data?.pages[0]?.count ?? 0; + + const errorMessage = + query.error instanceof Error ? query.error.message : undefined; + + return { + ...query, + items, + totalCount, + errorMessage, + isEnabled, + }; +} diff --git a/hooks/waves/useWaveOutcomesQuery.ts b/hooks/waves/useWaveOutcomesQuery.ts new file mode 100644 index 0000000000..7dd7a769e0 --- /dev/null +++ b/hooks/waves/useWaveOutcomesQuery.ts @@ -0,0 +1,105 @@ +"use client"; + +import { useMemo } from "react"; +import { + keepPreviousData, + type InfiniteData, + type UseInfiniteQueryResult, + useInfiniteQuery, +} from "@tanstack/react-query"; + +import { QueryKey } from "@/components/react-query-wrapper/ReactQueryWrapper"; +import { getDefaultQueryRetry } from "@/components/react-query-wrapper/utils/query-utils"; +import type { ApiWaveOutcomesPage } from "@/generated/models/ApiWaveOutcomesPage"; +import { commonApiFetch } from "@/services/api/common-api"; + +export type WaveOutcomesSortDirection = "ASC" | "DESC"; + +export interface UseWaveOutcomesQueryParams { + readonly waveId?: string | null; + readonly pageSize?: number; + readonly sortDirection?: WaveOutcomesSortDirection; + readonly enabled?: boolean; +} + +type WaveOutcomesInfiniteData = InfiniteData; + +export type UseWaveOutcomesQueryResult = UseInfiniteQueryResult< + WaveOutcomesInfiniteData, + Error +> & { + readonly outcomes: ApiWaveOutcomesPage["data"]; + readonly errorMessage?: string; + readonly isEnabled: boolean; +}; + +const DEFAULT_PAGE = 1; +const DEFAULT_PAGE_SIZE = 100; +const DEFAULT_SORT_DIRECTION: WaveOutcomesSortDirection = "DESC"; +const DEFAULT_STALE_TIME = 30_000; + +export function useWaveOutcomesQuery({ + waveId, + pageSize = DEFAULT_PAGE_SIZE, + sortDirection = DEFAULT_SORT_DIRECTION, + enabled = true, +}: Readonly): UseWaveOutcomesQueryResult { + const normalizedWaveId = waveId?.trim() ?? ""; + const hasWaveId = Boolean(normalizedWaveId); + const isEnabled = hasWaveId && enabled; + const normalizedPageSize = + Number.isFinite(pageSize) && pageSize > 0 + ? Math.floor(pageSize) + : DEFAULT_PAGE_SIZE; + const normalizedSortDirection: WaveOutcomesSortDirection = + sortDirection === "ASC" ? "ASC" : "DESC"; + + const queryKey = useMemo( + () => [ + QueryKey.WAVE_OUTCOMES, + normalizedWaveId, + normalizedPageSize, + normalizedSortDirection, + ], + [normalizedWaveId, normalizedPageSize, normalizedSortDirection] + ); + + const query = useInfiniteQuery({ + queryKey, + queryFn: async ({ pageParam }: { pageParam?: number }) => { + const currentPage = pageParam ?? DEFAULT_PAGE; + const params: Record = { + page: currentPage.toString(), + page_size: normalizedPageSize.toString(), + sort_direction: normalizedSortDirection, + }; + + return commonApiFetch({ + endpoint: `waves/${normalizedWaveId}/outcomes`, + params, + }); + }, + initialPageParam: DEFAULT_PAGE, + getNextPageParam: (lastPage) => + lastPage.next ? lastPage.page + 1 : undefined, + enabled: isEnabled, + staleTime: DEFAULT_STALE_TIME, + placeholderData: keepPreviousData, + ...getDefaultQueryRetry(), + }); + + const outcomes = useMemo( + () => query.data?.pages.flatMap((pageData) => pageData.data) ?? [], + [query.data] + ); + + const errorMessage = + query.error instanceof Error ? query.error.message : undefined; + + return { + ...query, + outcomes, + errorMessage, + isEnabled, + }; +} diff --git a/type_check_output.txt b/type_check_output.txt new file mode 100644 index 0000000000..6e14cd8cd0 --- /dev/null +++ b/type_check_output.txt @@ -0,0 +1,873 @@ + +> 6529seize@1.0.0 type-check +> tsc --noEmit -p tsconfig.json + +__tests__/app/access.test.tsx(30,35): error TS2339: Property 'children' does not exist on type '{}'. +__tests__/app/access.test.tsx(47,8): error TS2559: Type '{ children: Element; }' has no properties in common with type 'IntrinsicAttributes'. +__tests__/app/api/farcaster.route.test.ts(1,7): error TS2451: Cannot redeclare block-scoped variable 'nextResponseJson'. +__tests__/app/api/farcaster.route.test.ts(34,7): error TS2451: Cannot redeclare block-scoped variable 'mockFetchPublicUrl'. +__tests__/app/api/farcaster.route.test.ts(48,5): error TS2451: Cannot redeclare block-scoped variable 'GET'. +__tests__/app/api/pepe/resolve.route.test.ts(1,7): error TS2451: Cannot redeclare block-scoped variable 'nextResponseJson'. +__tests__/app/api/pepe/resolve.route.test.ts(21,7): error TS2451: Cannot redeclare block-scoped variable 'mockFetchPublicUrl'. +__tests__/app/api/pepe/resolve.route.test.ts(34,5): error TS2451: Cannot redeclare block-scoped variable 'GET'. +__tests__/app/api/pepe/resolve.route.test.ts(37,6): error TS2322: Type '(request: NextRequest) => Promise | NextResponse>' is not assignable to type '(request: NextRequest) => Promise | NextResponse>'. + Type 'Promise | NextResponse>' is not assignable to type 'Promise | NextResponse>'. + Type 'NextResponse<{ error: string; }> | NextResponse' is not assignable to type 'NextResponse<{ error: string; }> | NextResponse'. + Type 'NextResponse' is not assignable to type 'NextResponse<{ error: string; }> | NextResponse'. + Type 'NextResponse' is not assignable to type 'NextResponse<{ error: string; }>'. + Type 'Preview' is not assignable to type '{ error: string; }'. + Property 'error' is missing in type 'AssetPreview' but required in type '{ error: string; }'. +__tests__/app/delegationMappingToolPage.test.tsx(8,35): error TS2339: Property 'children' does not exist on type '{}'. +__tests__/app/delegationMappingToolPage.test.tsx(40,8): error TS2559: Type '{ children: Element; }' has no properties in common with type 'IntrinsicAttributes'. +__tests__/app/page.test.tsx(108,10): error TS2741: Property 'isMemeMintingActive' is missing in type '{ featuredNft: any; featuredNextgen: any; initialActivityData: any; initialTokens: any; }' but required in type '{ readonly featuredNft: NFTWithMemesExtendedData; readonly isMemeMintingActive: boolean; readonly featuredNextgen: NextGenCollection; readonly initialActivityData: InitialActivityData; readonly initialTokens: NextGenToken[]; }'. +__tests__/app/page.test.tsx(132,10): error TS2741: Property 'isMemeMintingActive' is missing in type '{ featuredNft: any; featuredNextgen: any; initialActivityData: any; initialTokens: any; }' but required in type '{ readonly featuredNft: NFTWithMemesExtendedData; readonly isMemeMintingActive: boolean; readonly featuredNextgen: NextGenCollection; readonly initialActivityData: InitialActivityData; readonly initialTokens: NextGenToken[]; }'. +__tests__/app/page.test.tsx(159,10): error TS2741: Property 'isMemeMintingActive' is missing in type '{ featuredNft: any; featuredNextgen: any; initialActivityData: any; initialTokens: any; }' but required in type '{ readonly featuredNft: NFTWithMemesExtendedData; readonly isMemeMintingActive: boolean; readonly featuredNextgen: NextGenCollection; readonly initialActivityData: InitialActivityData; readonly initialTokens: NextGenToken[]; }'. +__tests__/app/page.test.tsx(181,11): error TS2322: Type 'null' is not assignable to type 'NextGenCollection'. +__tests__/app/page.test.tsx(197,10): error TS2741: Property 'isMemeMintingActive' is missing in type '{ featuredNft: any; featuredNextgen: any; initialActivityData: any; initialTokens: any; }' but required in type '{ readonly featuredNft: NFTWithMemesExtendedData; readonly isMemeMintingActive: boolean; readonly featuredNextgen: NextGenCollection; readonly initialActivityData: InitialActivityData; readonly initialTokens: NextGenToken[]; }'. +__tests__/app/page.test.tsx(215,10): error TS2741: Property 'isMemeMintingActive' is missing in type '{ featuredNft: any; featuredNextgen: any; initialActivityData: any; initialTokens: any; }' but required in type '{ readonly featuredNft: NFTWithMemesExtendedData; readonly isMemeMintingActive: boolean; readonly featuredNextgen: NextGenCollection; readonly initialActivityData: InitialActivityData; readonly initialTokens: NextGenToken[]; }'. +__tests__/app/page.test.tsx(237,10): error TS2741: Property 'isMemeMintingActive' is missing in type '{ featuredNft: any; featuredNextgen: any; initialActivityData: any; initialTokens: any; }' but required in type '{ readonly featuredNft: NFTWithMemesExtendedData; readonly isMemeMintingActive: boolean; readonly featuredNextgen: NextGenCollection; readonly initialActivityData: InitialActivityData; readonly initialTokens: NextGenToken[]; }'. +__tests__/app/page.test.tsx(261,10): error TS2741: Property 'isMemeMintingActive' is missing in type '{ featuredNft: any; featuredNextgen: any; initialActivityData: any; initialTokens: any; }' but required in type '{ readonly featuredNft: NFTWithMemesExtendedData; readonly isMemeMintingActive: boolean; readonly featuredNextgen: NextGenCollection; readonly initialActivityData: InitialActivityData; readonly initialTokens: NextGenToken[]; }'. +__tests__/app/page.test.tsx(285,12): error TS2741: Property 'isMemeMintingActive' is missing in type '{ featuredNft: any; featuredNextgen: any; initialActivityData: any; initialTokens: any; }' but required in type '{ readonly featuredNft: NFTWithMemesExtendedData; readonly isMemeMintingActive: boolean; readonly featuredNextgen: NextGenCollection; readonly initialActivityData: InitialActivityData; readonly initialTokens: NextGenToken[]; }'. +__tests__/app/page.test.tsx(301,10): error TS2741: Property 'isMemeMintingActive' is missing in type '{ featuredNft: any; featuredNextgen: any; initialActivityData: any; initialTokens: any; }' but required in type '{ readonly featuredNft: NFTWithMemesExtendedData; readonly isMemeMintingActive: boolean; readonly featuredNextgen: NextGenCollection; readonly initialActivityData: InitialActivityData; readonly initialTokens: NextGenToken[]; }'. +__tests__/app/page.test.tsx(317,10): error TS2741: Property 'isMemeMintingActive' is missing in type '{ featuredNft: any; featuredNextgen: any; initialActivityData: any; initialTokens: any; }' but required in type '{ readonly featuredNft: NFTWithMemesExtendedData; readonly isMemeMintingActive: boolean; readonly featuredNextgen: NextGenCollection; readonly initialActivityData: InitialActivityData; readonly initialTokens: NextGenToken[]; }'. +__tests__/app/wavesPage.test.tsx(41,10): error TS2741: Property 'searchParams' is missing in type '{}' but required in type '{ readonly searchParams: Promise<{ wave?: string | undefined; drop?: string | undefined; }>; }'. +__tests__/auth/role-validation.test.ts(222,16): error TS18046: 'error' is of type 'unknown'. +__tests__/auth/role-validation.test.ts(238,16): error TS18046: 'error' is of type 'unknown'. +__tests__/auth/token-refresh-role-validation.test.ts(97,28): error TS18046: 'redeemResponse' is of type 'unknown'. +__tests__/auth/token-refresh-role-validation.test.ts(99,72): error TS18046: 'redeemResponse' is of type 'unknown'. +__tests__/auth/token-refresh-role-validation.test.ts(105,43): error TS18046: 'redeemResponse' is of type 'unknown'. +__tests__/auth/token-refresh-role-validation.test.ts(133,7): error TS18046: 'redeemResponse' is of type 'unknown'. +__tests__/auth/token-refresh-role-validation.test.ts(134,7): error TS18046: 'redeemResponse' is of type 'unknown'. +__tests__/auth/token-refresh.test.ts(156,18): error TS2339: Property 'statusCode' does not exist on type 'ApiRedeemRefreshTokenResponse | TokenRefreshServerError'. + Property 'statusCode' does not exist on type 'ApiRedeemRefreshTokenResponse'. +__tests__/auth/token-refresh.test.ts(157,18): error TS2339: Property 'serverResponse' does not exist on type 'ApiRedeemRefreshTokenResponse | TokenRefreshServerError'. + Property 'serverResponse' does not exist on type 'ApiRedeemRefreshTokenResponse'. +__tests__/components/auth/Auth.test.tsx(7,26): error TS2440: Import declaration conflicts with local declaration of 'commonApiPost'. +__tests__/components/auth/Auth.test.tsx(116,9): error TS2440: Import declaration conflicts with local declaration of 'commonApiPost'. +__tests__/components/auth/Auth.test.tsx(279,61): error TS7031: Binding element 'params' implicitly has an 'any' type. +__tests__/components/auth/Auth.test.tsx(354,61): error TS7031: Binding element 'params' implicitly has an 'any' type. +__tests__/components/auth/Auth.test.tsx(416,61): error TS7031: Binding element 'callbacks' implicitly has an 'any' type. +__tests__/components/auth/Auth.test.tsx(608,61): error TS7031: Binding element 'callbacks' implicitly has an 'any' type. +__tests__/components/auth/Auth.test.tsx(635,61): error TS7031: Binding element 'callbacks' implicitly has an 'any' type. +__tests__/components/block-picker/BlockPickerBlockNumberIncludes.test.tsx(7,8): error TS2741: Property 'disabled' is missing in type '{ blockNumberIncludes: string; setBlockNumberIncludes: () => void; }' but required in type '{ disabled: boolean; blockNumberIncludes: string; setBlockNumberIncludes: (blockNumberIncludes: string) => void; }'. +__tests__/components/block-picker/BlockPickerBlockNumberIncludes.test.tsx(16,8): error TS2741: Property 'disabled' is missing in type '{ blockNumberIncludes: string; setBlockNumberIncludes: Mock; }' but required in type '{ disabled: boolean; blockNumberIncludes: string; setBlockNumberIncludes: (blockNumberIncludes: string) => void; }'. +__tests__/components/brain/my-stream/MyStream.test.tsx(23,21): error TS7031: Binding element 'children' implicitly has an 'any' type. +__tests__/components/brain/my-stream/MyStream.test.tsx(34,24): error TS7031: Binding element 'children' implicitly has an 'any' type. +__tests__/components/brain/my-stream/MyStreamWave.test.tsx(86,21): error TS7031: Binding element 'children' implicitly has an 'any' type. +__tests__/components/brain/my-stream/MyStreamWave.test.tsx(99,24): error TS7031: Binding element 'children' implicitly has an 'any' type. +__tests__/components/brain/my-stream/tabs/MyStreamWaveTabsDefault.test.tsx(20,67): error TS2556: A spread argument must either have a tuple type or be passed to a rest parameter. +__tests__/components/brain/my-stream/tabs/MyStreamWaveTabsMeme.test.tsx(20,67): error TS2556: A spread argument must either have a tuple type or be passed to a rest parameter. +__tests__/components/brain/my-stream/votes/MyStreamWaveMyVoteInput.test.tsx(20,49): error TS2353: Object literal may only specify known properties, and 'onDropRateChange' does not exist in type 'ReactQueryWrapperContextType'. +__tests__/components/CreateDropWrapper.test.tsx(67,9): error TS2322: Type '"COMPACT"' is not assignable to type 'CreateDropViewType'. +__tests__/components/CreateDropWrapper.test.tsx(99,9): error TS2322: Type '"FULL"' is not assignable to type 'CreateDropViewType'. +__tests__/components/CreateDropWrapper.test.tsx(134,9): error TS2322: Type '"FULL"' is not assignable to type 'CreateDropViewType'. +__tests__/components/delegation/CollectionDelegation.utils.test.ts(25,37): error TS7006: Parameter 'p' implicitly has an 'any' type. +__tests__/components/distribution-plan-tool/build-phases/build-phase/form/BuildPhaseForm.test.tsx(53,3): error TS2353: Object literal may only specify known properties, and 'buildSpec' does not exist in type 'BuildPhasesPhase'. +__tests__/components/distribution-plan-tool/build-phases/build-phase/form/BuildPhaseForm.test.tsx(84,43): error TS2739: Type '{ step: DistributionPlanToolStep; setStep: Mock; fetching: boolean; runOperations: Mock; operations: any[]; fetchOperations: Mock<...>; ... 10 more ...; setToasts: Mock<...>; }' is missing the following properties from type 'DistributionPlanToolContextType': confirmedTokenId, setConfirmedTokenId +__tests__/components/distribution-plan-tool/build-phases/build-phase/form/BuildPhaseFormConfigModal.test.tsx(34,59): error TS2739: Type '{ id: string; components: never[]; }' is missing the following properties from type 'BuildPhasesPhase': allowlistId, name, description, hasRan, order +__tests__/components/distribution-plan-tool/build-phases/build-phase/form/BuildPhaseFormConfigModal.test.tsx(34,112): error TS2739: Type '{ id: string; components: never[]; }' is missing the following properties from type 'BuildPhasesPhase': allowlistId, name, description, hasRan, order +__tests__/components/distribution-plan-tool/build-phases/build-phase/form/BuildPhaseFormConfigModal.test.tsx(65,59): error TS2739: Type '{ id: string; components: any; }' is missing the following properties from type 'BuildPhasesPhase': allowlistId, name, description, hasRan, order +__tests__/components/distribution-plan-tool/build-phases/build-phase/form/BuildPhaseFormConfigModal.test.tsx(65,135): error TS2739: Type '{ id: string; components: any; }' is missing the following properties from type 'BuildPhasesPhase': allowlistId, name, description, hasRan, order +__tests__/components/distribution-plan-tool/build-phases/BuildPhases.test.tsx(45,43): error TS2739: Type '{ step: DistributionPlanToolStep; setStep: Mock; fetching: boolean; runOperations: Mock; operations: any[]; fetchOperations: Mock<...>; ... 10 more ...; setToasts: Mock<...>; }' is missing the following properties from type 'DistributionPlanToolContextType': confirmedTokenId, setConfirmedTokenId +__tests__/components/distribution-plan-tool/build-phases/SnapshotExcludeOtherSnapshots.test.tsx(47,38): error TS2322: Type '{ id: string; name: string; poolType: Pool; }[]' is not assignable to type 'DistributionPlanSnapshot[]'. + Property 'walletsCount' is missing in type '{ id: string; name: string; poolType: Pool; }' but required in type 'DistributionPlanSnapshot'. +__tests__/components/distribution-plan-tool/DistributionPlanToolPage.test.tsx(16,8): error TS2741: Property 'id' is missing in type '{}' but required in type '{ readonly id: string; }'. +__tests__/components/distribution-plan-tool/review-distribution-plan/table/ReviewDistributionPlanTable.test.tsx(11,14): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/distribution-plan-tool/review-distribution-plan/table/ReviewDistributionPlanTable.test.tsx(16,12): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/distribution-plan-tool/review-distribution-plan/table/ReviewDistributionPlanTable.test.tsx(22,16): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/distribution-plan-tool/review-distribution-plan/table/ReviewDistributionPlanTable.test.tsx(63,43): error TS2739: Type '{ phases: any; step: null; setStep: Mock; fetching: boolean; distributionPlan: null; runOperations: Mock; setState: Mock; ... 9 more ...; setToasts: Mock<...>; }' is missing the following properties from type 'DistributionPlanToolContextType': confirmedTokenId, setConfirmedTokenId +__tests__/components/distribution-plan-tool/review-distribution-plan/table/ReviewDistributionPlanTable.test.tsx(76,18): error TS2532: Object is possibly 'undefined'. +__tests__/components/distribution-plan-tool/review-distribution-plan/table/ReviewDistributionPlanTable.test.tsx(76,55): error TS2493: Tuple type '[]' of length '0' has no element at index '0'. +__tests__/components/distribution-plan-tool/review-distribution-plan/table/ReviewDistributionPlanTable.test.tsx(81,12): error TS2532: Object is possibly 'undefined'. +__tests__/components/distribution-plan-tool/review-distribution-plan/table/ReviewDistributionPlanTable.test.tsx(81,47): error TS2493: Tuple type '[]' of length '0' has no element at index '0'. +__tests__/components/distribution-plan-tool/review-distribution-plan/table/ReviewDistributionPlanTableHeader.test.tsx(39,58): error TS2322: Type '{ phase: { id: string; name: string; }; components: { id: string; name: string; }[]; }[]' is not assignable to type 'ReviewDistributionPlanTablePhase[]'. + Type '{ phase: { id: string; name: string; }; components: { id: string; name: string; }[]; }' is not assignable to type 'ReviewDistributionPlanTablePhase'. + Types of property 'phase' are incompatible. + Type '{ id: string; name: string; }' is missing the following properties from type 'ReviewDistributionPlanTableItem': type, phaseId, componentId, description, and 2 more. +__tests__/components/distribution-plan-tool/ReviewDistributionPlanTableSubscription.test.tsx(31,55): error TS2739: Type '{ wallet: string; }' is missing the following properties from type 'ApiWallet': 'display', 'tdh' +__tests__/components/distribution-plan-tool/ReviewDistributionPlanTableSubscription.test.tsx(48,17): error TS2739: Type '{ wallet: string; }' is missing the following properties from type 'ApiWallet': 'display', 'tdh' +__tests__/components/drops/create/lexical/nodes/HashtagNode.test.ts(33,12): error TS18047: 'element' is possibly 'null'. +__tests__/components/drops/create/lexical/nodes/HashtagNode.test.ts(33,20): error TS2339: Property 'getAttribute' does not exist on type 'HTMLElement | Text'. + Property 'getAttribute' does not exist on type 'Text'. +__tests__/components/drops/create/lexical/nodes/HashtagNode.test.ts(36,29): error TS2345: Argument of type 'HTMLElement | Text | null' is not assignable to parameter of type 'HTMLElement'. + Type 'null' is not assignable to type 'HTMLElement'. +__tests__/components/drops/create/lexical/nodes/HashtagNode.test.ts(38,38): error TS2345: Argument of type 'HTMLElement | Text | null' is not assignable to parameter of type 'HTMLElement'. + Type 'null' is not assignable to type 'HTMLElement'. +__tests__/components/drops/create/lexical/nodes/HashtagNode.test.ts(39,27): error TS2345: Argument of type 'LexicalNode | LexicalNode[] | null' is not assignable to parameter of type 'LexicalNode | null | undefined'. + Type 'LexicalNode[]' is missing the following properties from type 'LexicalNode': __type, __key, __parent, __prev, and 42 more. +__tests__/components/drops/create/lexical/nodes/HashtagNode.test.ts(40,12): error TS2531: Object is possibly 'null'. +__tests__/components/drops/create/lexical/nodes/HashtagNode.test.ts(40,25): error TS2339: Property 'getTextContent' does not exist on type 'LexicalNode | LexicalNode[]'. + Property 'getTextContent' does not exist on type 'LexicalNode[]'. +__tests__/components/drops/create/lexical/nodes/ImageNode.test.tsx(27,27): error TS2554: Expected 0 arguments, but got 3. +__tests__/components/drops/create/lexical/nodes/MentionNode.test.ts(42,12): error TS18047: 'element' is possibly 'null'. +__tests__/components/drops/create/lexical/nodes/MentionNode.test.ts(42,20): error TS2339: Property 'getAttribute' does not exist on type 'HTMLElement | Text'. + Property 'getAttribute' does not exist on type 'Text'. +__tests__/components/drops/create/lexical/nodes/MentionNode.test.ts(43,12): error TS18047: 'element' is possibly 'null'. +__tests__/components/drops/create/lexical/nodes/MentionNode.test.ts(50,21): error TS2531: Object is possibly 'null'. +__tests__/components/drops/create/lexical/nodes/MentionNode.test.ts(51,12): error TS18047: 'newNode' is possibly 'null'. +__tests__/components/drops/create/lexical/nodes/MentionNode.test.ts(51,20): error TS2339: Property '__mention' does not exist on type 'LexicalNode | LexicalNode[]'. + Property '__mention' does not exist on type 'LexicalNode'. +__tests__/components/drops/create/lexical/plugins/emoji/EmojiPlugin.test.tsx(119,22): error TS2352: Conversion of type 'undefined' to type '(text: string) => void' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. +__tests__/components/drops/create/lexical/plugins/emoji/EmojiPlugin.test.tsx(119,45): error TS2493: Tuple type '[]' of length '0' has no element at index '0'. +__tests__/components/drops/create/lexical/transformers/EmojiTransformer.test.ts(30,10): error TS2554: Expected 3 arguments, but got 1. +__tests__/components/drops/create/lexical/transformers/EmojiTransformer.test.ts(31,10): error TS2554: Expected 3 arguments, but got 1. +__tests__/components/drops/create/lexical/transformers/HastagTransformer.test.ts(12,32): error TS2554: Expected 3 arguments, but got 1. +__tests__/components/drops/create/lexical/transformers/HastagTransformer.test.ts(13,32): error TS2554: Expected 3 arguments, but got 1. +__tests__/components/drops/create/lexical/transformers/ImageTransformer.test.ts(15,38): error TS2554: Expected 3 arguments, but got 1. +__tests__/components/drops/create/lexical/transformers/ImageTransformer.test.ts(21,41): error TS2345: Argument of type '[string, undefined, string]' is not assignable to parameter of type 'RegExpMatchArray'. + The types returned by 'concat(...)' are incompatible between these types. + Type '(string | undefined)[]' is not assignable to type 'string[]'. + Type 'string | undefined' is not assignable to type 'string'. + Type 'undefined' is not assignable to type 'string'. +__tests__/components/drops/create/lexical/transformers/MentionTransformer.test.ts(10,23): error TS2352: Conversion of type '(node: LexicalNode | null | undefined) => node is MentionNode' to type 'Mock' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '(node: LexicalNode | null | undefined) => node is MentionNode' is missing the following properties from type 'Mock': getMockName, mock, mockClear, mockReset, and 13 more. +__tests__/components/drops/create/lexical/transformers/MentionTransformer.test.ts(15,32): error TS2554: Expected 3 arguments, but got 1. +__tests__/components/drops/create/lexical/transformers/MentionTransformer.test.ts(16,32): error TS2554: Expected 3 arguments, but got 1. +__tests__/components/drops/create/utils/CreateDropWrapper.test.tsx(122,10): error TS2322: Type '{ profile: { id: string; handle: string; pfp: null; cic: number; rep: number; tdh: number; level: number; consolidation: { id: string; classification: string; balance_tdh: number; primary_wallet: string; ... 6 more ...; consolidation_key: string; }; }; ... 21 more ...; onSubmitDrop: Mock<...>; }' is not assignable to type 'CreateDropWrapperProps'. + Types of property 'profile' are incompatible. + Type '{ id: string; handle: string; pfp: null; cic: number; rep: number; tdh: number; level: number; consolidation: { id: string; classification: string; balance_tdh: number; primary_wallet: string; wallets: never[]; ... 5 more ...; consolidation_key: string; }; }' is missing the following properties from type 'ProfileMinWithoutSubs': 'banner1_color', 'banner2_color', 'tdh_rate', 'xtdh', and 5 more. +__tests__/components/drops/create/utils/CreateDropWrapper.test.tsx(232,12): error TS2322: Type '{ profile: { id: string; handle: string; pfp: null; cic: number; rep: number; tdh: number; level: number; consolidation: { id: string; classification: string; balance_tdh: number; primary_wallet: string; ... 6 more ...; consolidation_key: string; }; }; ... 22 more ...; ref: RefObject<...>; }' is not assignable to type 'CreateDropWrapperProps'. + Types of property 'profile' are incompatible. + Type '{ id: string; handle: string; pfp: null; cic: number; rep: number; tdh: number; level: number; consolidation: { id: string; classification: string; balance_tdh: number; primary_wallet: string; wallets: never[]; ... 5 more ...; consolidation_key: string; }; }' is missing the following properties from type 'ProfileMinWithoutSubs': 'banner1_color', 'banner2_color', 'tdh_rate', 'xtdh', and 5 more. +__tests__/components/drops/create/utils/CreateDropWrapper.test.tsx(260,12): error TS2322: Type '{ profile: { id: string; handle: string; pfp: null; cic: number; rep: number; tdh: number; level: number; consolidation: { id: string; classification: string; balance_tdh: number; primary_wallet: string; ... 6 more ...; consolidation_key: string; }; }; ... 22 more ...; ref: RefObject<...>; }' is not assignable to type 'CreateDropWrapperProps'. + Types of property 'profile' are incompatible. + Type '{ id: string; handle: string; pfp: null; cic: number; rep: number; tdh: number; level: number; consolidation: { id: string; classification: string; balance_tdh: number; primary_wallet: string; wallets: never[]; ... 5 more ...; consolidation_key: string; }; }' is missing the following properties from type 'ProfileMinWithoutSubs': 'banner1_color', 'banner2_color', 'tdh_rate', 'xtdh', and 5 more. +__tests__/components/drops/create/utils/storm/CreateDropStormViewPart.test.tsx(40,94): error TS2353: Object literal may only specify known properties, and 'id' does not exist in type 'QuotedDrop'. +__tests__/components/drops/view/item/rate/give/DropListItemRateGiveSubmit.test.tsx(48,49): error TS2353: Object literal may only specify known properties, and 'onDropRateChange' does not exist in type 'ReactQueryWrapperContextType'. +__tests__/components/drops/view/part/DropPart.test.tsx(8,23): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/drops/view/part/DropPart.test.tsx(48,16): error TS2532: Object is possibly 'undefined'. +__tests__/components/drops/view/part/DropPart.test.tsx(48,50): error TS2493: Tuple type '[]' of length '0' has no element at index '0'. +__tests__/components/drops/view/part/dropPartMarkdown/linkHandlersRegistry.test.tsx(9,6): error TS2300: Duplicate identifier 'EnsureStableSeizeLinkWithSetter'. +__tests__/components/drops/view/part/dropPartMarkdown/linkHandlersRegistry.test.tsx(138,6): error TS2300: Duplicate identifier 'EnsureStableSeizeLinkWithSetter'. +__tests__/components/EnterKeyPlugin.test.tsx(138,6): error TS2352: Conversion of type '(x: unknown) => x is RangeSelection' to type 'Mock' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '(x: unknown) => x is RangeSelection' is missing the following properties from type 'Mock': getMockName, mock, mockClear, mockReset, and 13 more. +__tests__/components/EnterKeyPlugin.test.tsx(139,6): error TS2352: Conversion of type '(x: unknown) => x is NodeSelection' to type 'Mock' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '(x: unknown) => x is NodeSelection' is missing the following properties from type 'Mock': getMockName, mock, mockClear, mockReset, and 13 more. +__tests__/components/EnterKeyPlugin.test.tsx(160,6): error TS2352: Conversion of type '(x: unknown) => x is RangeSelection' to type 'Mock' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '(x: unknown) => x is RangeSelection' is missing the following properties from type 'Mock': getMockName, mock, mockClear, mockReset, and 13 more. +__tests__/components/EnterKeyPlugin.test.tsx(163,6): error TS2352: Conversion of type '(x: unknown) => x is NodeSelection' to type 'Mock' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '(x: unknown) => x is NodeSelection' is missing the following properties from type 'Mock': getMockName, mock, mockClear, mockReset, and 13 more. +__tests__/components/EnterKeyPlugin.test.tsx(198,6): error TS2352: Conversion of type '(x: unknown) => x is RangeSelection' to type 'Mock' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '(x: unknown) => x is RangeSelection' is missing the following properties from type 'Mock': getMockName, mock, mockClear, mockReset, and 13 more. +__tests__/components/gas-royalties/GasRoyaltiesTokenImage.test.tsx(43,12): error TS2531: Object is possibly 'null'. +__tests__/components/groups/page/list/card/GroupCardChat.test.tsx(9,97): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/groups/page/list/card/GroupCardChat.test.tsx(12,89): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/groups/page/list/card/GroupCardContent.test.tsx(20,68): error TS2749: 'GroupCardState' refers to a value, but is being used as a type here. Did you mean 'typeof GroupCardState'? +__tests__/components/groups/page/list/card/GroupCardView.test.tsx(8,98): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/groups/page/list/card/GroupCardView.test.tsx(9,100): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/header/AppSidebarUserStats.test.tsx(42,13): error TS2739: Type '{ handle: string; tdh: number; rep: number; profileId: string; }' is missing the following properties from type '{ readonly handle: string; readonly tdh: number; readonly tdh_rate: number; readonly xtdh: number; readonly xtdh_rate: number; readonly rep: number; readonly cic: number; readonly profileId: string | null | undefined; }': tdh_rate, xtdh, xtdh_rate, cic +__tests__/components/header/AppSidebarUserStats.test.tsx(62,13): error TS2739: Type '{ handle: string; tdh: number; rep: number; profileId: undefined; }' is missing the following properties from type '{ readonly handle: string; readonly tdh: number; readonly tdh_rate: number; readonly xtdh: number; readonly xtdh_rate: number; readonly rep: number; readonly cic: number; readonly profileId: string | null | undefined; }': tdh_rate, xtdh, xtdh_rate, cic +__tests__/components/header/AppSidebarUserStats.test.tsx(72,13): error TS2739: Type '{ handle: string; tdh: number; rep: number; profileId: string; }' is missing the following properties from type '{ readonly handle: string; readonly tdh: number; readonly tdh_rate: number; readonly xtdh: number; readonly xtdh_rate: number; readonly rep: number; readonly cic: number; readonly profileId: string | null | undefined; }': tdh_rate, xtdh, xtdh_rate, cic +__tests__/components/header/HeaderSearchModal.test.tsx(269,13): error TS2322: Type '{ name: string; items: { name: string; href: string; }[]; }' is not assignable to type 'never'. +__tests__/components/header/HeaderSearchModal.test.tsx(286,13): error TS2322: Type '{ name: string; items: { name: string; href: string; }[]; }' is not assignable to type 'never'. +__tests__/components/header/HeaderSearchModal.test.tsx(334,13): error TS2322: Type '{ name: string; items: { name: string; href: string; }[]; }' is not assignable to type 'never'. +__tests__/components/home/FeaturedNFTImageColumn.test.tsx(32,43): error TS2352: Conversion of type '{ id: number; name: string; contract: string; collection: string; season: number; meme_name: string; artist: string; mint_date: string; metadata: { name: string; description: string; image: string; animation_url: string; }; animation: null; image: string; }' to type 'NFTWithMemesExtendedData' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ id: number; name: string; contract: string; collection: string; season: number; meme_name: string; artist: string; mint_date: string; metadata: { name: string; description: string; image: string; animation_url: string; }; animation: null; image: string; }' is missing the following properties from type 'NFT': boosted_tdh, tdh, tdh__raw, tdh_rank, and 18 more. +__tests__/components/home/FeaturedNFTImageColumn.test.tsx(121,38): error TS2322: Type '{ animation: null; metadata: any; boosted_tdh: number; tdh: number; tdh__raw: number; tdh_rank: number; hodl_rate: number; id: number; contract: string; created_at: Date; mint_date?: Date; ... 42 more ...; percent_unique_not_burnt_rank: number; }' is not assignable to type 'NFTWithMemesExtendedData'. + Type '{ animation: null; metadata: any; boosted_tdh: number; tdh: number; tdh__raw: number; tdh_rank: number; hodl_rate: number; id: number; contract: string; created_at: Date; mint_date?: Date; ... 42 more ...; percent_unique_not_burnt_rank: number; }' is not assignable to type 'NFT'. + Types of property 'animation' are incompatible. + Type 'null' is not assignable to type 'string'. +__tests__/components/home/FeaturedNFTImageColumn.test.tsx(138,38): error TS2322: Type '{ animation: null; metadata: any; boosted_tdh: number; tdh: number; tdh__raw: number; tdh_rank: number; hodl_rate: number; id: number; contract: string; created_at: Date; mint_date?: Date; ... 42 more ...; percent_unique_not_burnt_rank: number; }' is not assignable to type 'NFTWithMemesExtendedData'. + Type '{ animation: null; metadata: any; boosted_tdh: number; tdh: number; tdh__raw: number; tdh_rank: number; hodl_rate: number; id: number; contract: string; created_at: Date; mint_date?: Date; ... 42 more ...; percent_unique_not_burnt_rank: number; }' is not assignable to type 'NFT'. + Types of property 'animation' are incompatible. + Type 'null' is not assignable to type 'string'. +__tests__/components/home/FeaturedNFTImageColumn.test.tsx(157,38): error TS2322: Type '{ animation: null; metadata: any; boosted_tdh: number; tdh: number; tdh__raw: number; tdh_rank: number; hodl_rate: number; id: number; contract: string; created_at: Date; mint_date?: Date; ... 42 more ...; percent_unique_not_burnt_rank: number; }' is not assignable to type 'NFTWithMemesExtendedData'. + Type '{ animation: null; metadata: any; boosted_tdh: number; tdh: number; tdh__raw: number; tdh_rank: number; hodl_rate: number; id: number; contract: string; created_at: Date; mint_date?: Date; ... 42 more ...; percent_unique_not_burnt_rank: number; }' is not assignable to type 'NFT'. + Types of property 'animation' are incompatible. + Type 'null' is not assignable to type 'string'. +__tests__/components/home/FeaturedNFTImageColumn.test.tsx(204,38): error TS2322: Type '{ id: number; animation: null; metadata: any; boosted_tdh: number; tdh: number; tdh__raw: number; tdh_rank: number; hodl_rate: number; contract: string; created_at: Date; mint_date?: Date; ... 42 more ...; percent_unique_not_burnt_rank: number; }' is not assignable to type 'NFTWithMemesExtendedData'. + Type '{ id: number; animation: null; metadata: any; boosted_tdh: number; tdh: number; tdh__raw: number; tdh_rank: number; hodl_rate: number; contract: string; created_at: Date; mint_date?: Date; ... 42 more ...; percent_unique_not_burnt_rank: number; }' is not assignable to type 'NFT'. + Types of property 'animation' are incompatible. + Type 'null' is not assignable to type 'string'. +__tests__/components/home/FeaturedNFTImageColumn.test.tsx(225,35): error TS2322: Type '{ id: number; animation: null; metadata: any; boosted_tdh: number; tdh: number; tdh__raw: number; tdh_rank: number; hodl_rate: number; contract: string; created_at: Date; mint_date?: Date; ... 42 more ...; percent_unique_not_burnt_rank: number; }' is not assignable to type 'NFTWithMemesExtendedData'. + Type '{ id: number; animation: null; metadata: any; boosted_tdh: number; tdh: number; tdh__raw: number; tdh_rank: number; hodl_rate: number; contract: string; created_at: Date; mint_date?: Date; ... 42 more ...; percent_unique_not_burnt_rank: number; }' is not assignable to type 'NFT'. + Types of property 'animation' are incompatible. + Type 'null' is not assignable to type 'string'. +__tests__/components/home/FeaturedNFTImageColumn.test.tsx(279,40): error TS2322: Type '{ animation: null; metadata: any; boosted_tdh: number; tdh: number; tdh__raw: number; tdh_rank: number; hodl_rate: number; id: number; contract: string; created_at: Date; mint_date?: Date; ... 42 more ...; percent_unique_not_burnt_rank: number; }' is not assignable to type 'NFTWithMemesExtendedData'. + Type '{ animation: null; metadata: any; boosted_tdh: number; tdh: number; tdh__raw: number; tdh_rank: number; hodl_rate: number; id: number; contract: string; created_at: Date; mint_date?: Date; ... 42 more ...; percent_unique_not_burnt_rank: number; }' is not assignable to type 'NFT'. + Types of property 'animation' are incompatible. + Type 'null' is not assignable to type 'string'. +__tests__/components/home/LatestDropSection.test.tsx(20,43): error TS2352: Conversion of type '{ id: number; name: string; contract: string; collection: string; season: number; meme_name: string; artist: string; mint_date: string; metadata: { image_details: { format: string; width: number; height: number; }; }; animation: null; }' to type 'NFTWithMemesExtendedData' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ id: number; name: string; contract: string; collection: string; season: number; meme_name: string; artist: string; mint_date: string; metadata: { image_details: { format: string; width: number; height: number; }; }; animation: null; }' is missing the following properties from type 'NFT': boosted_tdh, tdh, tdh__raw, tdh_rank, and 19 more. +__tests__/components/ipfs/IPFSContext.test.tsx(60,5): error TS2322: Type 'undefined' is not assignable to type 'string'. +__tests__/components/ipfs/IPFSContext.test.tsx(61,5): error TS2322: Type 'undefined' is not assignable to type 'string'. +__tests__/components/latest-activity/ActivityTable.test.tsx(55,43): error TS2352: Conversion of type '({ contract: string; from_address: "0xfrom1"; to_address: "0xto1"; token_id: number; transaction: string; value: number; gas: number; gas_gwei: number; gas_price_gwei: number; royalties: number; token_count: number; from_display: string; to_display: string; transaction_date: string; } | { ...; })[]' to type 'Transaction[]' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ contract: string; from_address: "0xfrom1"; to_address: "0xto1"; token_id: number; transaction: string; value: number; gas: number; gas_gwei: number; gas_price_gwei: number; royalties: number; token_count: number; from_display: string; to_display: string; transaction_date: string; } | { ...; }' is not comparable to type 'Transaction'. + Type '{ contract: string; from_address: "0xfrom2"; to_address: "0xto2"; token_id: number; transaction: string; value: number; gas: number; gas_gwei: number; gas_price_gwei: number; royalties: number; token_count: number; from_display: string; to_display: string; transaction_date: string; }' is missing the following properties from type 'Transaction': created_at, block, gas_price +__tests__/components/latest-activity/ActivityTable.test.tsx(188,45): error TS2352: Conversion of type '{ contract: string; token_id: number; from_address: "0xfrom"; to_address: "0xto"; transaction: string; value: number; gas: number; gas_gwei: number; gas_price_gwei: number; royalties: number; token_count: number; from_display: string; to_display: string; transaction_date: string; }' to type 'Transaction' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ contract: string; token_id: number; from_address: "0xfrom"; to_address: "0xto"; transaction: string; value: number; gas: number; gas_gwei: number; gas_price_gwei: number; royalties: number; token_count: number; from_display: string; to_display: string; transaction_date: string; }' is missing the following properties from type 'Transaction': created_at, block, gas_price +__tests__/components/latest-activity/LatestActivity.test.tsx(50,3): error TS2352: Conversion of type '{ id: string; token_id: string; contract: string; transaction_date: string; transaction_type: string; from_address: "0xfrom"; to_address: "0xto"; eth_price: string; usd_price: string; }' to type 'Transaction' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ id: string; token_id: string; contract: string; transaction_date: string; transaction_type: string; from_address: "0xfrom"; to_address: "0xto"; eth_price: string; usd_price: string; }' is missing the following properties from type 'Transaction': created_at, transaction, block, from_display, and 8 more. +__tests__/components/latest-activity/LatestActivity.test.tsx(64,3): error TS2352: Conversion of type '{ id: number; contract: string; token_id: string; name: string; }' to type 'NFT' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ id: number; contract: string; token_id: string; name: string; }' is missing the following properties from type 'NFT': boosted_tdh, tdh, tdh__raw, tdh_rank, and 22 more. +__tests__/components/latest-activity/LatestActivity.test.tsx(73,3): error TS2352: Conversion of type '{ id: string; name: string; contract: string; }' to type 'NextGenCollection' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ id: string; name: string; contract: string; }' is missing the following properties from type 'NextGenCollection': created_at, updated_at, artist, description, and 21 more. +__tests__/components/memelab/MemeLab.helpers.test.tsx(76,11): error TS2740: Type '{ id: number; percent_unique: number; percent_unique_cleaned: number; hodlers: number; metadata_collection: string; meme_references: never[]; name: string; website: string; }' is missing the following properties from type 'LabExtendedData': created_at, collection_size, edition_size, edition_size_rank, and 12 more. +__tests__/components/memes/drops/MemeParticipationDrop.test.tsx(33,101): error TS2339: Property 'FEED' does not exist on type 'typeof DropLocation'. +__tests__/components/memes/drops/MemeParticipationDrop.test.tsx(38,101): error TS2339: Property 'FEED' does not exist on type 'typeof DropLocation'. +__tests__/components/memes/drops/MemeParticipationDrop.test.tsx(46,42): error TS2739: Type '{ drop: any; }' is missing the following properties from type 'ActiveDropState': action, partId +__tests__/components/memes/drops/MemeParticipationDrop.test.tsx(46,105): error TS2339: Property 'FEED' does not exist on type 'typeof DropLocation'. +__tests__/components/mint-countdown-box/MemePageMintCountdown.test.tsx(60,7): error TS2739: Type '{ instanceId: number; total: number; totalMax: number; remaining: number; cost: number; startDate: number; endDate: number; status: ManifoldClaimStatus.UPCOMING; phase: ManifoldPhase.PUBLIC; memePhase: undefined; isFetching: false; isFinalized: false; }' is missing the following properties from type 'ManifoldClaim': isSoldOut, isError +__tests__/components/navigation/ViewContext.test.tsx(29,18): error TS2304: Cannot find name 'NavItem'. +__tests__/components/navigation/ViewContext.test.tsx(46,15): error TS2339: Property 'mockReturnValue' does not exist on type '() => string'. +__tests__/components/navigation/ViewContext.test.tsx(47,13): error TS2339: Property 'mockReturnValue' does not exist on type '() => AppRouterInstance'. +__tests__/components/navigation/ViewContext.test.tsx(50,19): error TS2339: Property 'mockReturnValue' does not exist on type '() => ReadonlyURLSearchParams'. +__tests__/components/navigation/ViewContext.test.tsx(71,16): error TS2304: Cannot find name 'NavItem'. +__tests__/components/navigation/ViewContext.test.tsx(87,16): error TS2304: Cannot find name 'NavItem'. +__tests__/components/navigation/ViewContext.test.tsx(103,16): error TS2304: Cannot find name 'NavItem'. +__tests__/components/nextGen/admin/NextGenAdminAcceptAddressesAndPercentages.test.tsx(102,48): error TS2345: Argument of type '{ address: string; }' is not assignable to parameter of type 'SeizeConnectContextType'. + Type '{ address: string; }' is missing the following properties from type 'SeizeConnectContextType': walletName, walletIcon, isSafeWallet, seizeConnect, and 10 more. +__tests__/components/nextGen/admin/NextGenAdminAcceptAddressesAndPercentages.test.tsx(103,40): error TS2345: Argument of type '{ data: boolean; }' is not assignable to parameter of type 'UseReadContractReturnType'. + Type '{ data: boolean; }' is not assignable to type '{ data: unknown; error: ReadContractErrorType; isError: true; isPending: false; isLoading: false; isLoadingError: false; isRefetchError: true; isSuccess: false; isPlaceholderData: false; ... 17 more ...; queryKey: readonly unknown[]; } | { ...; } | { ...; }'. + Type '{ data: boolean; }' is missing the following properties from type '{ data: unknown; isError: false; error: null; isPending: false; isLoading: false; isLoadingError: false; isRefetchError: false; isSuccess: true; isPlaceholderData: true; status: "success"; dataUpdatedAt: number; ... 15 more ...; queryKey: readonly unknown[]; }': isError, error, isPending, isLoading, and 22 more. +__tests__/components/nextGen/admin/NextGenAdminAcceptAddressesAndPercentages.test.tsx(104,42): error TS2345: Argument of type '{ data: boolean; }' is not assignable to parameter of type 'UseReadContractReturnType'. + Type '{ data: boolean; }' is not assignable to type '{ data: unknown; error: ReadContractErrorType; isError: true; isPending: false; isLoading: false; isLoadingError: false; isRefetchError: true; isSuccess: false; isPlaceholderData: false; ... 17 more ...; queryKey: readonly unknown[]; } | { ...; } | { ...; }'. + Type '{ data: boolean; }' is missing the following properties from type '{ data: unknown; isError: false; error: null; isPending: false; isLoading: false; isLoadingError: false; isRefetchError: false; isSuccess: true; isPlaceholderData: true; status: "success"; dataUpdatedAt: number; ... 15 more ...; queryKey: readonly unknown[]; }': isError, error, isPending, isLoading, and 22 more. +__tests__/components/nextGen/admin/NextGenAdminAcceptAddressesAndPercentages.test.tsx(105,44): error TS2345: Argument of type 'number' is not assignable to parameter of type 'UseReadContractReturnType'. +__tests__/components/nextGen/admin/NextGenAdminAcceptAddressesAndPercentages.test.tsx(107,44): error TS2345: Argument of type '{ data: string[]; }' is not assignable to parameter of type 'UseReadContractsReturnType>'. + Type '{ data: string[]; }' is missing the following properties from type '{ data: ReadContractsData; isError: false; error: null; isPending: false; isLoading: false; isLoadingError: false; isRefetchError: false; isSuccess: true; isPlaceholderData: true; ... 17 more ...; queryKey: readonly unknown[]; }': isError, error, isPending, isLoading, and 22 more. +__tests__/components/nextGen/admin/NextGenAdminAcceptAddressesAndPercentages.test.tsx(109,48): error TS2345: Argument of type '{ writeContract: jest.Mock; reset: jest.Mock; isLoading: boolean; isSuccess: boolean; isError: boolean; data: null; error: null; params: {}; }' is not assignable to parameter of type '{ data: `0x${string}` | undefined; params: { address: `0x${string}`; abi: any; chainId: 1 | 5 | 11155111; functionName: string; }; error: WriteContractErrorType | null; ... 4 more ...; isError: boolean; }'. + Types of property 'data' are incompatible. + Type 'null' is not assignable to type '`0x${string}` | undefined'. +__tests__/components/nextGen/admin/NextGenAdminAcceptAddressesAndPercentages.test.tsx(112,44): error TS2345: Argument of type '(config: any) => { data: (string | number | boolean)[]; } | { data: null; }' is not assignable to parameter of type '(parameters?: UseReadContractParameters | undefined) => UseReadContractReturnType'. + Type '{ data: (string | number | boolean)[]; } | { data: null; }' is not assignable to type 'UseReadContractReturnType'. + Type '{ data: (string | number | boolean)[]; }' is not assignable to type 'UseReadContractReturnType'. + Type '{ data: (string | number | boolean)[]; }' is not assignable to type '{ data: unknown; error: ReadContractErrorType; isError: true; isPending: false; isLoading: false; isLoadingError: false; isRefetchError: true; isSuccess: false; isPlaceholderData: false; ... 17 more ...; queryKey: readonly unknown[]; } | { ...; } | { ...; }'. + Type '{ data: (string | number | boolean)[]; }' is missing the following properties from type '{ data: unknown; isError: false; error: null; isPending: false; isLoading: false; isLoadingError: false; isRefetchError: false; isSuccess: true; isPlaceholderData: true; status: "success"; dataUpdatedAt: number; ... 15 more ...; queryKey: readonly unknown[]; }': isError, error, isPending, isLoading, and 22 more. +__tests__/components/nextGen/admin/NextGenAdminAcceptAddressesAndPercentages.test.tsx(305,48): error TS2345: Argument of type '{ isSuccess: boolean; data: string; writeContract: jest.Mock; reset: jest.Mock; isLoading: boolean; isError: boolean; error: null; params: {}; }' is not assignable to parameter of type '{ data: `0x${string}` | undefined; params: { address: `0x${string}`; abi: any; chainId: 1 | 5 | 11155111; functionName: string; }; error: WriteContractErrorType | null; ... 4 more ...; isError: boolean; }'. + Types of property 'data' are incompatible. + Type 'string' is not assignable to type '`0x${string}`'. +__tests__/components/nextGen/admin/NextGenAdminAcceptAddressesAndPercentages.test.tsx(319,48): error TS2345: Argument of type '{ isError: boolean; error: Error; writeContract: jest.Mock; reset: jest.Mock; isLoading: boolean; isSuccess: boolean; data: null; params: {}; }' is not assignable to parameter of type '{ data: `0x${string}` | undefined; params: { address: `0x${string}`; abi: any; chainId: 1 | 5 | 11155111; functionName: string; }; error: WriteContractErrorType | null; ... 4 more ...; isError: boolean; }'. + Types of property 'data' are incompatible. + Type 'null' is not assignable to type '`0x${string}` | undefined'. +__tests__/components/nextGen/collections/collectionParts/NextGenCollectionSlideshow.test.tsx(30,28): error TS2352: Conversion of type '{ id: number; name: string; token_id: number; }[]' to type 'NextGenToken[]' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Object literal may only specify known properties, and 'token_id' does not exist in type 'NextGenToken'. +__tests__/components/nextGen/collections/nextgenToken/NextGenTokenProperties.test.tsx(10,71): error TS2345: Argument of type '(this: number, locales?: string | string[], options?: Intl.NumberFormatOptions) => string' is not assignable to parameter of type '(locales?: LocalesArgument, options?: NumberFormatOptions | undefined) => string'. + Types of parameters 'locales' and 'locales' are incompatible. + Type 'LocalesArgument' is not assignable to type 'string | string[] | undefined'. + Type 'Locale' is not assignable to type 'string | string[] | undefined'. + Type 'Locale' is missing the following properties from type 'string[]': length, pop, push, concat, and 35 more. +__tests__/components/nextGen/nextgen_helpers.extraCoverage.test.ts(5,45): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nextGen/NextGenCollectionProvenanceRow.test.tsx(34,3): error TS2353: Object literal may only specify known properties, and 'tokens' does not exist in type 'NextGenCollection'. +__tests__/components/nextGen/NextGenTokenImage.test.tsx(343,48): error TS2820: Type '"trait_score"' is not assignable to type 'NextGenTokenRarityType | undefined'. Did you mean 'NextGenTokenRarityType.RARITY_SCORE'? +__tests__/components/nextGen/NextGenTokenRarity.test.tsx(86,71): error TS2345: Argument of type '(this: number, locales?: string | string[], options?: Intl.NumberFormatOptions) => string' is not assignable to parameter of type '(locales?: LocalesArgument, options?: NumberFormatOptions | undefined) => string'. + Types of parameters 'locales' and 'locales' are incompatible. + Type 'LocalesArgument' is not assignable to type 'string | string[] | undefined'. + Type 'Locale' is not assignable to type 'string | string[] | undefined'. + Type 'Locale' is missing the following properties from type 'string[]': length, pop, push, concat, and 35 more. +__tests__/components/nft-image/NFTImage.test.tsx(97,13): error TS2741: Property 'showBalance' is missing in type '{ nft: { id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; animation: null; }; animation: boolean; height: 300; balance: number; showUnseized: boolean; }' but required in type 'Readonly'. +__tests__/components/nft-image/NFTImage.test.tsx(109,9): error TS2322: Type '{ metadata: { image: string; animation_url: string; animation_details: { format: string; }; }; animation: string; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is not assignable to type 'BaseNFT | NFTLite'. + Type '{ metadata: { image: string; animation_url: string; animation_details: { format: string; }; }; animation: string; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is missing the following properties from type 'BaseNFT': created_at, mint_price, supply, collection, and 14 more. +__tests__/components/nft-image/NFTImage.test.tsx(131,35): error TS2322: Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is not assignable to type 'BaseNFT | NFTLite'. + Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is missing the following properties from type 'BaseNFT': created_at, mint_price, supply, collection, and 14 more. +__tests__/components/nft-image/NFTImage.test.tsx(151,35): error TS2322: Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is not assignable to type 'BaseNFT | NFTLite'. + Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is missing the following properties from type 'BaseNFT': created_at, mint_price, supply, collection, and 14 more. +__tests__/components/nft-image/NFTImage.test.tsx(158,35): error TS2322: Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is not assignable to type 'BaseNFT | NFTLite'. + Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is missing the following properties from type 'BaseNFT': created_at, mint_price, supply, collection, and 14 more. +__tests__/components/nft-image/NFTImage.test.tsx(165,35): error TS2322: Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is not assignable to type 'BaseNFT | NFTLite'. + Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is missing the following properties from type 'BaseNFT': created_at, mint_price, supply, collection, and 14 more. +__tests__/components/nft-image/NFTImage.test.tsx(171,35): error TS2322: Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is not assignable to type 'BaseNFT | NFTLite'. + Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is missing the following properties from type 'BaseNFT': created_at, mint_price, supply, collection, and 14 more. +__tests__/components/nft-image/NFTImage.test.tsx(198,13): error TS2741: Property 'showBalance' is missing in type '{ animation: false; nft: { id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; animation: null; }; height: 300; balance: number; showUnseized: boolean; }' but required in type 'Readonly'. +__tests__/components/nft-image/NFTImage.test.tsx(207,40): error TS2322: Type '{ animation: null; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is not assignable to type 'BaseNFT | NFTLite'. + Type '{ animation: null; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is missing the following properties from type 'NFTLite': icon, scaled +__tests__/components/nft-image/NFTImage.test.tsx(221,40): error TS2322: Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is not assignable to type 'BaseNFT | NFTLite'. + Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is missing the following properties from type 'BaseNFT': created_at, mint_price, supply, collection, and 14 more. +__tests__/components/nft-image/NFTImage.test.tsx(236,40): error TS2322: Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is not assignable to type 'BaseNFT | NFTLite'. + Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is missing the following properties from type 'BaseNFT': created_at, mint_price, supply, collection, and 14 more. +__tests__/components/nft-image/NFTImage.test.tsx(250,40): error TS2322: Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is not assignable to type 'BaseNFT | NFTLite'. + Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is missing the following properties from type 'BaseNFT': created_at, mint_price, supply, collection, and 14 more. +__tests__/components/nft-image/NFTImage.test.tsx(265,40): error TS2322: Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is not assignable to type 'BaseNFT | NFTLite'. + Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is missing the following properties from type 'BaseNFT': created_at, mint_price, supply, collection, and 14 more. +__tests__/components/nft-image/NFTImage.test.tsx(280,40): error TS2322: Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is not assignable to type 'BaseNFT | NFTLite'. + Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is missing the following properties from type 'BaseNFT': created_at, mint_price, supply, collection, and 14 more. +__tests__/components/nft-image/NFTImage.test.tsx(294,40): error TS2322: Type '{ animation: string; metadata: { image: string; animation: string; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is not assignable to type 'BaseNFT | NFTLite'. + Type '{ animation: string; metadata: { image: string; animation: string; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is missing the following properties from type 'BaseNFT': created_at, mint_price, supply, collection, and 14 more. +__tests__/components/nft-image/NFTImage.test.tsx(309,61): error TS2322: Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is not assignable to type 'BaseNFT | NFTLite'. + Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is missing the following properties from type 'BaseNFT': created_at, mint_price, supply, collection, and 14 more. +__tests__/components/nft-image/NFTImage.test.tsx(321,42): error TS2322: Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is not assignable to type 'BaseNFT | NFTLite'. + Type '{ animation: string; metadata: { image: string; animation: string; animation_details: { format: string; }; }; id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; }' is missing the following properties from type 'BaseNFT': created_at, mint_price, supply, collection, and 14 more. +__tests__/components/nft-image/NFTImage.test.tsx(339,15): error TS2741: Property 'showBalance' is missing in type '{ nft: any; animation: boolean; height: 300; balance: number; showUnseized: boolean; }' but required in type 'Readonly'. +__tests__/components/nft-image/NFTImage.test.tsx(352,15): error TS2741: Property 'showBalance' is missing in type '{ nft: any; animation: true; height: 300; balance: number; showUnseized: boolean; }' but required in type 'Readonly'. +__tests__/components/nft-image/NFTImage.test.tsx(369,15): error TS2741: Property 'showBalance' is missing in type '{ nft: any; animation: true; height: 300; balance: number; showUnseized: boolean; }' but required in type 'Readonly'. +__tests__/components/nft-image/NFTImage.test.tsx(379,7): error TS2322: Type '{ height: 650; balance: number; showOwned: boolean; showUnseized: boolean; transparentBG: true; id: string; showOriginal: true; showThumbnail: true; nft: { id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; animation: null; }; animation: boolean; }' is not assignable to type 'IntrinsicAttributes & Readonly'. + Property 'balance' does not exist on type 'IntrinsicAttributes & Readonly'. +__tests__/components/nft-image/NFTImage.test.tsx(402,15): error TS2741: Property 'showBalance' is missing in type '{ nft: any; animation: boolean; height: 300; balance: number; showUnseized: boolean; }' but required in type 'Readonly'. +__tests__/components/nft-image/NFTImage.test.tsx(409,34): error TS2741: Property 'showBalance' is missing in type '{ height: 300; nft: { id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; animation: null; }; animation: boolean; balance: number; showUnseized: boolean; }' but required in type 'Readonly'. +__tests__/components/nft-image/NFTImage.test.tsx(412,15): error TS2741: Property 'showBalance' is missing in type '{ height: 650; nft: { id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; animation: null; }; animation: boolean; balance: number; showUnseized: boolean; }' but required in type 'Readonly'. +__tests__/components/nft-image/NFTImage.test.tsx(415,15): error TS2741: Property 'showBalance' is missing in type '{ height: "full"; nft: { id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; animation: null; }; animation: boolean; balance: number; showUnseized: boolean; }' but required in type 'Readonly'. +__tests__/components/nft-image/NFTImage.test.tsx(421,61): error TS2322: Type '{ balance: number; showUnseized: boolean; nft: { id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; animation: null; }; animation: boolean; height: 300; }' is not assignable to type 'IntrinsicAttributes & Readonly'. + Property 'balance' does not exist on type 'IntrinsicAttributes & Readonly'. +__tests__/components/nft-image/NFTImage.test.tsx(425,42): error TS2322: Type '{ balance: number; showUnseized: boolean; nft: { id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; animation: null; }; animation: boolean; height: 300; }' is not assignable to type 'IntrinsicAttributes & Readonly'. + Property 'balance' does not exist on type 'IntrinsicAttributes & Readonly'. +__tests__/components/nft-image/NFTImage.test.tsx(429,42): error TS2322: Type '{ balance: number; nft: { id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; animation: null; }; animation: boolean; height: 300; showUnseized: boolean; }' is not assignable to type 'IntrinsicAttributes & Readonly'. + Property 'balance' does not exist on type 'IntrinsicAttributes & Readonly'. +__tests__/components/nft-image/NFTImage.test.tsx(435,61): error TS2322: Type '{ balance: number; showOwned: boolean; nft: { id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; animation: null; }; animation: boolean; height: 300; showUnseized: boolean; }' is not assignable to type 'IntrinsicAttributes & Readonly'. + Property 'balance' does not exist on type 'IntrinsicAttributes & Readonly'. +__tests__/components/nft-image/NFTImage.test.tsx(440,42): error TS2322: Type '{ balance: number; showOwned: boolean; nft: { id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; animation: null; }; animation: boolean; height: 300; showUnseized: boolean; }' is not assignable to type 'IntrinsicAttributes & Readonly'. + Property 'balance' does not exist on type 'IntrinsicAttributes & Readonly'. +__tests__/components/nft-image/NFTImage.test.tsx(443,42): error TS2322: Type '{ balance: number; nft: { id: number; contract: string; token_id: string; name: string; image: string; thumbnail: string; animation: null; }; animation: boolean; height: 300; showUnseized: boolean; }' is not assignable to type 'IntrinsicAttributes & Readonly'. + Property 'balance' does not exist on type 'IntrinsicAttributes & Readonly'. +__tests__/components/nft-image/renderers/NFTVideoRenderer.test.tsx(44,3): error TS2353: Object literal may only specify known properties, and 'token_id' does not exist in type 'BaseNFT'. +__tests__/components/nft-image/renderers/NFTVideoRenderer.test.tsx(153,35): error TS2322: Type 'null' is not assignable to type 'string | undefined'. +__tests__/components/nft-image/renderers/NFTVideoRenderer.test.tsx(272,9): error TS2322: Type 'null' is not assignable to type 'string | undefined'. +__tests__/components/nft-image/renderers/NFTVideoRenderer.test.tsx(273,9): error TS2322: Type 'null' is not assignable to type 'string | undefined'. +__tests__/components/nft-picker/NftPicker.utils.test.ts(102,7): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(103,7): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(104,7): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(105,7): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(106,7): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(108,29): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(108,33): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(108,37): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(108,41): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(112,39): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(112,43): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(112,47): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(112,51): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(112,55): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(114,16): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(114,25): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(115,16): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(115,25): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(118,31): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(118,35): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(118,39): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(118,43): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(118,47): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(122,33): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(122,42): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(130,33): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(137,16): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(137,25): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(138,16): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(138,25): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(144,56): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(144,71): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(150,26): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(150,30): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(151,26): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(151,30): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(152,26): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(152,30): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(157,16): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(157,25): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(158,16): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(158,26): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(161,29): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(161,33): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(161,38): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/nft-picker/NftPicker.utils.test.ts(161,43): error TS2737: BigInt literals are not available when targeting lower than ES2020. +__tests__/components/NumberTrait.test.tsx(12,33): error TS2322: Type '"size"' is not assignable to type 'keyof TraitsData'. +__tests__/components/NumberTrait.test.tsx(26,33): error TS2322: Type '"size"' is not assignable to type 'keyof TraitsData'. +__tests__/components/NumberTrait.test.tsx(26,56): error TS2353: Object literal may only specify known properties, and 'size' does not exist in type 'TraitsData'. +__tests__/components/providers/AppKitAdapterManager.test.ts(91,19): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(109,19): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(126,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(128,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(143,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(155,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(157,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(169,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(171,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(184,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(186,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(201,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(208,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(215,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(218,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(261,28): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(263,28): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(274,28): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(276,28): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(287,28): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(289,28): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(299,28): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(301,28): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(312,28): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(314,28): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(326,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(327,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(330,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(331,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(335,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(336,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(342,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(343,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(349,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(350,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(363,17): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(370,17): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(381,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(382,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(390,30): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(457,33): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(463,34): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(464,35): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(472,17): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(473,17): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(565,31): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(579,15): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(586,32): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(587,32): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(605,17): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(612,15): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(637,28): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(642,31): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(665,28): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(666,31): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(681,28): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(682,31): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(697,28): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/AppKitAdapterManager.test.ts(698,31): error TS2554: Expected 2 arguments, but got 1. +__tests__/components/providers/metadata.test.ts(58,14): error TS18048: 'metadata.openGraph.images' is possibly 'undefined'. +__tests__/components/providers/metadata.test.ts(58,41): error TS2339: Property 'length' does not exist on type 'OGImage | OGImage[]'. + Property 'length' does not exist on type 'URL'. +__tests__/components/providers/metadata.test.ts(85,32): error TS2339: Property 'card' does not exist on type 'Twitter'. + Property 'card' does not exist on type 'TwitterMetadata'. +__tests__/components/react-query-wrapper/ReactQueryWrapper.test.tsx(34,11): error TS2352: Conversion of type 'ReactQueryWrapperContextType' to type 'ContextType' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + The types returned by 'waitAndInvalidateDrops()' are incompatible between these types. + Type 'void' is not comparable to type 'Promise'. +__tests__/components/rememes/RememeAddComponent.test.tsx(47,7): error TS2322: Type 'string' is not assignable to type 'Date'. +__tests__/components/rememes/RememeAddComponent.test.tsx(60,7): error TS2322: Type 'string' is not assignable to type 'Date'. +__tests__/components/TableOfLevels.test.tsx(9,71): error TS2345: Argument of type '(this: number, locales?: string | string[], options?: Intl.NumberFormatOptions) => string' is not assignable to parameter of type '(locales?: LocalesArgument, options?: NumberFormatOptions | undefined) => string'. + Types of parameters 'locales' and 'locales' are incompatible. + Type 'LocalesArgument' is not assignable to type 'string | string[] | undefined'. + Type 'Locale' is not assignable to type 'string | string[] | undefined'. + Type 'Locale' is missing the following properties from type 'string[]': length, pop, push, concat, and 35 more. +__tests__/components/user/collected/cards/UserPageCollectedCards.test.tsx(91,8): error TS2741: Property 'dataTransfer' is missing in type '{ cards: any; totalPages: number; page: number; showDataRow: true; filters: any; setPage: Mock; }' but required in type '{ readonly cards: CollectedCard[]; readonly totalPages: number; readonly page: number; readonly showDataRow: boolean; readonly filters: ProfileCollectedFilters; readonly setPage: (page: number) => void; readonly dataTransfer: CollectedCard[]; readonly isTransferLoading?: boolean | undefined; }'. +__tests__/components/user/collected/cards/UserPageCollectedCards.test.tsx(113,8): error TS2741: Property 'dataTransfer' is missing in type '{ cards: any; totalPages: number; page: number; showDataRow: false; filters: any; setPage: () => void; }' but required in type '{ readonly cards: CollectedCard[]; readonly totalPages: number; readonly page: number; readonly showDataRow: boolean; readonly filters: ProfileCollectedFilters; readonly setPage: (page: number) => void; readonly dataTransfer: CollectedCard[]; readonly isTransferLoading?: boolean | undefined; }'. +__tests__/components/user/collected/cards/UserPageCollectedCards.test.tsx(128,8): error TS2741: Property 'dataTransfer' is missing in type '{ cards: never[]; totalPages: number; page: number; showDataRow: false; filters: any; setPage: () => void; }' but required in type '{ readonly cards: CollectedCard[]; readonly totalPages: number; readonly page: number; readonly showDataRow: boolean; readonly filters: ProfileCollectedFilters; readonly setPage: (page: number) => void; readonly dataTransfer: CollectedCard[]; readonly isTransferLoading?: boolean | undefined; }'. +__tests__/components/user/collected/cards/UserPageCollectedCardsNoCards.test.tsx(11,9): error TS2741: Property 'boost' is missing in type '{ id: number; start_index: number; end_index: number; count: number; name: string; display: string; }' but required in type 'MemeSeason'. +__tests__/components/user/collected/filters/UserPageCollectedFiltersCollection.test.tsx(2,48): error TS2307: Cannot find module '@/components/user/collected/filters/UserPageCollectedFiltersCollection' or its corresponding type declarations. +__tests__/components/user/collected/filters/UserPageCollectedFiltersSzn.test.tsx(21,11): error TS2741: Property 'boost' is missing in type '{ id: number; start_index: number; end_index: number; count: number; name: string; display: string; }' but required in type 'MemeSeason'. +__tests__/components/user/identity/statements/utils/UserPageIdentityAddStatementsForm.test.tsx(17,40): error TS2740: Type '{ onProfileStatementAdd: Mock; }' is missing the following properties from type 'ReactQueryWrapperContextType': setProfile, setWave, setWavesOverviewPage, setWaveDrops, and 22 more. +__tests__/components/user/identity/statements/utils/UserPageIdentityDeleteStatementModal.test.tsx(35,3): error TS2322: Type '"General"' is not assignable to type 'STATEMENT_TYPE'. +__tests__/components/user/identity/statements/utils/UserPageIdentityDeleteStatementModal.test.tsx(36,3): error TS2322: Type '"Test Group"' is not assignable to type 'STATEMENT_GROUP'. +__tests__/components/user/identity/statements/utils/UserPageIdentityDeleteStatementModal.test.tsx(43,3): error TS2322: Type '"General"' is not assignable to type 'ApiProfileClassification'. +__tests__/components/user/identity/statements/utils/UserPageIdentityDeleteStatementModal.test.tsx(80,27): error TS2739: Type '{ requestAuth: Mock; setToast: Mock; connectedProfile: null; activeProfileProxy: null; showWaves: boolean; setShowWaves: Mock; receivedGasAllocations: never[]; setReceivedGasAllocations: Mock<...>; }' is missing the following properties from type 'AuthContextType': fetchingProfile, connectionStatus, receivedProfileProxies, setActiveProfileProxy +__tests__/components/user/identity/statements/utils/UserPageIdentityDeleteStatementModal.test.tsx(81,42): error TS2740: Type '{ onProfileStatementRemove: Mock; }' is missing the following properties from type 'ReactQueryWrapperContextType': setProfile, setWave, setWavesOverviewPage, setWaveDrops, and 22 more. +__tests__/components/user/proxy/proxy/list/ProxyActionRowStatus.test.tsx(19,133): error TS2322: Type 'undefined' is not assignable to type 'string | null'. +__tests__/components/user/rep/modify-rep/UserPageRepModifyModal.test.tsx(29,42): error TS2740: Type '{ onProfileRepModify: Mock; }' is missing the following properties from type 'ReactQueryWrapperContextType': setProfile, setWave, setWavesOverviewPage, setWaveDrops, and 22 more. +__tests__/components/user/rep/modify-rep/UserPageRepModifyModal.test.tsx(43,42): error TS2740: Type '{ onProfileRepModify: Mock; }' is missing the following properties from type 'ReactQueryWrapperContextType': setProfile, setWave, setWavesOverviewPage, setWaveDrops, and 22 more. +__tests__/components/user/stats/activity/distributions/UserPageStatsActivityDistributionsTable.test.tsx(42,51): error TS2322: Type '{ card_id: number; contract: string; wallet: string; wallet_display: string; card_name: string; mint_date: string; airdrops: number; total_spots: number; minted: number; allowlist: { phase: string; spots: number; }[]; total_count: number; phases: string[]; }[]' is not assignable to type 'Distribution[]'. + Type '{ card_id: number; contract: string; wallet: string; wallet_display: string; card_name: string; mint_date: string; airdrops: number; total_spots: number; minted: number; allowlist: { phase: string; spots: number; }[]; total_count: number; phases: string[]; }' is not assignable to type 'Distribution'. + Types of property 'allowlist' are incompatible. + Type '{ phase: string; spots: number; }[]' is not assignable to type 'DistributionPhaseEntry[]'. + Type '{ phase: string; spots: number; }' is missing the following properties from type 'DistributionPhaseEntry': spots_airdrop, spots_allowlist +__tests__/components/user/stats/activity/wallet/table/UserPageStatsActivityWalletTable.test.tsx(20,13): error TS2741: Property 'memeLab' is missing in type '{ transactions: Transaction[]; profile: ApiIdentity; memes: never[]; nextgenCollections: never[]; }' but required in type '{ readonly transactions: Transaction[]; readonly profile: ApiIdentity; readonly memes: NFTLite[]; readonly memeLab: NFTLite[]; readonly nextgenCollections: NextGenCollection[]; }'. +__tests__/components/user/stats/activity/wallet/table/UserPageStatsActivityWalletTableWrapper.test.tsx(28,8): error TS2741: Property 'memeLab' is missing in type '{ filter: UserPageStatsActivityWalletFilterType.ALL; profile: any; transactions: never[]; memes: never[]; nextgenCollections: never[]; totalPages: number; ... 4 more ...; onActiveFilter: Mock<...>; }' but required in type '{ readonly filter: UserPageStatsActivityWalletFilterType; readonly profile: ApiIdentity; readonly transactions: Transaction[]; ... 8 more ...; readonly onActiveFilter: (filter: UserPageStatsActivityWalletFilterType) => void; }'. +__tests__/components/user/stats/activity/wallet/table/UserPageStatsActivityWalletTableWrapper.test.tsx(47,8): error TS2741: Property 'memeLab' is missing in type '{ filter: UserPageStatsActivityWalletFilterType.ALL; profile: any; transactions: any[]; memes: any[]; nextgenCollections: any[]; totalPages: number; page: number; isFirstLoading: false; loading: true; setPage: Mock<...>; onActiveFilter: Mock<...>; }' but required in type '{ readonly filter: UserPageStatsActivityWalletFilterType; readonly profile: ApiIdentity; readonly transactions: Transaction[]; ... 8 more ...; readonly onActiveFilter: (filter: UserPageStatsActivityWalletFilterType) => void; }'. +__tests__/components/user/stats/activity/wallet/table/UserPageStatsActivityWalletTableWrapper.test.tsx(69,8): error TS2741: Property 'memeLab' is missing in type '{ filter: UserPageStatsActivityWalletFilterType.MINTS; profile: any; transactions: never[]; memes: never[]; nextgenCollections: never[]; totalPages: number; ... 4 more ...; onActiveFilter: Mock<...>; }' but required in type '{ readonly filter: UserPageStatsActivityWalletFilterType; readonly profile: ApiIdentity; readonly transactions: Transaction[]; ... 8 more ...; readonly onActiveFilter: (filter: UserPageStatsActivityWalletFilterType) => void; }'. +__tests__/components/user/stats/tags/UserPageStatsTags.test.tsx(21,49): error TS2322: Type '{ season: number; sets: number; }[]' is not assignable to type 'OwnerBalanceMemes[]'. + Type '{ season: number; sets: number; }' is missing the following properties from type 'OwnerBalanceMemes': consolidation_key, balance, unique, rank, and 2 more. +__tests__/components/user/stats/UserPageStatsCollected.test.tsx(42,85): error TS2322: Type '{ id: number; count: number; start_index: number; end_index: number; name: string; display: string; }[]' is not assignable to type 'MemeSeason[]'. + Property 'boost' is missing in type '{ id: number; count: number; start_index: number; end_index: number; name: string; display: string; }' but required in type 'MemeSeason'. +__tests__/components/user/user-page-header/banner/UserPageHeaderBanner.test.tsx(17,9): error TS2739: Type '{ id: string; handle: string; normalised_handle: null; pfp: null; cic: number; rep: number; level: number; tdh: number; consolidation_key: string; display: string; primary_wallet: string; banner1: null; banner2: null; classification: any; sub_classification: null; }' is missing the following properties from type 'ApiIdentity': 'tdh_rate', 'xtdh', 'xtdh_rate', 'active_main_stage_submission_ids', 'winner_main_stage_drop_ids' +__tests__/components/user/user-page-header/name/UserPageHeaderEditName.test.tsx(34,3): error TS2322: Type '"SEIZER"' is not assignable to type 'ApiProfileClassification'. +__tests__/components/user/user-page-header/name/UserPageHeaderEditName.test.tsx(208,37): error TS2322: Type '{ primary_wallet: null; id: string | null; handle: string | null; normalised_handle: string | null; pfp: string | null; cic: number; rep: number; level: number; tdh: number; tdh_rate: number; ... 11 more ...; winner_main_stage_drop_ids: Array; }' is not assignable to type 'ApiIdentity'. + Types of property ''primary_wallet'' are incompatible. + Type 'null' is not assignable to type 'string'. +__tests__/components/user/user-page-header/name/UserPageHeaderName.test.tsx(22,7): error TS2739: Type '{ id: string; handle: null; normalised_handle: null; pfp: null; cic: number; rep: number; level: number; tdh: number; consolidation_key: string; display: string; primary_wallet: string; banner1: null; banner2: null; classification: ApiProfileClassification.Pseudonym; sub_classification: null; }' is missing the following properties from type 'ApiIdentity': 'tdh_rate', 'xtdh', 'xtdh_rate', 'active_main_stage_submission_ids', 'winner_main_stage_drop_ids' +__tests__/components/user/waves/UserPageWaves.basic.test.tsx(80,5): error TS2740: Type '{ handle: string; }' is missing the following properties from type 'ApiIdentity': 'id', 'normalised_handle', 'pfp', 'cic', and 15 more. +__tests__/components/utils/input/emma/EmmaListSearch.test.tsx(4,10): error TS2305: Module '"@/helpers/AllowlistToolHelpers"' has no exported member 'AllowlistDescription'. +__tests__/components/utils/input/emma/EmmaListSearchItem.test.tsx(9,9): error TS2741: Property 'createdAt' is missing in type '{ id: string; name: string; description: string; }' but required in type 'AllowlistDescription'. +__tests__/components/utils/input/emma/EmmaListSearchItem.test.tsx(214,13): error TS2741: Property 'createdAt' is missing in type '{ id: string; name: string; description: string; }' but required in type 'AllowlistDescription'. +__tests__/components/utils/input/emma/EmmaListSearchItem.test.tsx(233,13): error TS2741: Property 'createdAt' is missing in type '{ id: string; name: string; description: string; }' but required in type 'AllowlistDescription'. +__tests__/components/utils/input/emma/EmmaListSearchItem.test.tsx(252,13): error TS2741: Property 'createdAt' is missing in type '{ id: string; name: string; description: string; }' but required in type 'AllowlistDescription'. +__tests__/components/utils/input/emma/EmmaListSearchItem.test.tsx(274,13): error TS2741: Property 'createdAt' is missing in type '{ id: string; name: string; description: string; }' but required in type 'AllowlistDescription'. +__tests__/components/utils/select-group/SelectGroupModal.test.tsx(9,41): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/utils/select-group/SelectGroupModal.test.tsx(82,40): error TS2322: Type 'null' is not assignable to type '{ id: number; group_name: string; }[]'. +__tests__/components/utils/select/dropdown/CommonDropdownItem.test.tsx(15,11): error TS2739: Type '{ item: { label: string; value: string; key: string; }; activeItem: string; setSelected: Mock; isMobile: false; }' is missing the following properties from type 'Readonly>': itemIdx, totalItems +__tests__/components/utils/select/dropdown/CommonDropdownItem.test.tsx(22,11): error TS2739: Type '{ item: { label: string; value: string; key: string; }; activeItem: string; setSelected: Mock; isMobile: false; sortDirection: SortDirection.ASC; }' is missing the following properties from type 'Readonly>': itemIdx, totalItems +__tests__/components/utils/select/dropdown/CommonDropdownItem.test.tsx(33,6): error TS2739: Type '{ children: Element; item: { label: string; value: string; key: string; }; activeItem: string; setSelected: Mock; isMobile: false; }' is missing the following properties from type 'Readonly>': itemIdx, totalItems +__tests__/components/utils/select/dropdown/CommonDropdownItem.test.tsx(34,8): error TS2741: Property 'onCopy' is missing in type '{}' but required in type '{ onCopy: () => void; }'. +__tests__/components/utils/select/dropdown/SeasonsGridDropdown.test.tsx(6,3): error TS2741: Property 'boost' is missing in type '{ id: number; start_index: number; end_index: number; count: number; name: string; display: string; }' but required in type 'MemeSeason'. +__tests__/components/utils/select/dropdown/SeasonsGridDropdown.test.tsx(14,3): error TS2741: Property 'boost' is missing in type '{ id: number; start_index: number; end_index: number; count: number; name: string; display: string; }' but required in type 'MemeSeason'. +__tests__/components/utils/select/dropdown/SeasonsGridDropdown.test.tsx(22,3): error TS2741: Property 'boost' is missing in type '{ id: number; start_index: number; end_index: number; count: number; name: string; display: string; }' but required in type 'MemeSeason'. +__tests__/components/utils/sidebar/SidebarLayout.test.tsx(86,39): error TS2345: Argument of type '{ isApp: false; isMobileDevice: false; hasTouchScreen: false; }' is not assignable to parameter of type 'DeviceInfo'. + Property 'isAppleMobile' is missing in type '{ isApp: false; isMobileDevice: false; hasTouchScreen: false; }' but required in type 'DeviceInfo'. +__tests__/components/utils/sidebar/SidebarLayout.test.tsx(144,39): error TS2345: Argument of type '{ isApp: true; isMobileDevice: false; hasTouchScreen: false; }' is not assignable to parameter of type 'DeviceInfo'. + Property 'isAppleMobile' is missing in type '{ isApp: true; isMobileDevice: false; hasTouchScreen: false; }' but required in type 'DeviceInfo'. +__tests__/components/waves/create-wave/CreateWave.test.tsx(165,5): error TS2322: Type '{ rating: number; contributor_count: number; }' is not assignable to type 'number'. +__tests__/components/waves/create-wave/CreateWave.test.tsx(166,5): error TS2322: Type '{ rating: number; contributor_count: number; }' is not assignable to type 'number'. +__tests__/components/waves/create-wave/CreateWave.test.tsx(169,5): error TS2322: Type '"HUMAN"' is not assignable to type 'ApiProfileClassification'. +__tests__/components/waves/create-wave/CreateWave.test.tsx(276,29): error TS2740: Type '{ requestAuth: Mock; setToast: Mock; connectedProfile: ApiIdentity; }' is missing the following properties from type 'AuthContextType': fetchingProfile, connectionStatus, receivedProfileProxies, activeProfileProxy, and 2 more. +__tests__/components/waves/create-wave/CreateWave.test.tsx(277,44): error TS2740: Type '{ waitAndInvalidateDrops: Mock; onWaveCreated: Mock; }' is missing the following properties from type 'ReactQueryWrapperContextType': setProfile, setWave, setWavesOverviewPage, setWaveDrops, and 21 more. +__tests__/components/waves/create-wave/groups/CreateWaveGroup.test.tsx(93,38): error TS2352: Conversion of type '{ id: string; name: string; description: string; created_by: { id: string; handle: string; wallet: string; }; }' to type 'ApiGroupFull' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ id: string; name: string; description: string; created_by: { id: string; handle: string; wallet: string; }; }' is missing the following properties from type 'ApiGroupFull': 'group', 'created_at', 'visible', 'is_private' +__tests__/components/waves/create-wave/outcomes/winners/rows/manual/CreateWaveOutcomesRowManual.test.tsx(39,48): error TS2352: Conversion of type '{ id: string; type: "manual"; }' to type 'CreateWaveOutcomeConfig' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ id: string; type: "manual"; }' is missing the following properties from type 'CreateWaveOutcomeConfig': title, credit, category, maxWinners, winnersConfig +__tests__/components/waves/create-wave/outcomes/winners/rows/manual/CreateWaveOutcomesRowManual.test.tsx(149,52): error TS2352: Conversion of type '{ id: string; type: "custom"; description: string; }' to type 'CreateWaveOutcomeConfig' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ id: string; type: "custom"; description: string; }' is missing the following properties from type 'CreateWaveOutcomeConfig': title, credit, category, maxWinners, winnersConfig +__tests__/components/waves/create-wave/overview/CreateWaveOverview.test.tsx(65,5): error TS2322: Type 'null' is not assignable to type 'ApiWaveType'. +__tests__/components/waves/create-wave/overview/CreateWaveOverview.test.tsx(261,7): error TS2322: Type 'null' is not assignable to type 'ApiWaveType'. +__tests__/components/waves/create-wave/services/multiPartUpload.test.ts(40,32): error TS2345: Argument of type '(fn: any) => any' is not assignable to parameter of type 'Limit'. + Type '(fn: any) => any' is missing the following properties from type 'Limit': activeCount, pendingCount, clearQueue +__tests__/components/waves/CreateDrop.test.tsx(25,42): error TS2740: Type '{ waitAndInvalidateDrops: Mock; }' is missing the following properties from type 'ReactQueryWrapperContextType': setProfile, setWave, setWavesOverviewPage, setWaveDrops, and 22 more. +__tests__/components/waves/CreateDropActions.test.tsx(29,44): error TS7031: Binding element 'children' implicitly has an 'any' type. +__tests__/components/waves/CreateDropActions.test.tsx(29,66): error TS7006: Parameter 'ref' implicitly has an 'any' type. +__tests__/components/waves/CreateDropActions.test.tsx(32,47): error TS7031: Binding element 'children' implicitly has an 'any' type. +__tests__/components/waves/CreateDropActions.test.tsx(32,69): error TS7006: Parameter 'ref' implicitly has an 'any' type. +__tests__/components/waves/CreateDropActions.test.tsx(36,25): error TS7031: Binding element 'children' implicitly has an 'any' type. +__tests__/components/waves/CreateDropActions.test.tsx(38,21): error TS7031: Binding element 'children' implicitly has an 'any' type. +__tests__/components/waves/CreateDropActions.test.tsx(147,28): error TS2345: Argument of type 'Element' is not assignable to parameter of type 'HTMLElement'. + Type 'Element' is missing the following properties from type 'HTMLElement': accessKey, accessKeyLabel, autocapitalize, autocorrect, and 129 more. +__tests__/components/waves/CreateDropActions.test.tsx(300,28): error TS2345: Argument of type 'Element' is not assignable to parameter of type 'HTMLElement'. + Type 'Element' is missing the following properties from type 'HTMLElement': accessKey, accessKeyLabel, autocapitalize, autocorrect, and 129 more. +__tests__/components/waves/CreateDropContent.utils.test.ts(8,9): error TS2322: Type '{ key: string; type: ApiWaveMetadataType.String; value: string; required: true; }' is not assignable to type 'CreateDropMetadataType'. + Property 'id' is missing in type '{ key: string; type: ApiWaveMetadataType.String; value: string; required: true; }' but required in type '{ readonly id: string; key: string; readonly type: ApiWaveMetadataType.String; value: string | null; readonly required: boolean; }'. +__tests__/components/waves/CreateDropContent.utils.test.ts(9,11): error TS2322: Type 'null' is not assignable to type 'string'. +__tests__/components/waves/CreateDropContent.utils.test.ts(10,9): error TS2322: Type '{ key: string; type: ApiWaveMetadataType.Number; value: number; required: false; }' is not assignable to type 'CreateDropMetadataType'. + Property 'id' is missing in type '{ key: string; type: ApiWaveMetadataType.Number; value: number; required: false; }' but required in type '{ readonly id: string; key: string; readonly type: ApiWaveMetadataType.Number; value: number | null; readonly required: boolean; }'. +__tests__/components/waves/CreateDropContent.utils.test.ts(21,7): error TS2322: Type '{ key: string; type: ApiWaveMetadataType.Number; value: number; required: true; }' is not assignable to type 'CreateDropMetadataType'. + Property 'id' is missing in type '{ key: string; type: ApiWaveMetadataType.Number; value: number; required: true; }' but required in type '{ readonly id: string; key: string; readonly type: ApiWaveMetadataType.Number; value: number | null; readonly required: boolean; }'. +__tests__/components/waves/CreateDropContentRequirements.test.tsx(20,24): error TS2322: Type '"PNG"' is not assignable to type 'ApiWaveParticipationRequirement'. +__tests__/components/waves/CreateDropReplyingWrapper.test.tsx(17,34): error TS2741: Property 'partId' is missing in type '{ drop: any; action: ActiveDropAction.REPLY; }' but required in type 'ActiveDropState'. +__tests__/components/waves/drop/SingleWaveDropHeader.test.tsx(22,29): error TS2820: Type '"info"' is not assignable to type 'SingleWaveDropTab'. Did you mean 'SingleWaveDropTab.INFO'? +__tests__/components/waves/drop/SingleWaveDropTraits.test.tsx(19,6): error TS2352: Conversion of type '{ id: string; serial_no: number; author: { id: string; handle: string; }; title: string; parts: { part_id: number; content: string; media: never[]; quoted_drop: null; }[]; metadata: ApiDropMetadata[]; ... 5 more ...; mentioned_users: never[]; }' to type 'ExtendedDrop' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ id: string; serial_no: number; author: { id: string; handle: string; }; title: string; parts: { part_id: number; content: string; media: never[]; quoted_drop: null; }[]; metadata: ApiDropMetadata[]; ... 5 more ...; mentioned_users: never[]; }' is missing the following properties from type 'ExtendedDrop': type, stableKey, stableHash, 'drop_type', and 10 more. +__tests__/components/waves/drop/SingleWaveDropVoteContent.basic.test.tsx(19,25): error TS2352: Conversion of type '{ id: string; serial_no: number; rank: number; wave: any; context_profile_context: { rating: number; min_rating: number; max_rating: number; }; parts: never[]; referenced_nfts: never[]; mentioned_users: never[]; metadata: never[]; author: any; created_at: number; updated_at: number; }' to type 'ApiDrop' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ id: string; serial_no: number; rank: number; wave: any; context_profile_context: { rating: number; min_rating: number; max_rating: number; }; parts: never[]; referenced_nfts: never[]; mentioned_users: never[]; metadata: never[]; author: any; created_at: number; updated_at: number; }' is missing the following properties from type 'ApiDrop': 'drop_type', 'title', 'parts_count', 'rating', and 7 more. +__tests__/components/waves/drop/SingleWaveDropVoteContent.test.tsx(61,7): error TS2741: Property ''reaction'' is missing in type '{ rating: number; min_rating: number; max_rating: number; }' but required in type 'ApiDropContextProfileContext'. +__tests__/components/waves/drop/SingleWaveDropVoteContent.test.tsx(170,7): error TS2741: Property ''reaction'' is missing in type '{ rating: number; min_rating: number; max_rating: number; }' but required in type 'ApiDropContextProfileContext'. +__tests__/components/waves/drop/SingleWaveDropVoteContent.test.tsx(176,7): error TS2740: Type '{ id: string; name: string; voting_credit_type: ApiWaveCreditType.Rep; }' is missing the following properties from type 'ApiWaveMin': 'picture', 'description_drop_id', 'authenticated_user_eligible_to_vote', 'authenticated_user_eligible_to_participate', and 12 more. +__tests__/components/waves/drop/SingleWaveDropVoteContent.test.tsx(200,7): error TS2741: Property ''reaction'' is missing in type '{ rating: number; min_rating: number; max_rating: number; }' but required in type 'ApiDropContextProfileContext'. +__tests__/components/waves/drop/SingleWaveDropVoteContent.test.tsx(205,7): error TS2740: Type '{ id: string; name: string; voting_credit_type: ApiWaveCreditType.Rep; }' is missing the following properties from type 'ApiWaveMin': 'picture', 'description_drop_id', 'authenticated_user_eligible_to_vote', 'authenticated_user_eligible_to_participate', and 12 more. +__tests__/components/waves/drop/SingleWaveDropVoteContent.test.tsx(232,7): error TS2741: Property ''reaction'' is missing in type '{ rating: number; min_rating: number; max_rating: number; }' but required in type 'ApiDropContextProfileContext'. +__tests__/components/waves/drop/SingleWaveDropVoteContent.test.tsx(237,7): error TS2740: Type '{ id: string; name: string; voting_credit_type: ApiWaveCreditType.Tdh; }' is missing the following properties from type 'ApiWaveMin': 'picture', 'description_drop_id', 'authenticated_user_eligible_to_vote', 'authenticated_user_eligible_to_participate', and 12 more. +__tests__/components/waves/drop/SingleWaveDropVoteContent.test.tsx(281,7): error TS2741: Property ''reaction'' is missing in type '{ rating: number; min_rating: number; max_rating: number; }' but required in type 'ApiDropContextProfileContext'. +__tests__/components/waves/drop/SingleWaveDropVoteContent.test.tsx(300,7): error TS2741: Property ''reaction'' is missing in type '{ rating: number; min_rating: number; max_rating: number; }' but required in type 'ApiDropContextProfileContext'. +__tests__/components/waves/drop/SingleWaveDropVoteStats.test.tsx(8,70): error TS2322: Type '{ currentRating: number; maxRating: number; creditType: ApiWaveCreditType; }' is not assignable to type 'IntrinsicAttributes & SingleWaveDropVoteStatsProps'. + Property 'creditType' does not exist on type 'IntrinsicAttributes & SingleWaveDropVoteStatsProps'. +__tests__/components/waves/drop/SingleWaveDropVoteSubmit.test.tsx(71,5): error TS2322: Type 'string' is not assignable to type 'number'. +__tests__/components/waves/drop/SingleWaveDropVoteSubmit.test.tsx(74,7): error TS2353: Object literal may only specify known properties, and 'normalised_handle' does not exist in type 'ApiProfileMin'. +__tests__/components/waves/drop/SingleWaveDropVoteSubmit.test.tsx(89,5): error TS2740: Type '{ id: string; name: string; }' is missing the following properties from type 'ApiWaveMin': 'picture', 'description_drop_id', 'authenticated_user_eligible_to_vote', 'authenticated_user_eligible_to_participate', and 13 more. +__tests__/components/waves/drops/ArtistActiveSubmissionContent.test.tsx(82,9): error TS2740: Type '{ id: string; handle: string; pfp: string; level: number; cic: number; rep: number; }' is missing the following properties from type 'ApiProfileMin': 'banner1_color', 'banner2_color', 'tdh', 'tdh_rate', and 7 more. +__tests__/components/waves/drops/ArtistPreviewModal.simple.test.tsx(32,9): error TS2740: Type '{ id: string; handle: string; pfp: string; level: number; cic: number; rep: number; }' is missing the following properties from type 'ApiProfileMin': 'banner1_color', 'banner2_color', 'tdh', 'tdh_rate', and 7 more. +__tests__/components/waves/drops/ContentSegmentComponent.test.tsx(14,63): error TS2739: Type '{ url: string; }' is missing the following properties from type 'MediaItem': alt, type +__tests__/components/waves/drops/ContentSegmentComponent.test.tsx(19,59): error TS2741: Property 'content' is missing in type '{ type: "media"; }' but required in type 'ContentSegment'. +__tests__/components/waves/drops/EditDropLexical.test.tsx(275,9): error TS2493: Tuple type '[]' of length '0' has no element at index '0'. +__tests__/components/waves/drops/EditDropLexical.test.tsx(278,9): error TS2493: Tuple type '[]' of length '0' has no element at index '0'. +__tests__/components/waves/drops/EditDropLexical.test.tsx(284,27): error TS2352: Conversion of type 'undefined' to type '() => boolean' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. +__tests__/components/waves/drops/EditDropLexical.test.tsx(284,40): error TS2493: Tuple type '[]' of length '0' has no element at index '1'. +__tests__/components/waves/drops/EditDropLexical.test.tsx(285,26): error TS2352: Conversion of type 'undefined' to type '(event?: { shiftKey?: boolean | undefined; } | undefined) => boolean' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. +__tests__/components/waves/drops/EditDropLexical.test.tsx(285,38): error TS2493: Tuple type '[]' of length '0' has no element at index '1'. +__tests__/components/waves/drops/OngoingParticipationDrop.test.tsx(53,7): error TS2820: Type '"wave"' is not assignable to type 'DropLocation'. Did you mean 'DropLocation.WAVE'? +__tests__/components/waves/drops/participation/EndedParticipationDrop.test.tsx(11,23): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/waves/drops/participation/EndedParticipationDrop.test.tsx(15,26): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/waves/drops/participation/EndedParticipationDrop.test.tsx(36,12): error TS2532: Object is possibly 'undefined'. +__tests__/components/waves/drops/participation/EndedParticipationDrop.test.tsx(36,49): error TS2493: Tuple type '[]' of length '0' has no element at index '0'. +__tests__/components/waves/drops/participation/EndedParticipationDrop.test.tsx(39,25): error TS2532: Object is possibly 'undefined'. +__tests__/components/waves/drops/participation/EndedParticipationDrop.test.tsx(39,59): error TS2493: Tuple type '[]' of length '0' has no element at index '0'. +__tests__/components/waves/drops/participation/EndedParticipationDrop.test.tsx(57,12): error TS2532: Object is possibly 'undefined'. +__tests__/components/waves/drops/participation/EndedParticipationDrop.test.tsx(57,49): error TS2493: Tuple type '[]' of length '0' has no element at index '0'. +__tests__/components/waves/drops/participation/ParticipationDrop.test.tsx(26,28): error TS2339: Property 'FEED' does not exist on type 'typeof DropLocation'. +__tests__/components/waves/drops/participation/ParticipationDropRatings.test.tsx(8,17): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/waves/drops/participation/ratings/ParticipationDropRatingsUserSection.test.tsx(10,56): error TS2741: Property 'ring' is missing in type '{ indicator: string; text: string; }' but required in type 'ThemeColors'. +__tests__/components/waves/drops/participation/ratings/ParticipationDropRatingsUserSection.test.tsx(10,98): error TS2739: Type '{ userRating: number; }' is missing the following properties from type 'RatingsData': hasRaters, currentRating +__tests__/components/waves/drops/participation/ratings/ParticipationDropRatingsUserSection.test.tsx(17,56): error TS2741: Property 'ring' is missing in type '{ indicator: string; text: string; }' but required in type 'ThemeColors'. +__tests__/components/waves/drops/participation/ratings/ParticipationDropRatingsUserSection.test.tsx(17,98): error TS2739: Type '{ userRating: number; }' is missing the following properties from type 'RatingsData': hasRaters, currentRating +__tests__/components/waves/drops/participation/ratings/tooltips/VoteBreakdownTooltip.test.tsx(23,41): error TS2741: Property 'currentRating' is missing in type '{ hasRaters: true; userRating: number; }' but required in type 'RatingsData'. +__tests__/components/waves/drops/participation/ratings/tooltips/VoteBreakdownTooltip.test.tsx(37,86): error TS2741: Property 'currentRating' is missing in type '{ hasRaters: false; userRating: number; }' but required in type 'RatingsData'. +__tests__/components/waves/drops/WaveDropActionsAddReaction.test.tsx(76,26): error TS2339: Property 'Standard' does not exist on type 'typeof ApiDropType'. +__tests__/components/waves/drops/WaveDropPart.test.tsx(32,44): error TS2352: Conversion of type '{ id: string; parts: { content: string; quoted_drop: null; media: never[]; }[]; }' to type 'ExtendedDrop' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ id: string; parts: { content: string; quoted_drop: null; media: never[]; }[]; }' is missing the following properties from type 'ExtendedDrop': type, stableKey, stableHash, 'serial_no', and 20 more. +__tests__/components/waves/drops/WaveDropPart.test.tsx(43,43): error TS2352: Conversion of type '{ id: string; parts: { content: string; quoted_drop: null; media: never[]; }[]; }' to type 'ExtendedDrop' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ id: string; parts: { content: string; quoted_drop: null; media: never[]; }[]; }' is missing the following properties from type 'ExtendedDrop': type, stableKey, stableHash, 'serial_no', and 20 more. +__tests__/components/waves/drops/WaveDropPart.test.tsx(64,43): error TS2352: Conversion of type '{ id: string; parts: { content: string; quoted_drop: null; media: never[]; }[]; }' to type 'ExtendedDrop' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ id: string; parts: { content: string; quoted_drop: null; media: never[]; }[]; }' is missing the following properties from type 'ExtendedDrop': type, stableKey, stableHash, 'serial_no', and 20 more. +__tests__/components/waves/drops/WaveDropsAll.test.tsx(437,70): error TS2322: Type 'null' is not assignable to type 'string'. +__tests__/components/waves/drops/WaveDropsAll.test.tsx(456,74): error TS2322: Type 'null' is not assignable to type 'string'. +__tests__/components/waves/header/WaveHeaderPinButton.test.tsx(69,29): error TS2740: Type '{ connectedProfile: { handle: string; }; activeProfileProxy: null; setToast: Mock; }' is missing the following properties from type 'AuthContextType': fetchingProfile, connectionStatus, receivedProfileProxies, showWaves, and 2 more. +__tests__/components/waves/header/WaveHeaderPinButton.test.tsx(77,45): error TS2345: Argument of type '{ connectedProfile: null; activeProfileProxy: null; setToast: jest.Mock; }' is not assignable to parameter of type '{ connectedProfile: { handle: string; }; activeProfileProxy: null; setToast: jest.Mock; }'. + Types of property 'connectedProfile' are incompatible. + Type 'null' is not assignable to type '{ handle: string; }'. +__tests__/components/waves/header/WaveHeaderPinButton.test.tsx(82,45): error TS2345: Argument of type '{ connectedProfile: { handle: string; }; activeProfileProxy: { id: string; }; setToast: jest.Mock; }' is not assignable to parameter of type '{ connectedProfile: { handle: string; }; activeProfileProxy: null; setToast: jest.Mock; }'. + Types of property 'activeProfileProxy' are incompatible. + Type '{ id: string; }' is not assignable to type 'null'. +__tests__/components/waves/list/WavesListSearchResults.test.tsx(53,5): error TS2322: Type 'string' is not assignable to type 'number'. +__tests__/components/waves/list/WavesListSearchResults.test.tsx(54,5): error TS2740: Type '{ id: string; handle: string; pfp: null; }' is missing the following properties from type 'ApiProfileMin': 'banner1_color', 'banner2_color', 'cic', 'rep', and 10 more. +__tests__/components/waves/list/WavesListSearchResults.test.tsx(59,5): error TS2739: Type '{ drops_count: number; subscribers_count: number; }' is missing the following properties from type 'ApiWaveMetrics': 'latest_drop_timestamp', 'your_participation_drops_count' +__tests__/components/waves/list/WavesListSearchResults.test.tsx(75,5): error TS2322: Type 'string' is not assignable to type 'number'. +__tests__/components/waves/list/WavesListSearchResults.test.tsx(76,5): error TS2740: Type '{ id: string; handle: string; pfp: null; }' is missing the following properties from type 'ApiProfileMin': 'banner1_color', 'banner2_color', 'cic', 'rep', and 10 more. +__tests__/components/waves/list/WavesListSearchResults.test.tsx(81,5): error TS2739: Type '{ drops_count: number; subscribers_count: number; }' is missing the following properties from type 'ApiWaveMetrics': 'latest_drop_timestamp', 'your_participation_drops_count' +__tests__/components/waves/list/WavesListSearchResults.test.tsx(121,34): error TS2345: Argument of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: jest.Mock | ((options?: FetchNextPageOptions) => Promise<...>); status: string; error: Error | null; refetch: jest.Mock<...> | ((options?: RefetchOptions) => Promise<...>); }' is not assignable to parameter of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: (options?: FetchNextPageOptions) => Promise<...>; status: "error" | ... 1 more ... | "success"; error: Error | null; refetch: (options?: RefetchOptions) => Promise<...>; }'. + Types of property 'status' are incompatible. + Type 'string' is not assignable to type '"error" | "pending" | "success"'. +__tests__/components/waves/list/WavesListSearchResults.test.tsx(129,34): error TS2345: Argument of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: jest.Mock | ((options?: FetchNextPageOptions) => Promise<...>); status: string; error: Error | null; refetch: jest.Mock<...> | ((options?: RefetchOptions) => Promise<...>); }' is not assignable to parameter of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: (options?: FetchNextPageOptions) => Promise<...>; status: "error" | ... 1 more ... | "success"; error: Error | null; refetch: (options?: RefetchOptions) => Promise<...>; }'. + Types of property 'status' are incompatible. + Type 'string' is not assignable to type '"error" | "pending" | "success"'. +__tests__/components/waves/list/WavesListSearchResults.test.tsx(142,34): error TS2345: Argument of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: jest.Mock | ((options?: FetchNextPageOptions) => Promise<...>); status: string; error: Error | null; refetch: jest.Mock<...> | ((options?: RefetchOptions) => Promise<...>); }' is not assignable to parameter of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: (options?: FetchNextPageOptions) => Promise<...>; status: "error" | ... 1 more ... | "success"; error: Error | null; refetch: (options?: RefetchOptions) => Promise<...>; }'. + Types of property 'status' are incompatible. + Type 'string' is not assignable to type '"error" | "pending" | "success"'. +__tests__/components/waves/list/WavesListSearchResults.test.tsx(152,34): error TS2345: Argument of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: jest.Mock | ((options?: FetchNextPageOptions) => Promise<...>); status: string; error: Error | null; refetch: jest.Mock<...> | ((options?: RefetchOptions) => Promise<...>); }' is not assignable to parameter of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: (options?: FetchNextPageOptions) => Promise<...>; status: "error" | ... 1 more ... | "success"; error: Error | null; refetch: (options?: RefetchOptions) => Promise<...>; }'. + Types of property 'status' are incompatible. + Type 'string' is not assignable to type '"error" | "pending" | "success"'. +__tests__/components/waves/list/WavesListSearchResults.test.tsx(165,34): error TS2345: Argument of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: jest.Mock | ((options?: FetchNextPageOptions) => Promise<...>); status: string; error: Error | null; refetch: jest.Mock<...> | ((options?: RefetchOptions) => Promise<...>); }' is not assignable to parameter of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: (options?: FetchNextPageOptions) => Promise<...>; status: "error" | ... 1 more ... | "success"; error: Error | null; refetch: (options?: RefetchOptions) => Promise<...>; }'. + Types of property 'status' are incompatible. + Type 'string' is not assignable to type '"error" | "pending" | "success"'. +__tests__/components/waves/list/WavesListSearchResults.test.tsx(177,34): error TS2345: Argument of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: jest.Mock | ((options?: FetchNextPageOptions) => Promise<...>); status: string; error: Error | null; refetch: jest.Mock<...> | ((options?: RefetchOptions) => Promise<...>); }' is not assignable to parameter of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: (options?: FetchNextPageOptions) => Promise<...>; status: "error" | ... 1 more ... | "success"; error: Error | null; refetch: (options?: RefetchOptions) => Promise<...>; }'. + Types of property 'status' are incompatible. + Type 'string' is not assignable to type '"error" | "pending" | "success"'. +__tests__/components/waves/list/WavesListSearchResults.test.tsx(192,34): error TS2345: Argument of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: jest.Mock | ((options?: FetchNextPageOptions) => Promise<...>); status: string; error: Error | null; refetch: jest.Mock<...> | ((options?: RefetchOptions) => Promise<...>); }' is not assignable to parameter of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: (options?: FetchNextPageOptions) => Promise<...>; status: "error" | ... 1 more ... | "success"; error: Error | null; refetch: (options?: RefetchOptions) => Promise<...>; }'. + Types of property 'status' are incompatible. + Type 'string' is not assignable to type '"error" | "pending" | "success"'. +__tests__/components/waves/list/WavesListSearchResults.test.tsx(208,34): error TS2345: Argument of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: jest.Mock | ((options?: FetchNextPageOptions) => Promise<...>); status: string; error: Error | null; refetch: jest.Mock<...> | ((options?: RefetchOptions) => Promise<...>); }' is not assignable to parameter of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: (options?: FetchNextPageOptions) => Promise<...>; status: "error" | ... 1 more ... | "success"; error: Error | null; refetch: (options?: RefetchOptions) => Promise<...>; }'. + Types of property 'status' are incompatible. + Type 'string' is not assignable to type '"error" | "pending" | "success"'. +__tests__/components/waves/list/WavesListSearchResults.test.tsx(222,34): error TS2345: Argument of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: jest.Mock | ((options?: FetchNextPageOptions) => Promise<...>); status: string; error: Error | null; refetch: jest.Mock<...> | ((options?: RefetchOptions) => Promise<...>); }' is not assignable to parameter of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: (options?: FetchNextPageOptions) => Promise<...>; status: "error" | ... 1 more ... | "success"; error: Error | null; refetch: (options?: RefetchOptions) => Promise<...>; }'. + Types of property 'status' are incompatible. + Type 'string' is not assignable to type '"error" | "pending" | "success"'. +__tests__/components/waves/list/WavesListSearchResults.test.tsx(236,34): error TS2345: Argument of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: jest.Mock | ((options?: FetchNextPageOptions) => Promise<...>); status: string; error: Error | null; refetch: jest.Mock<...> | ((options?: RefetchOptions) => Promise<...>); }' is not assignable to parameter of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: (options?: FetchNextPageOptions) => Promise<...>; status: "error" | ... 1 more ... | "success"; error: Error | null; refetch: (options?: RefetchOptions) => Promise<...>; }'. + Types of property 'status' are incompatible. + Type 'string' is not assignable to type '"error" | "pending" | "success"'. +__tests__/components/waves/list/WavesListSearchResults.test.tsx(247,34): error TS2345: Argument of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: jest.Mock | ((options?: FetchNextPageOptions) => Promise<...>); status: string; error: Error | null; refetch: jest.Mock<...> | ((options?: RefetchOptions) => Promise<...>); }' is not assignable to parameter of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: (options?: FetchNextPageOptions) => Promise<...>; status: "error" | ... 1 more ... | "success"; error: Error | null; refetch: (options?: RefetchOptions) => Promise<...>; }'. + Types of property 'status' are incompatible. + Type 'string' is not assignable to type '"error" | "pending" | "success"'. +__tests__/components/waves/list/WavesListSearchResults.test.tsx(258,34): error TS2345: Argument of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: jest.Mock | ((options?: FetchNextPageOptions) => Promise<...>); status: string; error: Error | null; refetch: jest.Mock<...> | ((options?: RefetchOptions) => Promise<...>); }' is not assignable to parameter of type '{ waves: ApiWave[]; isFetching: boolean; isFetchingNextPage: boolean; hasNextPage: boolean; fetchNextPage: (options?: FetchNextPageOptions) => Promise<...>; status: "error" | ... 1 more ... | "success"; error: Error | null; refetch: (options?: RefetchOptions) => Promise<...>; }'. + Types of property 'status' are incompatible. + Type 'string' is not assignable to type '"error" | "pending" | "success"'. +__tests__/components/waves/memes/file-upload/components/FilePreview.test.tsx(17,11): error TS2741: Property 'videoCompatibility' is missing in type '{ url: string; file: File; onRemove: Mock; isCheckingCompatibility: false; }' but required in type 'FilePreviewProps'. +__tests__/components/waves/memes/file-upload/components/FilePreview.test.tsx(24,88): error TS2741: Property 'tested' is missing in type '{ canPlay: false; errorMessage: string; }' but required in type 'VideoCompatibilityResult'. +__tests__/components/waves/memes/file-upload/components/FilePreview.test.tsx(29,11): error TS2741: Property 'videoCompatibility' is missing in type '{ url: string; file: File; onRemove: Mock; isCheckingCompatibility: true; }' but required in type 'FilePreviewProps'. +__tests__/components/waves/memes/file-upload/reducers/fileUploadReducer.test.ts(26,39): error TS2345: Argument of type '{ visualState: string; objectUrl: string; processingTimeout: number; error: string | null; processingAttempts: number; processingFile: File | null; hasRecoveryOption: boolean; currentFile: File | null; videoCompatibility: VideoCompatibilityResult | null; isCheckingCompatibility: boolean; }' is not assignable to parameter of type 'FileUploaderState'. + Types of property 'visualState' are incompatible. + Type 'string' is not assignable to type 'VisualState'. +__tests__/components/waves/memes/file-upload/utils/fileValidation.test.ts(111,21): error TS2349: This expression is not callable. + Type 'never' has no call signatures. +__tests__/components/waves/memes/MemesArtSubmissionFile.test.tsx(170,11): error TS2743: No overload expects 1 type arguments, but overloads do exist that expect either 0 or 2 type arguments. +__tests__/components/waves/memes/submission/hooks/useArtworkSubmissionMutation.test.tsx(35,36): error TS2554: Expected 3-4 arguments, but got 1. +__tests__/components/waves/memes/submission/hooks/useArtworkSubmissionMutation.test.tsx(41,36): error TS2554: Expected 3-4 arguments, but got 1. +__tests__/components/waves/memes/submission/steps/ArtworkStep.test.tsx(100,13): error TS2322: Type '{ traits: TraitsData; artworkUploaded: boolean; artworkUrl: string; setArtworkUploaded: (uploaded: boolean) => void; handleFileSelect: (file: File) => void; mediaSource: "url" | "upload"; ... 22 more ...; submissionError?: string | undefined; }' is not assignable to type 'ArtworkStepProps'. + Types of property 'externalProvider' are incompatible. + Type 'string' is not assignable to type '"ipfs" | "arweave"'. +__tests__/components/waves/memes/submission/steps/ArtworkStep.test.tsx(127,8): error TS2322: Type '{ traits: TraitsData; artworkUploaded: boolean; artworkUrl: string; setArtworkUploaded: (uploaded: boolean) => void; handleFileSelect: (file: File) => void; mediaSource: "url" | "upload"; ... 22 more ...; submissionError?: string | undefined; }' is not assignable to type 'ArtworkStepProps'. + Types of property 'externalProvider' are incompatible. + Type 'string' is not assignable to type '"ipfs" | "arweave"'. +__tests__/components/waves/memes/submission/steps/ArtworkStep.test.tsx(139,8): error TS2322: Type '{ traits: TraitsData; artworkUploaded: boolean; artworkUrl: string; setArtworkUploaded: (uploaded: boolean) => void; handleFileSelect: (file: File) => void; mediaSource: "url" | "upload"; ... 22 more ...; submissionError?: string | undefined; }' is not assignable to type 'ArtworkStepProps'. + Types of property 'externalProvider' are incompatible. + Type 'string' is not assignable to type '"ipfs" | "arweave"'. +__tests__/components/waves/memes/submission/steps/ArtworkStep.test.tsx(158,8): error TS2322: Type '{ traits: TraitsData; artworkUploaded: boolean; artworkUrl: string; setArtworkUploaded: (uploaded: boolean) => void; handleFileSelect: (file: File) => void; mediaSource: "url" | "upload"; ... 22 more ...; submissionError?: string | undefined; }' is not assignable to type 'ArtworkStepProps'. + Types of property 'externalProvider' are incompatible. + Type 'string' is not assignable to type '"ipfs" | "arweave"'. +__tests__/components/waves/memes/submission/validation/traitsValidation.test.ts(67,66): error TS2322: Type 'Set' is not assignable to type 'Set'. + Type 'string' is not assignable to type 'keyof TraitsData'. +__tests__/components/waves/memes/submission/validation/validationRules.test.ts(16,9): error TS2739: Type '{ type: FieldType.TEXT; }' is missing the following properties from type 'BaseFieldDefinition': field, label +__tests__/components/waves/memes/submission/validation/validationRules.test.ts(30,9): error TS2739: Type '{ type: FieldType.TEXT; }' is missing the following properties from type 'BaseFieldDefinition': field, label +__tests__/components/waves/memes/submission/validation/validationRules.test.ts(44,9): error TS2739: Type '{ type: FieldType.TEXT; }' is missing the following properties from type 'BaseFieldDefinition': field, label +__tests__/components/waves/memes/submission/validation/validationRules.test.ts(58,9): error TS2739: Type '{ type: FieldType.TEXT; }' is missing the following properties from type 'BaseFieldDefinition': field, label +__tests__/components/waves/memes/submission/validation/validationRules.test.ts(76,9): error TS2739: Type '{ type: FieldType.NUMBER; }' is missing the following properties from type 'BaseFieldDefinition': field, label +__tests__/components/waves/memes/submission/validation/validationRules.test.ts(90,9): error TS2739: Type '{ type: FieldType.NUMBER; }' is missing the following properties from type 'BaseFieldDefinition': field, label +__tests__/components/waves/memes/submission/validation/validationRules.test.ts(104,9): error TS2739: Type '{ type: FieldType.NUMBER; }' is missing the following properties from type 'BaseFieldDefinition': field, label +__tests__/components/waves/memes/submission/validation/validationRules.test.ts(118,9): error TS2739: Type '{ type: FieldType.NUMBER; }' is missing the following properties from type 'BaseFieldDefinition': field, label +__tests__/components/waves/memes/submission/validation/validationRules.test.ts(132,9): error TS2739: Type '{ type: FieldType.NUMBER; }' is missing the following properties from type 'BaseFieldDefinition': field, label +__tests__/components/waves/memes/submission/validation/validationRules.test.ts(146,52): error TS2353: Object literal may only specify known properties, and 'min' does not exist in type 'BaseFieldDefinition'. +__tests__/components/waves/memes/submission/validation/validationRules.test.ts(160,52): error TS2353: Object literal may only specify known properties, and 'min' does not exist in type 'BaseFieldDefinition'. +__tests__/components/waves/memes/submission/validation/validationRules.test.ts(174,52): error TS2353: Object literal may only specify known properties, and 'min' does not exist in type 'BaseFieldDefinition'. +__tests__/components/waves/memes/submission/validation/validationRules.test.ts(192,9): error TS2739: Type '{ type: FieldType.BOOLEAN; }' is missing the following properties from type 'BaseFieldDefinition': field, label +__tests__/components/waves/memes/submission/validation/validationRules.test.ts(206,9): error TS2739: Type '{ type: FieldType.BOOLEAN; }' is missing the following properties from type 'BaseFieldDefinition': field, label +__tests__/components/waves/memes/submission/validation/validationRules.test.ts(220,9): error TS2739: Type '{ type: FieldType.BOOLEAN; }' is missing the following properties from type 'BaseFieldDefinition': field, label +__tests__/components/waves/memes/submission/validation/validationRules.test.ts(240,11): error TS2353: Object literal may only specify known properties, and 'options' does not exist in type 'BaseFieldDefinition'. +__tests__/components/waves/memes/submission/validation/validationRules.test.ts(257,11): error TS2353: Object literal may only specify known properties, and 'options' does not exist in type 'BaseFieldDefinition'. +__tests__/components/waves/memes/submission/validation/validationRules.test.ts(274,11): error TS2353: Object literal may only specify known properties, and 'options' does not exist in type 'BaseFieldDefinition'. +__tests__/components/waves/memes/submission/validation/validationRules.test.ts(291,11): error TS2353: Object literal may only specify known properties, and 'options' does not exist in type 'BaseFieldDefinition'. +__tests__/components/waves/memes/submission/validation/validationRules.test.ts(316,9): error TS2739: Type '{ type: FieldType.TEXT; }' is missing the following properties from type 'BaseFieldDefinition': field, label +__tests__/components/waves/memes/traits/DropdownTrait.test.tsx(16,37): error TS2322: Type '"rarity"' is not assignable to type 'keyof TraitsData'. +__tests__/components/waves/memes/traits/DropdownTrait.test.tsx(27,37): error TS2322: Type '"rarity"' is not assignable to type 'keyof TraitsData'. +__tests__/components/waves/memes/traits/DropdownTrait.test.tsx(32,37): error TS2322: Type '"rarity"' is not assignable to type 'keyof TraitsData'. +__tests__/components/waves/memes/traits/schema.test.ts(18,34): error TS2339: Property 'placeholder' does not exist on type 'FieldDefinition'. + Property 'placeholder' does not exist on type 'NumberFieldDefinition'. +__tests__/components/waves/memes/traits/TraitField.test.tsx(12,44): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/waves/memes/traits/TraitField.test.tsx(15,48): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/waves/memes/traits/TraitField.test.tsx(18,52): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/waves/memes/traits/TraitField.test.tsx(21,50): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/waves/memes/traits/TraitField.test.tsx(37,7): error TS2322: Type '{ type: FieldType.NUMBER; field: "pointsPower"; label: string; }' is not assignable to type 'FieldDefinition'. + Type '{ type: FieldType.NUMBER; field: "pointsPower"; label: string; }' is missing the following properties from type 'NumberFieldDefinition': min, max +__tests__/components/waves/outcome/WaveManualOutcome.test.tsx(19,13): error TS2741: Property 'distribution' is missing in type '{ outcome: any; }' but required in type 'WaveManualOutcomeProps'. +__tests__/components/waves/outcome/WaveNICOutcome.test.tsx(27,13): error TS2741: Property 'distribution' is missing in type '{ outcome: any; }' but required in type 'WaveNICOutcomeProps'. +__tests__/components/waves/small-leaderboard/WaveSmallLeaderboard.test.tsx(18,54): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/waves/small-leaderboard/WaveSmallLeaderboardTopThreeDrop.test.tsx(190,7): error TS2739: Type '{ id: string; handle: string; pfp: null; level: number; cic: number; banner1_color: null; banner2_color: null; rep: number; tdh: number; primary_address: string; subscribed_actions: never[]; archived: false; }' is missing the following properties from type 'ApiProfileMin': 'tdh_rate', 'xtdh', 'xtdh_rate', 'active_main_stage_submission_ids', 'winner_main_stage_drop_ids' +__tests__/components/waves/specs/groups/group/edit/WaveGroupEditButton.test.tsx(18,43): error TS2322: Type '"type"' is not assignable to type 'WaveGroupType'. +__tests__/components/waves/specs/groups/group/edit/WaveGroupEditButtons.test.tsx(22,70): error TS7006: Parameter 'ref' implicitly has an 'any' type. +__tests__/components/waves/specs/groups/group/edit/WaveGroupEditButtons.test.tsx(37,70): error TS7006: Parameter 'ref' implicitly has an 'any' type. +__tests__/components/waves/specs/groups/group/edit/WaveGroupEditButtons.test.tsx(87,40): error TS2740: Type '{ onWaveCreated: Mock; }' is missing the following properties from type 'ReactQueryWrapperContextType': setProfile, setWave, setWavesOverviewPage, setWaveDrops, and 22 more. +__tests__/components/waves/specs/groups/group/edit/WaveGroupRemove.test.tsx(40,12): error TS2532: Object is possibly 'undefined'. +__tests__/components/waves/specs/groups/group/edit/WaveGroupRemove.test.tsx(40,39): error TS2493: Tuple type '[]' of length '0' has no element at index '0'. +__tests__/components/waves/specs/groups/group/edit/WaveGroupRemove.test.tsx(47,12): error TS2532: Object is possibly 'undefined'. +__tests__/components/waves/specs/groups/group/edit/WaveGroupRemove.test.tsx(47,39): error TS2493: Tuple type '[]' of length '0' has no element at index '0'. +__tests__/components/waves/WaveLeaderboardGallery.test.tsx(31,43): error TS2322: Type '"RANK"' is not assignable to type 'WaveDropsLeaderboardSort'. +__tests__/components/waves/Waves.test.tsx(68,30): error TS2802: Type 'Map' can only be iterated through when using the '--downlevelIteration' flag or with a '--target' of 'es2015' or higher. +__tests__/components/waves/winners/podium/WaveWinnersPodiumPlaceholder.test.tsx(8,34): error TS2339: Property 'querySelector' does not exist on type 'ChildNode'. +__tests__/components/waves/winners/WaveWinners.test.tsx(18,45): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/waves/winners/WaveWinners.test.tsx(21,41): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/waves/winners/WaveWinners.test.tsx(24,39): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/waves/winners/WaveWinnersSmall.test.tsx(15,116): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/waves/winners/WaveWinnersSmall.test.tsx(16,146): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/waves/winners/WaveWinnersSmall.test.tsx(18,121): error TS2554: Expected 0 arguments, but got 1. +__tests__/components/waves/winners/WaveWinnersSmall.test.tsx(19,7): error TS2451: Cannot redeclare block-scoped variable 'wave'. +__tests__/components/waves/winners/WaveWinnersSmall.test.tsx(22,7): error TS2451: Cannot redeclare block-scoped variable 'wave'. +__tests__/components/waves/winners/WaveWinnersSmallOutcome.test.tsx(32,5): error TS2322: Type 'null' is not assignable to type 'ApiDrop'. +__tests__/components/waves/winners/WaveWinnersSmallOutcome.test.tsx(42,5): error TS2740: Type 'ApiWave' is missing the following properties from type 'ApiWaveMin': 'description_drop_id', 'authenticated_user_eligible_to_vote', 'authenticated_user_eligible_to_participate', 'authenticated_user_eligible_to_chat', and 11 more. +__tests__/components/waves/winners/WaveWinnersSmallOutcome.test.tsx(49,7): error TS2322: Type '{ rating: number; contributor_count: number; }' is not assignable to type 'number'. +__tests__/components/waves/winners/WaveWinnersSmallOutcome.test.tsx(50,7): error TS2322: Type '{ rating: number; contributor_count: number; }' is not assignable to type 'number'. +__tests__/contexts/wave/hooks/useWaveDataFetching.test.ts(42,61): error TS2345: Argument of type '{ updateData: jest.Mock; getData: jest.Mock; }' is not assignable to parameter of type 'WaveDataStoreUpdater'. + Property 'removeDrop' is missing in type '{ updateData: jest.Mock; getData: jest.Mock; }' but required in type 'WaveDataStoreUpdater'. +__tests__/helpers/getRandomUniqueNumbersBetween.test.ts(1,10): error TS2305: Module '"@/helpers/Helpers"' has no exported member 'getRandomUniqueNumbersBetween'. +__tests__/helpers/stream.helpers.notifications.test.ts(12,121): error TS2353: Object literal may only specify known properties, and 'context' does not exist in type '{ queryClient: QueryClient; headers: Record; }'. +__tests__/helpers/stream.helpers.notifications.test.ts(18,94): error TS2353: Object literal may only specify known properties, and 'context' does not exist in type '{ queryClient: QueryClient; headers: Record; }'. +__tests__/helpers/stream.helpers.notifications.test.ts(28,7): error TS2353: Object literal may only specify known properties, and 'context' does not exist in type '{ queryClient: QueryClient; headers: Record; }'. +__tests__/helpers/stream.helpers.notifications.test.ts(40,7): error TS2353: Object literal may only specify known properties, and 'context' does not exist in type '{ queryClient: QueryClient; headers: Record; }'. +__tests__/helpers/time.test.ts(7,69): error TS2345: Argument of type '(this: Date, locales?: string | string[], options?: Intl.DateTimeFormatOptions) => string' is not assignable to parameter of type '(locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined) => string'. + Types of parameters 'locales' and 'locales' are incompatible. + Type 'LocalesArgument' is not assignable to type 'string | string[] | undefined'. + Type 'Locale' is not assignable to type 'string | string[] | undefined'. + Type 'Locale' is missing the following properties from type 'string[]': length, pop, push, concat, and 35 more. +__tests__/helpers/waves/create-wave.helpers.extra.test.ts(50,12): error TS18048: 'body.voting.period' is possibly 'undefined'. +__tests__/hooks/drops/useDropUpdateMutation.test.tsx(36,3): error TS2740: Type '{ handle: string; }' is missing the following properties from type 'ApiProfileMin': 'id', 'pfp', 'banner1_color', 'banner2_color', and 12 more. +__tests__/hooks/drops/useDropUpdateMutation.test.tsx(37,3): error TS2740: Type '{ id: string; }' is missing the following properties from type 'ApiWaveMin': 'name', 'picture', 'description_drop_id', 'authenticated_user_eligible_to_vote', and 14 more. +__tests__/hooks/drops/useDropUpdateMutation.test.tsx(46,5): error TS2353: Object literal may only specify known properties, and 'replies_count' does not exist in type 'ApiDropPart'. +__tests__/hooks/drops/useDropUpdateMutation.test.tsx(61,3): error TS2322: Type 'null' is not assignable to type 'ApiReplyToDropResponse | undefined'. +__tests__/hooks/drops/useDropUpdateMutation.test.tsx(71,3): error TS2353: Object literal may only specify known properties, and 'content' does not exist in type 'ApiUpdateDropRequest'. +__tests__/hooks/drops/useDropUpdateMutation.test.tsx(237,41): error TS2345: Argument of type 'null' is not assignable to parameter of type 'MyStreamContextType'. +__tests__/hooks/useIdentity.test.ts(13,7): error TS2739: Type '{ id: string; handle: string; normalised_handle: string; pfp: null; cic: number; rep: number; level: number; tdh: number; tdh_rate: number; consolidation_key: string; display: string; primary_wallet: string; ... 7 more ...; winner_main_stage_drop_ids: never[]; }' is missing the following properties from type 'ApiIdentity': 'xtdh', 'xtdh_rate' +__tests__/hooks/useIdentity.test.ts(158,15): error TS2349: This expression is not callable. + Type 'never' has no call signatures. +__tests__/hooks/useIdentity.test.ts(175,15): error TS2349: This expression is not callable. + Type 'never' has no call signatures. +__tests__/hooks/useLongPressInteraction.test.ts(25,28): error TS2352: Conversion of type '{ touches: { clientX: number; clientY: number; }[]; preventDefault: jest.Mock; }' to type 'TouchEvent' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ touches: { clientX: number; clientY: number; }[]; preventDefault: Mock; }' is missing the following properties from type 'TouchEvent': altKey, changedTouches, ctrlKey, getModifierState, and 19 more. +__tests__/hooks/useLongPressInteraction.test.ts(51,28): error TS2352: Conversion of type '{ touches: { clientX: number; clientY: number; }[]; preventDefault: jest.Mock; }' to type 'TouchEvent' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ touches: { clientX: number; clientY: number; }[]; preventDefault: Mock; }' is missing the following properties from type 'TouchEvent': altKey, changedTouches, ctrlKey, getModifierState, and 19 more. +__tests__/hooks/useLongPressInteraction.test.ts(79,24): error TS2352: Conversion of type '{ touches: { clientX: number; clientY: number; }[]; preventDefault: jest.Mock; }' to type 'TouchEvent' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ touches: { clientX: number; clientY: number; }[]; preventDefault: Mock; }' is missing the following properties from type 'TouchEvent': altKey, changedTouches, ctrlKey, getModifierState, and 19 more. +__tests__/hooks/useLongPressInteraction.test.ts(84,23): error TS2352: Conversion of type '{ touches: { clientX: number; clientY: number; }[]; preventDefault: jest.Mock; }' to type 'TouchEvent' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ touches: { clientX: number; clientY: number; }[]; preventDefault: Mock; }' is missing the following properties from type 'TouchEvent': altKey, changedTouches, ctrlKey, getModifierState, and 19 more. +__tests__/hooks/useLongPressInteraction.test.ts(114,24): error TS2352: Conversion of type '{ touches: { clientX: number; clientY: number; }[]; preventDefault: jest.Mock; }' to type 'TouchEvent' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ touches: { clientX: number; clientY: number; }[]; preventDefault: Mock; }' is missing the following properties from type 'TouchEvent': altKey, changedTouches, ctrlKey, getModifierState, and 19 more. +__tests__/hooks/useLongPressInteraction.test.ts(119,23): error TS2352: Conversion of type '{ touches: { clientX: number; clientY: number; }[]; preventDefault: jest.Mock; }' to type 'TouchEvent' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ touches: { clientX: number; clientY: number; }[]; preventDefault: Mock; }' is missing the following properties from type 'TouchEvent': altKey, changedTouches, ctrlKey, getModifierState, and 19 more. +__tests__/hooks/useLongPressInteraction.test.ts(148,28): error TS2352: Conversion of type '{ touches: { clientX: number; clientY: number; }[]; preventDefault: jest.Mock; }' to type 'TouchEvent' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ touches: { clientX: number; clientY: number; }[]; preventDefault: Mock; }' is missing the following properties from type 'TouchEvent': altKey, changedTouches, ctrlKey, getModifierState, and 19 more. +__tests__/hooks/useNFTCollections.test.ts(23,3): error TS2352: Conversion of type '{ id: number; contract: string; token_id: string; name: string; image: string; }' to type 'NFT' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ id: number; contract: string; token_id: string; name: string; image: string; }' is missing the following properties from type 'NFT': boosted_tdh, tdh, tdh__raw, tdh_rank, and 21 more. +__tests__/hooks/useNFTCollections.test.ts(30,3): error TS2352: Conversion of type '{ id: number; contract: string; token_id: string; name: string; image: string; }' to type 'NFT' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ id: number; contract: string; token_id: string; name: string; image: string; }' is missing the following properties from type 'NFT': boosted_tdh, tdh, tdh__raw, tdh_rank, and 21 more. +__tests__/hooks/useNFTCollections.test.ts(40,3): error TS2352: Conversion of type '{ id: number; contract: string; token_id: string; name: string; image: string; }' to type 'NFT' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ id: number; contract: string; token_id: string; name: string; image: string; }' is missing the following properties from type 'NFT': boosted_tdh, tdh, tdh__raw, tdh_rank, and 21 more. +__tests__/hooks/useNFTCollections.test.ts(50,3): error TS2352: Conversion of type '{ id: string; name: string; contract: string; description: string; }' to type 'NextGenCollection' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ id: string; name: string; contract: string; description: string; }' is missing the following properties from type 'NextGenCollection': created_at, updated_at, artist, website, and 20 more. +__tests__/hooks/useNFTCollections.test.ts(56,3): error TS2352: Conversion of type '{ id: string; name: string; contract: string; description: string; }' to type 'NextGenCollection' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ id: string; name: string; contract: string; description: string; }' is missing the following properties from type 'NextGenCollection': created_at, updated_at, artist, website, and 20 more. +__tests__/hooks/useNFTCollections.test.ts(326,9): error TS2322: Type '{ nfts: NFT[]; nextgenCollections: NextGenCollection[]; }' is not assignable to type 'undefined'. +__tests__/hooks/useSecureSign-wagmi.test.ts(30,7): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign-wagmi.test.ts(90,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign-wagmi.test.ts(109,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(6,10): error TS2440: Import declaration conflicts with local declaration of 'UserRejectedRequestError'. +__tests__/hooks/useSecureSign.test.ts(57,7): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(81,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(101,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(120,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(145,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(179,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(213,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(244,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(279,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(323,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(340,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(358,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(400,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(429,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(509,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(533,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(565,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(595,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(632,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(664,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(695,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(714,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(744,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(775,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useSecureSign.test.ts(807,9): error TS2322: Type '""' is not assignable to type '`eip155:${string}:${string}` | `eip155:${number}:${string}` | `solana:${string}:${string}` | `solana:${number}:${string}` | `polkadot:${string}:${string}` | `polkadot:${number}:${string}` | `bip122:${string}:${string}` | `bip122:${number}:${string}` | `cosmos:${string}:${string}` | `cosmos:${number}:${string}` | `su...'. +__tests__/hooks/useWaveTopVoters.test.ts(282,33): error TS2353: Object literal may only specify known properties, and 'sortDirection' does not exist in type '{ waveId: string; connectedProfileHandle: string; reverse: boolean; dropId: null; }'. +__tests__/hooks/useWaveWebSocket.test.ts(42,23): error TS2352: Conversion of type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' to type 'Mock' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' is missing the following properties from type 'Mock': getMockName, mock, mockClear, mockReset, and 13 more. +__tests__/hooks/useWaveWebSocket.test.ts(58,23): error TS2352: Conversion of type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' to type 'Mock' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' is missing the following properties from type 'Mock': getMockName, mock, mockClear, mockReset, and 13 more. +__tests__/hooks/useWaveWebSocket.test.ts(68,23): error TS2352: Conversion of type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' to type 'Mock' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' is missing the following properties from type 'Mock': getMockName, mock, mockClear, mockReset, and 13 more. +__tests__/hooks/useXtdhGrantsQuery.test.ts(63,9): error TS2561: Object literal may only specify known properties, but 'status' does not exist in type 'Readonly'. Did you mean to write 'statuses'? +__tests__/pages/staticPages.test.tsx(84,13): error TS2786: 'ElementColumns' cannot be used as a JSX component. + Its type '() => void' is not a valid JSX element type. + Type '() => void' is not assignable to type '(props: any) => ReactNode | Promise'. + Type 'void' is not assignable to type 'ReactNode | Promise'. +__tests__/pages/staticPages.test.tsx(104,13): error TS2786: 'ElementSections' cannot be used as a JSX component. + Its type '() => void' is not a valid JSX element type. + Type '() => void' is not assignable to type '(props: any) => ReactNode | Promise'. + Type 'void' is not assignable to type 'ReactNode | Promise'. +__tests__/services/auth/jwt-validation.utils.test.ts(349,81): error TS2352: Conversion of type '{ id: string; target_id: string; created_by: { id: string; }; granted_by: { id: string; }; granted_to: { id: string; }; actions: never[]; credit_amount: number; credit_spent: number; status: string; created_at: number; updated_at: number; }' to type 'ApiProfileProxy' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. + Types of property ''granted_to'' are incompatible. + Type '{ id: string; }' is missing the following properties from type 'ApiProfileMin': 'handle', 'pfp', 'banner1_color', 'banner2_color', and 12 more. +__tests__/services/websocket/useWebSocketHealth.test.ts(128,38): error TS2345: Argument of type '{ connect: jest.Mock; disconnect: jest.Mock; status: WebSocketStatus.DISCONNECTED; }' is not assignable to parameter of type 'WebSocketContextValue'. + Type '{ connect: Mock; disconnect: Mock; status: WebSocketStatus.DISCONNECTED; }' is missing the following properties from type 'WebSocketContextValue': subscribe, send, config +__tests__/services/websocket/useWebSocketHealth.test.ts(156,38): error TS2345: Argument of type '{ connect: jest.Mock; disconnect: jest.Mock; status: WebSocketStatus.CONNECTED; }' is not assignable to parameter of type 'WebSocketContextValue'. + Type '{ connect: Mock; disconnect: Mock; status: WebSocketStatus.CONNECTED; }' is missing the following properties from type 'WebSocketContextValue': subscribe, send, config +__tests__/services/websocket/useWebSocketHealth.test.ts(186,38): error TS2345: Argument of type '{ connect: jest.Mock; disconnect: jest.Mock; status: WebSocketStatus.CONNECTED; }' is not assignable to parameter of type 'WebSocketContextValue'. + Type '{ connect: Mock; disconnect: Mock; status: WebSocketStatus.CONNECTED; }' is missing the following properties from type 'WebSocketContextValue': subscribe, send, config +__tests__/services/websocket/useWebSocketHealth.test.ts(266,38): error TS2345: Argument of type '{ connect: jest.Mock; disconnect: jest.Mock; status: WebSocketStatus.DISCONNECTED; }' is not assignable to parameter of type 'WebSocketContextValue'. + Type '{ connect: Mock; disconnect: Mock; status: WebSocketStatus.DISCONNECTED; }' is missing the following properties from type 'WebSocketContextValue': subscribe, send, config +__tests__/services/websocket/WebSocketProvider.test.tsx(111,59): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(140,59): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(180,59): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(226,59): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(256,59): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(283,59): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(327,60): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(350,60): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(380,60): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(396,60): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(408,60): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(436,59): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(465,60): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(480,60): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(544,59): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(563,60): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(589,59): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(645,59): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(682,59): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(707,59): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(731,59): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(765,57): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(784,53): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(812,59): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(856,60): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(865,61): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/services/websocket/WebSocketProvider.test.tsx(879,63): error TS2344: Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' does not satisfy the constraint '(...args: any[]) => any'. + Type '{ new (url: string | URL, protocols?: string | string[] | undefined): WebSocket; prototype: WebSocket; readonly CONNECTING: 0; readonly OPEN: 1; readonly CLOSING: 2; readonly CLOSED: 3; }' provides no match for the signature '(...args: any[]): any'. +__tests__/utils/editDropTestUtils.tsx(18,5): error TS2353: Object literal may only specify known properties, and 'quotes_count' does not exist in type 'ApiDropPart'. diff --git a/types/waves.types.ts b/types/waves.types.ts index cd8c68931f..c8ca842973 100644 --- a/types/waves.types.ts +++ b/types/waves.types.ts @@ -1,6 +1,7 @@ import { ApiWaveCreditType } from "@/generated/models/ApiWaveCreditType"; import { ApiWaveMetadataType } from "@/generated/models/ApiWaveMetadataType"; import { ApiWaveParticipationRequirement } from "@/generated/models/ApiWaveParticipationRequirement"; +import type { ApiWaveOutcomeDistributionItem } from "@/generated/models/ApiWaveOutcomeDistributionItem"; import { ApiWavesOverviewType } from "@/generated/models/ApiWavesOverviewType"; import { ApiWaveType } from "@/generated/models/ApiWaveType"; @@ -116,6 +117,17 @@ export interface CreateWaveOutcomeConfig { readonly winnersConfig: CreateWaveOutcomeConfigWinnersConfig | null; } +export interface WaveOutcomeDistributionState { + readonly items: ApiWaveOutcomeDistributionItem[]; + readonly totalCount: number; + readonly hasNextPage: boolean; + readonly isFetchingNextPage: boolean; + readonly fetchNextPage: () => void; + readonly isLoading: boolean; + readonly isError: boolean; + readonly errorMessage?: string; +} + export interface CreateWaveConfig { readonly overview: WaveOverviewConfig; readonly groups: WaveGroupsConfig; @@ -135,11 +147,6 @@ export enum CreateWaveStepStatus { PENDING = "PENDING", } -interface SearchWavesParams { - readonly limit: number; - readonly serial_no_less_than?: number; - readonly group_id?: string; -} export interface WavesOverviewParams { limit: number; offset: number;