visitory-sdk
Version:
Feature flags and analytics SDK for Visitory
78 lines (77 loc) • 3.65 kB
TypeScript
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;