UNPKG

visitory-sdk

Version:

Feature flags and analytics SDK for Visitory

78 lines (77 loc) 3.65 kB
import React, { ReactNode } from 'react'; export interface StatsigConfig { apiKey: string; baseUrl?: string; userAttributes?: Record<string, any>; sessionId?: string; } export interface FeatureFlagResult { enabled: boolean; matchedSegments?: string[]; reason?: string; } export interface TrackEventData { eventName: string; userAttributes?: Record<string, any>; properties?: Record<string, any>; sessionId?: string; } export declare class StatsigClient { private config; private baseUrl; constructor(config: StatsigConfig); private generateSessionId; checkFeatureFlag(flagKey: string, userAttributes?: Record<string, any>): Promise<FeatureFlagResult>; trackEvent(data: TrackEventData): Promise<boolean>; trackPageView(page?: string, properties?: Record<string, any>): Promise<boolean>; trackClick(element: string, properties?: Record<string, any>): Promise<boolean>; trackCustomEvent(eventName: string, properties?: Record<string, any>): Promise<boolean>; setUserAttributes(userAttributes: Record<string, any>): void; setSessionId(sessionId: string): void; getUserAttributes(): Record<string, any> | undefined; } export declare const initialize: (config: StatsigConfig) => StatsigClient; export declare const getInstance: () => StatsigClient | null; export declare const checkFeatureFlag: (flagKey: string, userAttributes?: Record<string, any>) => Promise<FeatureFlagResult>; export declare const trackEvent: (data: TrackEventData) => Promise<boolean>; export declare const trackPageView: (page?: string, properties?: Record<string, any>) => Promise<boolean>; export declare const trackClick: (element: string, properties?: Record<string, any>) => Promise<boolean>; export declare const trackCustomEvent: (eventName: string, properties?: Record<string, any>) => Promise<boolean>; export declare const setUserAttributes: (userAttributes: Record<string, any>) => void; export declare const getUserAttributes: () => Record<string, any> | undefined; interface StatsigProviderProps { config: StatsigConfig; children: ReactNode; } export declare const StatsigProvider: React.FC<StatsigProviderProps>; export declare const useStatsig: () => StatsigClient; export declare const useFeatureFlag: (flagKey: string, userAttributes?: Record<string, any>) => { enabled: boolean; loading: boolean; matchedSegments?: string[]; }; export declare const useTracking: () => { trackEvent: (data: TrackEventData) => Promise<boolean>; trackPageView: (page?: string, properties?: Record<string, any>) => Promise<boolean>; trackClick: (element: string, properties?: Record<string, any>) => Promise<boolean>; trackCustomEvent: (eventName: string, properties?: Record<string, any>) => Promise<boolean>; }; export declare const useUserAttributes: () => { updateAttributes: (attributes: Record<string, any>) => void; getAttributes: () => Record<string, any> | undefined; }; export declare const useAutoPageTracking: (enabled?: boolean) => void; interface FeatureFlagProps { flagKey: string; userAttributes?: Record<string, any>; children: ReactNode; fallback?: ReactNode; loading?: ReactNode; } export declare const FeatureFlag: React.FC<FeatureFlagProps>; export declare const withFeatureFlag: <P extends object>(flagKey: string, userAttributes?: Record<string, any>) => (Component: React.ComponentType<P>) => React.FC<P>; export declare const useVariant: (flagKey: string, variants: string[], userAttributes?: Record<string, any>) => { variant: string | null; loading: boolean; }; export default StatsigClient;