import { PostHog } from './posthog-core'; import { DecideResponse, FeatureFlagsCallback, EarlyAccessFeatureCallback, Properties, JsonType } from './types'; import { PostHogPersistence } from './posthog-persistence'; export declare const filterActiveFeatureFlags: (featureFlags?: Record) => Record; export declare const parseFeatureFlagDecideResponse: (response: Partial, persistence: PostHogPersistence, currentFlags?: Record, currentFlagPayloads?: Record) => void; export declare class PostHogFeatureFlags { instance: PostHog; _override_warning: boolean; featureFlagEventHandlers: FeatureFlagsCallback[]; reloadFeatureFlagsQueued: boolean; reloadFeatureFlagsInAction: boolean; $anon_distinct_id: string | undefined; constructor(instance: PostHog); getFlags(): string[]; getFlagVariants(): Record; getFlagPayloads(): Record; /** * Reloads feature flags asynchronously. * * Constraints: * * 1. Avoid parallel requests * 2. Delay a few milliseconds after each reloadFeatureFlags call to batch subsequent changes together * 3. Don't call this during initial load (as /decide will be called instead), see posthog-core.js */ reloadFeatureFlags(): void; setAnonymousDistinctId(anon_distinct_id: string): void; setReloadingPaused(isPaused: boolean): void; resetRequestQueue(): void; _startReloadTimer(): void; _reloadFeatureFlagsRequest(): void; getFeatureFlag(key: string, options?: { send_event?: boolean; }): boolean | string | undefined; getFeatureFlagPayload(key: string): JsonType; isFeatureEnabled(key: string, options?: { send_event?: boolean; }): boolean | undefined; addFeatureFlagsHandler(handler: FeatureFlagsCallback): void; removeFeatureFlagsHandler(handler: FeatureFlagsCallback): void; receivedFeatureFlags(response: Partial, errorsLoading?: boolean): void; override(flags: boolean | string[] | Record): void; onFeatureFlags(callback: FeatureFlagsCallback): () => void; updateEarlyAccessFeatureEnrollment(key: string, isEnrolled: boolean): void; getEarlyAccessFeatures(callback: EarlyAccessFeatureCallback, force_reload?: boolean): void; _prepareFeatureFlagsForCallbacks(): { flags: string[]; flagVariants: Record; }; _fireFeatureFlagsCallbacks(errorsLoading?: boolean): void; /** * Set override person properties for feature flags. * This is used when dealing with new persons / where you don't want to wait for ingestion * to update user properties. */ setPersonPropertiesForFlags(properties: Properties, reloadFeatureFlags?: boolean): void; resetPersonPropertiesForFlags(): void; /** * Set override group properties for feature flags. * This is used when dealing with new groups / where you don't want to wait for ingestion * to update properties. * Takes in an object, the key of which is the group type. * For example: * setGroupPropertiesForFlags({'organization': { name: 'CYZ', employees: '11' } }) */ setGroupPropertiesForFlags(properties: { [type: string]: Properties; }, reloadFeatureFlags?: boolean): void; resetGroupPropertiesForFlags(group_type?: string): void; }