import { ReactElement } from 'react'; import { ViewProps } from 'react-native'; export type CSMaskProps = ViewProps & { isMasking?: boolean; children: React.ReactNode; }; export type CSReliableTargetProps = { name: string; children: React.ReactNode; }; export type CSQMaskProps = ViewProps & { isSessionReplayMasked?: boolean; ignoreTextOnly?: boolean; allowInteraction?: boolean; allowInnerHierarchy?: boolean; allowProps?: boolean; allowText?: boolean; allowAccessibilityLabel?: boolean; children?: React.ReactNode; }; export type CustomVar = { index: number; key: string; value: string; }; export interface CSWebViewProps { children: ReactElement; } export interface CSQWebViewProps { children: ReactElement; } /** * Enum defining event types used in csEventSubscriber */ export enum EventSubscriberType { ON_SESSION_REPLAY_LINK_CHANGE = 'onSessionReplayLinkChange', GET_FEATURE_FLAG = 'getFeatureFlags', ON_META_DATA_CHANGE = 'onMetadataChange', } /** * Features within our SDK that we want to flag. */ export enum Feature { checkFeatureFlagImplementation = 'checkFeatureFlagImplementation', crashReporter = 'crashReporter', } export type FeatureFlags = Record; export interface FeatureFlagRemote { name: string; enabled: boolean; min_version: string; } export interface FeatureFlagList { featureFlags: FeatureFlagRemote[]; } export interface BridgeConfiguration { feature_flags: FeatureFlagRemote[]; } export type CSEventSubscriber = { remove: () => void; }; export type ProductAnalyticsOptions = { enableRNAutocapture?: boolean; enableViewAutocapture?: boolean; disablePageviewAutocapture?: boolean; disableInteractionTextCapture?: boolean; disableInteractionAccessibilityLabelCapture?: boolean; resumePreviousSession?: boolean; enablePushNotificationAutocapture?: boolean; enablePushNotificationTitleAutocapture?: boolean; enablePushNotificationBodyAutocapture?: boolean; baseUrl?: string; uploadInterval?: number; captureAdvertiserId?: boolean; captureVendorId?: boolean; messageBatchMessageLimit?: number; clearEventPropertiesOnNewUser?: boolean; pruningLookBackWindow?: number; maximumDatabaseSize?: number; maximumBatchCountPerUpload?: number; disableScreenviewForwardToDXA?: boolean; disableScreenviewForwardToPA?: boolean; disablePageviewTitleAutocapture?: boolean; disableInteractionAutocapture?: boolean; }; export type PropertyValue = number | string | boolean | bigint; export type SourceInfo = { name: string; version: string; platform: string; properties: Record; }; export interface CSQMetadata { userID: string | null; sessionID: string | null; identity: string | null; environmentID: string | null; projectID: string | null; sessionReplayURL: string | null; }