import type { ExperimentClient } from '../experiments/types';
import type { ConfigFetcher, FetchResult } from './types';
export interface ExperimentsFetcherOptions {
    /**
     * Experiment client instance (e.g., from createGrowthBookClient).
     */
    client: ExperimentClient;
    /**
     * Feature key for the monolithic config (legacy mode).
     * Callers must provide this explicitly — no hardcoded default.
     */
    featureKey: string;
    /**
     * Feature key for the variant manifest (lists active variant flag keys).
     * When set, enables multi-flag mode.
     */
    manifestKey?: string;
    /**
     * Prefix for convention-based variant flag discovery.
     * All GrowthBook features matching this prefix will be evaluated.
     * Used as fallback when manifestKey is not set or returns empty.
     */
    variantFlagPrefix?: string;
}
/**
 * Fetches config from an experiment/feature flag system.
 *
 * Security: Config is scoped to the experiment client's environment/SDK key.
 * Each client only sees their own config.
 *
 * Performance: No network request needed if features are already cached.
 * Config is delivered with the feature flag payload.
 */
export declare class ExperimentsFetcher implements ConfigFetcher {
    readonly name = "experiments";
    private client;
    private featureKey;
    private manifestKey?;
    private variantFlagPrefix?;
    constructor(options: ExperimentsFetcherOptions);
    fetch(): Promise<FetchResult>;
    /**
     * Resolve config from multiple variant feature flags.
     * Returns the first active variant config, or null if none match.
     */
    private fetchMultiFlag;
    /**
     * Get variant flag keys from manifest or prefix discovery.
     */
    private getVariantFlagKeys;
}
/**
 * Factory function for creating an experiments-based fetcher.
 */
export declare function createExperimentsFetcher(options: ExperimentsFetcherOptions): ConfigFetcher;
