import { ISplitStatus } from './types';
/**
 * ClientWithContext interface.
 */
interface IClientWithContext extends SplitIO.IBrowserClient {
    __getStatus(): {
        isReady: boolean;
        isReadyFromCache: boolean;
        isTimedout: boolean;
        hasTimedout: boolean;
        isDestroyed: boolean;
        isOperational: boolean;
        lastUpdate: number;
    };
}
export interface IFactoryWithLazyInit extends SplitIO.IBrowserSDK {
    config: SplitIO.IBrowserSettings;
    init(): void;
}
export declare function getSplitClient(factory: SplitIO.IBrowserSDK, key?: SplitIO.SplitKey): IClientWithContext;
export declare function getStatus(client?: SplitIO.IBrowserClient): ISplitStatus;
/**
 * Manage client attributes binding
 */
export declare function initAttributes(client?: SplitIO.IBrowserClient, attributes?: SplitIO.Attributes): void;
export declare function getControlTreatmentsWithConfig(featureFlagNames: unknown): SplitIO.TreatmentsWithConfig;
/**
 * Gets a memoized version of the `client.getTreatmentsWithConfig` method.
 * It is used to avoid duplicated impressions, because the result treatments are the same given the same `client` instance, `lastUpdate` timestamp, and list of feature flag `names` and `attributes`.
 */
export declare function memoizeGetTreatmentsWithConfig(): typeof evaluateFeatureFlags;
declare function evaluateFeatureFlags(client: SplitIO.IBrowserClient | undefined, _lastUpdate: number, names?: SplitIO.SplitNames, attributes?: SplitIO.Attributes, _clientAttributes?: SplitIO.Attributes, flagSets?: string[], options?: SplitIO.EvaluationOptions): import("@splitsoftware/splitio-commons/types/splitio").TreatmentsWithConfig;
export {};
