import * as z from "zod/v3";
import { ClosedEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import * as components from "../components/index.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
export declare const OutputType: {
    readonly Boolean: "boolean";
    readonly Number: "number";
};
export type OutputType = ClosedEnum<typeof OutputType>;
export declare const RequestBodyType: {
    readonly PythonEval: "python_eval";
};
export type RequestBodyType = ClosedEnum<typeof RequestBodyType>;
export type Python = {
    guardrailConfig?: any | undefined;
    outputType?: OutputType | undefined;
    code: string;
    type: RequestBodyType;
    /**
     * Entity storage path.
     *
     * @remarks
     *
     * With workspace-level API keys, use the format `project/folder/subfolder/...`. The first element identifies the project, followed by nested folders (auto-created as needed). Example: `Default/agents`.
     *
     * With project-level API keys, the project is predetermined by the API key, so the path is relative to that project. Example: `agents`. For backward compatibility, a leading project name is ignored when it matches the scoped project.
     */
    path: string;
    description?: string | undefined;
    key: string;
};
/**
 * The type of output expected from the evaluator
 */
export declare const LLMOutputType: {
    readonly Boolean: "boolean";
    readonly Categorical: "categorical";
    readonly Number: "number";
    readonly String: "string";
};
/**
 * The type of output expected from the evaluator
 */
export type LLMOutputType = ClosedEnum<typeof LLMOutputType>;
export declare const LLMType: {
    readonly LlmEval: "llm_eval";
};
export type LLMType = ClosedEnum<typeof LLMType>;
export type LLMCategoricalLabels = {
    value: string;
    description?: string | undefined;
};
export type CreateEvalLLMRetry = {
    count?: number | undefined;
    onCodes?: Array<number> | undefined;
};
export type CreateEvalLLMFallbacks = {
    model: string;
};
export type LLMJudges = {
    model: string;
    retry?: CreateEvalLLMRetry | undefined;
    fallbacks?: Array<CreateEvalLLMFallbacks> | undefined;
};
export type LLMRetry = {
    count?: number | undefined;
    onCodes?: Array<number> | undefined;
};
export type LLMFallbacks = {
    model: string;
};
export type LLMReplacementJudges = {
    model: string;
    retry?: LLMRetry | undefined;
    fallbacks?: Array<LLMFallbacks> | undefined;
};
export declare const LLMTieValue: {
    readonly Tie: "Tie";
};
export type LLMTieValue = ClosedEnum<typeof LLMTieValue>;
export type LLMJury = {
    judges: Array<LLMJudges>;
    replacementJudges?: Array<LLMReplacementJudges> | undefined;
    minSuccessfulJudges?: number | undefined;
    tieValue?: LLMTieValue | undefined;
};
export type Llm2 = {
    guardrailConfig?: any | undefined;
    /**
     * The type of output expected from the evaluator
     */
    outputType?: LLMOutputType | undefined;
    type: LLMType;
    repetitions?: number | null | undefined;
    prompt: string;
    categories?: Array<string> | null | undefined;
    categoricalLabels?: Array<LLMCategoricalLabels> | null | undefined;
    datasetId?: string | undefined;
    /**
     * Entity storage path.
     *
     * @remarks
     *
     * With workspace-level API keys, use the format `project/folder/subfolder/...`. The first element identifies the project, followed by nested folders (auto-created as needed). Example: `Default/agents`.
     *
     * With project-level API keys, the project is predetermined by the API key, so the path is relative to that project. Example: `agents`. For backward compatibility, a leading project name is ignored when it matches the scoped project.
     */
    path: string;
    description?: string | undefined;
    key: string;
    mode: "jury";
    jury: LLMJury;
};
/**
 * The type of output expected from the evaluator
 */
export declare const CreateEvalLLMOutputType: {
    readonly Boolean: "boolean";
    readonly Categorical: "categorical";
    readonly Number: "number";
    readonly String: "string";
};
/**
 * The type of output expected from the evaluator
 */
export type CreateEvalLLMOutputType = ClosedEnum<typeof CreateEvalLLMOutputType>;
export declare const CreateEvalLLMType: {
    readonly LlmEval: "llm_eval";
};
export type CreateEvalLLMType = ClosedEnum<typeof CreateEvalLLMType>;
export type CreateEvalLLMCategoricalLabels = {
    value: string;
    description?: string | undefined;
};
export type Llm1 = {
    guardrailConfig?: any | undefined;
    /**
     * The type of output expected from the evaluator
     */
    outputType?: CreateEvalLLMOutputType | undefined;
    type: CreateEvalLLMType;
    repetitions?: number | null | undefined;
    prompt: string;
    categories?: Array<string> | null | undefined;
    categoricalLabels?: Array<CreateEvalLLMCategoricalLabels> | null | undefined;
    datasetId?: string | undefined;
    /**
     * Entity storage path.
     *
     * @remarks
     *
     * With workspace-level API keys, use the format `project/folder/subfolder/...`. The first element identifies the project, followed by nested folders (auto-created as needed). Example: `Default/agents`.
     *
     * With project-level API keys, the project is predetermined by the API key, so the path is relative to that project. Example: `agents`. For backward compatibility, a leading project name is ignored when it matches the scoped project.
     */
    path: string;
    description?: string | undefined;
    key: string;
    mode: "single";
    model: string;
};
export type Llm = Llm1 | Llm2;
export type CreateEvalRequestBody = Python | Llm1 | Llm2;
/**
 * Successfully created an evaluator
 */
export type CreateEvalResponseBody = components.EvaluatorResponseLlm | components.EvaluatorResponseJsonSchema | components.EvaluatorResponseHttp | components.EvaluatorResponsePython | components.EvaluatorResponseFunction | components.EvaluatorResponseRagas | components.EvaluatorResponseTypescript;
/** @internal */
export declare const OutputType$outboundSchema: z.ZodNativeEnum<typeof OutputType>;
/** @internal */
export declare const RequestBodyType$outboundSchema: z.ZodNativeEnum<typeof RequestBodyType>;
/** @internal */
export type Python$Outbound = {
    guardrail_config?: any | undefined;
    output_type?: string | undefined;
    code: string;
    type: string;
    path: string;
    description: string;
    key: string;
};
/** @internal */
export declare const Python$outboundSchema: z.ZodType<Python$Outbound, z.ZodTypeDef, Python>;
export declare function pythonToJSON(python: Python): string;
/** @internal */
export declare const LLMOutputType$outboundSchema: z.ZodNativeEnum<typeof LLMOutputType>;
/** @internal */
export declare const LLMType$outboundSchema: z.ZodNativeEnum<typeof LLMType>;
/** @internal */
export type LLMCategoricalLabels$Outbound = {
    value: string;
    description?: string | undefined;
};
/** @internal */
export declare const LLMCategoricalLabels$outboundSchema: z.ZodType<LLMCategoricalLabels$Outbound, z.ZodTypeDef, LLMCategoricalLabels>;
export declare function llmCategoricalLabelsToJSON(llmCategoricalLabels: LLMCategoricalLabels): string;
/** @internal */
export type CreateEvalLLMRetry$Outbound = {
    count: number;
    on_codes?: Array<number> | undefined;
};
/** @internal */
export declare const CreateEvalLLMRetry$outboundSchema: z.ZodType<CreateEvalLLMRetry$Outbound, z.ZodTypeDef, CreateEvalLLMRetry>;
export declare function createEvalLLMRetryToJSON(createEvalLLMRetry: CreateEvalLLMRetry): string;
/** @internal */
export type CreateEvalLLMFallbacks$Outbound = {
    model: string;
};
/** @internal */
export declare const CreateEvalLLMFallbacks$outboundSchema: z.ZodType<CreateEvalLLMFallbacks$Outbound, z.ZodTypeDef, CreateEvalLLMFallbacks>;
export declare function createEvalLLMFallbacksToJSON(createEvalLLMFallbacks: CreateEvalLLMFallbacks): string;
/** @internal */
export type LLMJudges$Outbound = {
    model: string;
    retry?: CreateEvalLLMRetry$Outbound | undefined;
    fallbacks?: Array<CreateEvalLLMFallbacks$Outbound> | undefined;
};
/** @internal */
export declare const LLMJudges$outboundSchema: z.ZodType<LLMJudges$Outbound, z.ZodTypeDef, LLMJudges>;
export declare function llmJudgesToJSON(llmJudges: LLMJudges): string;
/** @internal */
export type LLMRetry$Outbound = {
    count: number;
    on_codes?: Array<number> | undefined;
};
/** @internal */
export declare const LLMRetry$outboundSchema: z.ZodType<LLMRetry$Outbound, z.ZodTypeDef, LLMRetry>;
export declare function llmRetryToJSON(llmRetry: LLMRetry): string;
/** @internal */
export type LLMFallbacks$Outbound = {
    model: string;
};
/** @internal */
export declare const LLMFallbacks$outboundSchema: z.ZodType<LLMFallbacks$Outbound, z.ZodTypeDef, LLMFallbacks>;
export declare function llmFallbacksToJSON(llmFallbacks: LLMFallbacks): string;
/** @internal */
export type LLMReplacementJudges$Outbound = {
    model: string;
    retry?: LLMRetry$Outbound | undefined;
    fallbacks?: Array<LLMFallbacks$Outbound> | undefined;
};
/** @internal */
export declare const LLMReplacementJudges$outboundSchema: z.ZodType<LLMReplacementJudges$Outbound, z.ZodTypeDef, LLMReplacementJudges>;
export declare function llmReplacementJudgesToJSON(llmReplacementJudges: LLMReplacementJudges): string;
/** @internal */
export declare const LLMTieValue$outboundSchema: z.ZodNativeEnum<typeof LLMTieValue>;
/** @internal */
export type LLMJury$Outbound = {
    judges: Array<LLMJudges$Outbound>;
    replacement_judges?: Array<LLMReplacementJudges$Outbound> | undefined;
    min_successful_judges: number;
    tie_value: string;
};
/** @internal */
export declare const LLMJury$outboundSchema: z.ZodType<LLMJury$Outbound, z.ZodTypeDef, LLMJury>;
export declare function llmJuryToJSON(llmJury: LLMJury): string;
/** @internal */
export type Llm2$Outbound = {
    guardrail_config?: any | undefined;
    output_type?: string | undefined;
    type: string;
    repetitions?: number | null | undefined;
    prompt: string;
    categories?: Array<string> | null | undefined;
    categorical_labels?: Array<LLMCategoricalLabels$Outbound> | null | undefined;
    dataset_id?: string | undefined;
    path: string;
    description: string;
    key: string;
    mode: "jury";
    jury: LLMJury$Outbound;
};
/** @internal */
export declare const Llm2$outboundSchema: z.ZodType<Llm2$Outbound, z.ZodTypeDef, Llm2>;
export declare function llm2ToJSON(llm2: Llm2): string;
/** @internal */
export declare const CreateEvalLLMOutputType$outboundSchema: z.ZodNativeEnum<typeof CreateEvalLLMOutputType>;
/** @internal */
export declare const CreateEvalLLMType$outboundSchema: z.ZodNativeEnum<typeof CreateEvalLLMType>;
/** @internal */
export type CreateEvalLLMCategoricalLabels$Outbound = {
    value: string;
    description?: string | undefined;
};
/** @internal */
export declare const CreateEvalLLMCategoricalLabels$outboundSchema: z.ZodType<CreateEvalLLMCategoricalLabels$Outbound, z.ZodTypeDef, CreateEvalLLMCategoricalLabels>;
export declare function createEvalLLMCategoricalLabelsToJSON(createEvalLLMCategoricalLabels: CreateEvalLLMCategoricalLabels): string;
/** @internal */
export type Llm1$Outbound = {
    guardrail_config?: any | undefined;
    output_type?: string | undefined;
    type: string;
    repetitions?: number | null | undefined;
    prompt: string;
    categories?: Array<string> | null | undefined;
    categorical_labels?: Array<CreateEvalLLMCategoricalLabels$Outbound> | null | undefined;
    dataset_id?: string | undefined;
    path: string;
    description: string;
    key: string;
    mode: "single";
    model: string;
};
/** @internal */
export declare const Llm1$outboundSchema: z.ZodType<Llm1$Outbound, z.ZodTypeDef, Llm1>;
export declare function llm1ToJSON(llm1: Llm1): string;
/** @internal */
export type Llm$Outbound = Llm1$Outbound | Llm2$Outbound;
/** @internal */
export declare const Llm$outboundSchema: z.ZodType<Llm$Outbound, z.ZodTypeDef, Llm>;
export declare function llmToJSON(llm: Llm): string;
/** @internal */
export type CreateEvalRequestBody$Outbound = Python$Outbound | Llm1$Outbound | Llm2$Outbound;
/** @internal */
export declare const CreateEvalRequestBody$outboundSchema: z.ZodType<CreateEvalRequestBody$Outbound, z.ZodTypeDef, CreateEvalRequestBody>;
export declare function createEvalRequestBodyToJSON(createEvalRequestBody: CreateEvalRequestBody): string;
/** @internal */
export declare const CreateEvalResponseBody$inboundSchema: z.ZodType<CreateEvalResponseBody, z.ZodTypeDef, unknown>;
export declare function createEvalResponseBodyFromJSON(jsonString: string): SafeParseResult<CreateEvalResponseBody, SDKValidationError>;
//# sourceMappingURL=createeval.d.ts.map