/** * Copyright 2019-2024, Optimizely * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import * as optimizely from '@optimizely/optimizely-sdk'; import { OptimizelyDecision, UserInfo } from './utils'; import { FeatureVariableValue } from '@optimizely/optimizely-sdk'; export type VariableValuesObject = { [key: string]: any; }; type DisposeFn = () => void; type OnUserUpdateHandler = (userInfo: UserInfo) => void; type OnForcedVariationsUpdateHandler = () => void; export declare enum NotReadyReason { TIMEOUT = "TIMEOUT", NO_CLIENT = "NO_CLIENT", USER_NOT_READY = "USER_NOT_READY" } type ResolveResult = { success: boolean; reason?: NotReadyReason; message?: string; }; export interface OnReadyResult extends ResolveResult { dataReadyPromise?: Promise; } export declare const DefaultUser: UserInfo; export interface ReactSDKClient extends Omit { user: UserInfo; client: optimizely.Client | null; onReady(opts?: { timeout?: number; }): Promise; setUser(userInfo: UserInfo, qualifiedSegments?: string[] | null): Promise; onUserUpdate(handler: OnUserUpdateHandler): DisposeFn; isReady(): boolean; getIsReadyPromiseFulfilled(): boolean; getIsUsingSdkKey(): boolean; activate(experimentKey: string, overrideUserId?: string, overrideAttributes?: optimizely.UserAttributes): string | null; getVariation(experimentKey: string, overrideUserId?: string, overrideAttributes?: optimizely.UserAttributes): string | null; getFeatureVariables(featureKey: string, overrideUserId?: string, overrideAttributes?: optimizely.UserAttributes): VariableValuesObject; getFeatureVariableString(featureKey: string, variableKey: string, overrideUserId?: string, overrideAttributes?: optimizely.UserAttributes): string | null; getFeatureVariableInteger(featureKey: string, variableKey: string, overrideUserId?: string, overrideAttributes?: optimizely.UserAttributes): number | null; getFeatureVariableBoolean(featureKey: string, variableKey: string, overrideUserId?: string, overrideAttributes?: optimizely.UserAttributes): boolean | null; getFeatureVariableDouble(featureKey: string, variableKey: string, overrideUserId?: string, overrideAttributes?: optimizely.UserAttributes): number | null; getFeatureVariableJSON(featureKey: string, variableKey: string, overrideUserId?: string, overrideAttributes?: optimizely.UserAttributes): unknown; getFeatureVariable(featureKey: string, variableKey: string, overrideUserId: string, overrideAttributes?: optimizely.UserAttributes): FeatureVariableValue; getAllFeatureVariables(featureKey: string, overrideUserId: string, overrideAttributes?: optimizely.UserAttributes): { [variableKey: string]: unknown; } | null; isFeatureEnabled(featureKey: string, overrideUserId?: string, overrideAttributes?: optimizely.UserAttributes): boolean; getEnabledFeatures(overrideUserId?: string, overrideAttributes?: optimizely.UserAttributes): Array; getOptimizelyConfig(): optimizely.OptimizelyConfig | null; track(eventKey: string, overrideUserId?: string | optimizely.EventTags, overrideAttributes?: optimizely.UserAttributes, eventTags?: optimizely.EventTags): void; setForcedVariation(experiment: string, overrideUserIdOrVariationKey: string, variationKey?: string | null): boolean; getForcedVariation(experiment: string, overrideUserId?: string): string | null; onForcedVariationsUpdate(handler: OnForcedVariationsUpdateHandler): DisposeFn; decide(key: string, options?: optimizely.OptimizelyDecideOption[], overrideUserId?: string, overrideAttributes?: optimizely.UserAttributes): OptimizelyDecision; decideAll(options?: optimizely.OptimizelyDecideOption[], overrideUserId?: string, overrideAttributes?: optimizely.UserAttributes): { [key: string]: OptimizelyDecision; }; decideForKeys(keys: string[], options?: optimizely.OptimizelyDecideOption[], overrideUserId?: string, overrideAttributes?: optimizely.UserAttributes): { [key: string]: OptimizelyDecision; }; setForcedDecision(decisionContext: optimizely.OptimizelyDecisionContext, decision: optimizely.OptimizelyForcedDecision): void; removeAllForcedDecisions(): boolean; removeForcedDecision(decisionContext: optimizely.OptimizelyDecisionContext): boolean; getForcedDecision(decisionContext: optimizely.OptimizelyDecisionContext): optimizely.OptimizelyForcedDecision | null; fetchQualifiedSegments(options?: optimizely.OptimizelySegmentOption[]): Promise; getUserContext(): optimizely.OptimizelyUserContext | null; getVuid(): string | undefined; } export declare const DEFAULT_ON_READY_TIMEOUT = 5000; export declare function createInstance(config: optimizely.Config): ReactSDKClient; export {};