import { ComponentClass } from 'react'; import React from 'react'; import type { StyleProp, ViewStyle } from 'react-native'; import { Animated } from 'react-native'; import type { EngagementService } from './EngagementService'; import type { VideoModalSource } from './inboxblocks/ImageWithOverlay'; import type { ComponentList, DynamicData, EmitterProps, JSON, ScreenProps, TagNavigationType, NavTag, FeedsRef } from './types'; import type { PortalComponents } from '../../libs/engagement-utils'; import type { PlausibleService } from '../services/plausible/plausible'; declare type DeeplinkMethod = 'open' | 'push'; export interface EngagementScreenProps extends ScreenProps, EmitterProps { json: JSON; backButton?: boolean; noScrollView?: boolean; navBarTitle?: string; renderType?: string; availableTags?: NavTag[]; showTagsNav?: boolean; handleDeepLink?: (data: DeepLink) => void; handleNavigateToPost?: (data: NavigateToPost) => void; handleVideoModalOpen?: (video: VideoModalSource) => void; handleBackPress?: (id?: string) => void; handleAttributeChange?: (data: Record) => void; refreshControl?: (filter?: string) => void; isLoading: boolean; autoplay?: boolean; autoplayDelay?: number; autoplayInterval?: number; storyType?: string; tabbedItems?: unknown[]; lastUpdate?: number; containerStyle?: StyleProp; animateScroll?: boolean; onBack?: () => void; language?: string; AnimatedImage?: unknown; welcomeHeader?: boolean; headerName?: string; dynamicData?: DynamicData; animate?: boolean; cardPosition?: number; renderHeader?: () => void; renderEmpty?: () => JSX.Element; hideEmptyMessage?: boolean; discoverPath?: string; deepLinkMethod?: DeeplinkMethod; renderBackButton?: (handleBackPress: (id?: string) => void) => void; stacked?: boolean; renderTagNavigationItem?: (item: NavTag, selected: boolean, index: number) => JSX.Element; tagContainerStyle?: StyleProp; tagNavigationType?: TagNavigationType; onPressTag?: (tag: NavTag) => void; initialTag?: string; showAllFilter?: string; plausibleService?: PlausibleService; previousTag?: React.MutableRefObject; feedsRef?: FeedsRef; isStackedScrollingEnabled?: boolean; touchableActiveOpacity?: number; backArrowPositionStyle?: StyleProp; contentInsetAdjustmentBehavior?: 'automatic' | 'scrollableAxes' | 'never' | 'always'; } export interface EngagementState { scrollY: Animated.Value; pageNum: number; showCarousel: boolean; isClosingAnimation: boolean; showDarkX: boolean; slideBackground: boolean; activeProgressBarIndex: number; scrollEnabled: boolean; activeTag?: string; pageViewId?: string; } export declare type Props = Record; export interface DeepLink extends Props { url: string; tag?: string; } export interface NavigateToPost { postId: string; json: JSON; title: string; dynamicData?: DynamicData; path?: string; tag?: string; } declare const WithEngagement: (api: EngagementService, layoutComponents: ComponentList, handleDeepLink?: ((data: DeepLink) => void) | undefined, handleNavigateToPost?: ((data: NavigateToPost) => void) | undefined, handleBackPress?: ((id?: string) => void) | undefined, handleVideoModalOpen?: ((video: VideoModalSource) => void) | undefined, createEnvironment?: 'prod' | 'uat', portalComponents?: PortalComponents) => ComponentClass; export default WithEngagement;