/**
 * Variably JavaScript/TypeScript SDK Client
 */
import { VariablyConfig, UserContext, Event, FlagResult, SDKMetrics } from './types';
export declare class VariablyClient {
    private graphqlClient;
    private cache;
    private metrics;
    private logger;
    private config;
    constructor(config: VariablyConfig);
    /**
     * Evaluate a boolean feature flag
     */
    evaluateFlagBool(flagKey: string, defaultValue: boolean, userContext: UserContext): Promise<boolean>;
    /**
     * Evaluate a string feature flag
     */
    evaluateFlagString(flagKey: string, defaultValue: string, userContext: UserContext): Promise<string>;
    /**
     * Evaluate a number feature flag
     */
    evaluateFlagNumber(flagKey: string, defaultValue: number, userContext: UserContext): Promise<number>;
    /**
     * Evaluate a JSON feature flag
     */
    evaluateFlagJSON<T = any>(flagKey: string, defaultValue: T, userContext: UserContext): Promise<T>;
    /**
     * Evaluate a feature flag with full result details
     */
    evaluateFlag(flagKey: string, defaultValue: any, userContext: UserContext): Promise<FlagResult>;
    /**
     * Evaluate multiple feature flags in batch
     */
    evaluateFlags(flagKeys: string[], userContext: UserContext): Promise<Record<string, FlagResult>>;
    /**
     * Evaluate a feature gate
     */
    evaluateGate(gateKey: string, userContext: UserContext): Promise<boolean>;
    /**
     * Track an analytics event
     */
    track(event: Event): Promise<void>;
    /**
     * Track multiple events in batch
     */
    trackBatch(events: Event[]): Promise<void>;
    /**
     * Clear the cache
     */
    clearCache(): void;
    /**
     * Get SDK metrics
     */
    getMetrics(): SDKMetrics;
    /**
     * Destroy the client and clean up resources
     */
    destroy(): void;
    /**
     * Validate and normalize configuration
     */
    private validateAndNormalizeConfig;
    /**
     * Generate cache key for flag evaluation
     */
    private generateCacheKey;
    /**
     * Generate cache key for gate evaluation
     */
    private generateGateCacheKey;
    /**
     * Generate a simple hash of user context for caching
     */
    private hashUserContext;
}
export declare function createClient(config: VariablyConfig): VariablyClient;
export declare function createClientFromEnv(): VariablyClient;
//# sourceMappingURL=client.d.ts.map