import { EvaluationOptions as EvaluationOptions$1 } from '@croct/sdk/evaluator';
import { ApiKey } from '@croct/sdk/apiKey';
import { Logger } from '@croct/sdk/logging';
import { JsonValue } from '@croct/json/mutable';

type EvaluationOptions<T extends JsonValue = JsonValue> = EvaluationOptions$1 & AuthOptions & FetchingOptions<T>;
type FetchingOptions<T extends JsonValue> = {
    baseEndpointUrl?: string;
    fallback?: T;
    logger?: Logger;
};
type AuthOptions = ServerSideAuthOptions | ClientSideAuthOptions;
type ServerSideAuthOptions = {
    apiKey: string | ApiKey;
    appId?: never;
};
type ClientSideAuthOptions = {
    appId: string;
    apiKey?: never;
};
declare function evaluate<T extends JsonValue>(query: string, options: EvaluationOptions<T>): Promise<T>;

export { type EvaluationOptions, evaluate };
