export interface ExpjsAnswer {
    flags: Record<string, string[] | undefined>;
    i?: string;
    experiments?: string;
    testids?: number[];
}
export interface Config {
    nonce?: string;
    enableVisual: boolean;
    enableHTML: boolean;
    enableJS: boolean;
    enableRedir: boolean;
    enableWatch: boolean;
    storeRedirParam: boolean | 'localstorage' | 'cookie' | 'get';
    metrikaTimeout: number;
}
export interface Answer extends ExpjsAnswer {
    ready: true;
}
export interface NoAnswer {
    flags: Record<string, undefined>;
    i?: undefined;
    experiments?: undefined;
    testids?: undefined;
    ready: false;
}
export interface AnswerNamed<T> extends Omit<Answer, 'flags'> {
    flags: Partial<Record<keyof T, string[]>>;
    ready: true;
}
export interface NoAnswerNamed<T> extends Omit<NoAnswer, 'flags'> {
    flags: Partial<Record<keyof T, undefined>>;
}
export type ReturnType = Answer | NoAnswer;
export type NamedReturnType<T> = AnswerNamed<T> | NoAnswerNamed<T>;
