import React, { ReactNode } from 'react';
import { ReturnType, NamedReturnType, Answer } from './types';
import { UseExperiments } from './useExperiments';
export declare const MetricaExperimentsContext: React.Context<ReturnType>;
interface ContextExperiments extends UseExperiments {
    children: ReactNode;
    /**
     * Если включен antiflicker, то приложение не будет отрисовано, пока не получит флаги экспериментов
     */
    enableAntiflicker?: boolean;
    /**
     * По завершении таймаута приложение отрисуется без флагов
     */
    antiflickerTimeout?: number;
}
export declare const MetricaExperimentsProvider: React.FC<ContextExperiments>;
export declare const useExperimentsContext: <T extends Record<string, string>>() => NamedReturnType<T>;
type Ready = Pick<Answer, 'ready'>;
export declare function useFlagContext<T extends Record<string, string>>(name: keyof T, takeFirst?: false): Ready & {
    /**
     * Flag values
     *
     * Empty array if there is no value
     */
    value: string[];
};
export declare function useFlagContext<T extends Record<string, string>>(name: keyof T, takeFirst: true): Ready & {
    /**
     * Flag value
     *
     * Empty string if there is no value
     */
    value: string;
};
export {};
