/**
 * GraphQL client for Variably API
 */
import { VariablyConfig, UserContext, Event, FlagEvaluationResponse, GateEvaluationResponse, BatchFlagEvaluationResponse } from './types';
import { Logger } from './logger';
import { MetricsCollector } from './metrics';
export declare class GraphQLClient {
    private baseUrl;
    private apiKey;
    private timeout;
    private retryAttempts;
    private logger;
    private metrics;
    constructor(config: Required<VariablyConfig>, logger: Logger, metrics: MetricsCollector);
    /**
     * Evaluate a single feature flag
     */
    evaluateFlag(flagKey: string, context: UserContext): Promise<FlagEvaluationResponse>;
    /**
     * Evaluate multiple feature flags in batch
     */
    evaluateFlags(flagKeys: string[], context: UserContext): Promise<BatchFlagEvaluationResponse>;
    /**
     * Evaluate a feature gate
     */
    evaluateGate(gateKey: string, context: UserContext): Promise<GateEvaluationResponse>;
    /**
     * Track a single event
     */
    trackEvent(event: Event): Promise<void>;
    /**
     * Track multiple events in batch
     */
    trackEvents(events: Event[]): Promise<void>;
    /**
     * Execute a GraphQL query
     */
    private executeQuery;
    /**
     * Execute a GraphQL mutation
     */
    private executeMutation;
    /**
     * Execute a GraphQL request with retry logic
     */
    private executeGraphQL;
    /**
     * Execute the actual HTTP request
     */
    private makeRequest;
    /**
     * Handle HTTP error responses
     */
    private handleHttpError;
    /**
     * Determine if an error should trigger a retry
     */
    private shouldRetry;
    /**
     * Convert SDK UserContext to GraphQL input format
     */
    private convertUserContext;
    /**
     * Sleep for a given number of milliseconds
     */
    private sleep;
}
//# sourceMappingURL=graphql-client.d.ts.map