export const useThemeHooks = jest.fn(() => ({
  useTranslate: jest.fn(() => ({
    translate: jest.fn((key: string, defaultValue: string) =>
      defaultValue
        ? typeof defaultValue !== 'string'
          ? (defaultValue as any).defaultValue
          : defaultValue
        : key,
    ),
  })),
  useTelemetry: jest.fn(() => ({
    send: jest.fn(),
  })),
  useOtelTelemetry: jest.fn(() => ({
    send: jest.fn(),
  })),
  useBreadcrumbs: jest.fn().mockReturnValue([]),
  usePageSharedData: jest.fn().mockReturnValue({}),
  useCatalogClassic: jest.fn(() => ({
    groups: [],
    filters: [],
    filterTerm: '',
    setFilterTerm: jest.fn(),
  })),
  useL10n: jest.fn(() => ({
    changeLanguage: jest.fn(),
  })),
  useL10nConfig: jest.fn(() => ({
    currentLocale: 'en',
    defaultLocale: 'en',
    locales: [
      { code: 'en', name: 'English' },
      { code: 'fr', name: 'France' },
      { code: 'uk', name: 'Ukraine' },
    ],
  })),
  usePreloadHistory: jest.fn(() => ({
    push: jest.fn(),
  })),
  useCurrentProduct: jest.fn(),
  useProducts: jest.fn(() => []),
  useSearch: jest.fn(() => ({
    query: jest.fn().mockReturnValue(''),
    setQuery: jest.fn(),
    items: [],
    isLoading: false,
  })),
  useAiSearch: jest.fn(() => ({
    askQuestion: jest.fn(),
    references: [],
  })),
  useFacetQuery: jest.fn(() => ({
    searchFacet: null,
    setSearchFacet: jest.fn(),
    setSearchFacetQuery: jest.fn(),
  })),
  useMarkdownText: jest.fn(() => {
    return null;
  }),
  useUserMenu: jest.fn(() => ({
    userData: {
      isAuthenticated: true,
      name: 'test-name',
      email: 'test-email@test.xyz',
      picture: 'picture',
    },
    handleLogout: jest.fn(),
    loginUrl: 'https://login.redoc.ly',
    hasDeveloperOnboarding: true,
  })),
  usePageVersions: jest.fn(),
  useSidebarItems: jest.fn().mockReturnValue({
    currentItems: [
      {
        label: 'Item',
      },
    ],
    allSidebarItems: [
      {
        label: 'Item',
      },
    ],
    popDrilldownState: jest.fn(),
    pushDrilldownState: jest.fn(),
  }),
  useSidebarSiblingsData: jest.fn(),
  useSubmitFeedback: jest.fn(() => ({
    submitFeedback: jest.fn(),
  })),
  useLoadAndNavigate: jest.fn(),
}));
