import * as z from "zod/v3";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { Classifier, Classifier$Outbound } from "./classifier.js";
import { JudgeConfiguration, JudgeConfiguration$Outbound } from "./judgeconfiguration.js";
import { Message, Message$Outbound } from "./message.js";
import { VariationSkillPost, VariationSkillPost$Outbound } from "./variationskillpost.js";
import { VariationToolPost, VariationToolPost$Outbound } from "./variationtoolpost.js";
/**
 * Freeform JSON object. LaunchDarkly does not validate the keys. In a model config, `params` and `customParams` hold parameters that the provider's API accepts, for example `{"temperature": 0.7, "maxTokens": 4096}`.
 */
export type AIConfigVariationPostModel = {};
export type AIConfigVariationPost = {
    /**
     * Classifier rules for a judge variation. When this array is non-empty, messages must be empty.
     *
     * @remarks
     */
    classifiers?: Array<Classifier> | undefined;
    /**
     * Human-readable description of this variation
     */
    comment?: string | undefined;
    /**
     * Returns the description for the agent. This is only returned for agent variations.
     */
    description?: string | undefined;
    /**
     * Returns the instructions for the agent. This is only returned for agent variations.
     */
    instructions?: string | undefined;
    /**
     * A unique key for the variation
     */
    key: string;
    /**
     * The prompt messages for this variation
     */
    messages?: Array<Message> | undefined;
    /**
     * Freeform JSON object. LaunchDarkly does not validate the keys. In a model config, `params` and `customParams` hold parameters that the provider's API accepts, for example `{"temperature": 0.7, "maxTokens": 4096}`.
     */
    model?: AIConfigVariationPostModel | undefined;
    /**
     * A human-readable name for the variation
     */
    name: string;
    /**
     * The key that GET /api/v2/projects/{projectKey}/ai-configs/model-configs returns for the
     *
     * @remarks
     * model config. Do not use a custom model config's ID, which is the provider model ID.
     */
    modelConfigKey?: string | undefined;
    /**
     * The exact model config version to set this variation to. Requires modelConfigKey to be
     *
     * @remarks
     * set, and the version must exist for that model config. When omitted, the variation
     * records the model config's current (latest) version.
     */
    modelConfigVersion?: number | undefined;
    /**
     * JSON Schema defining the structured output format for the variation.
     */
    outputFormat?: {
        [k: string]: any;
    } | undefined;
    /**
     * List of tools to use for this variation. The latest version of the tool will be used.
     */
    tools?: Array<VariationToolPost> | undefined;
    /**
     * List of tool keys to use for this variation. The latest version of the tool will be used.
     */
    toolKeys?: Array<string> | undefined;
    /**
     * List of agent skills to attach to this variation.
     */
    skills?: Array<VariationSkillPost> | undefined;
    judgeConfiguration?: JudgeConfiguration | undefined;
};
/** @internal */
export declare const AIConfigVariationPostModel$inboundSchema: z.ZodType<AIConfigVariationPostModel, z.ZodTypeDef, unknown>;
/** @internal */
export type AIConfigVariationPostModel$Outbound = {};
/** @internal */
export declare const AIConfigVariationPostModel$outboundSchema: z.ZodType<AIConfigVariationPostModel$Outbound, z.ZodTypeDef, AIConfigVariationPostModel>;
export declare function aiConfigVariationPostModelToJSON(aiConfigVariationPostModel: AIConfigVariationPostModel): string;
export declare function aiConfigVariationPostModelFromJSON(jsonString: string): SafeParseResult<AIConfigVariationPostModel, SDKValidationError>;
/** @internal */
export declare const AIConfigVariationPost$inboundSchema: z.ZodType<AIConfigVariationPost, z.ZodTypeDef, unknown>;
/** @internal */
export type AIConfigVariationPost$Outbound = {
    classifiers?: Array<Classifier$Outbound> | undefined;
    comment?: string | undefined;
    description?: string | undefined;
    instructions?: string | undefined;
    key: string;
    messages?: Array<Message$Outbound> | undefined;
    model?: AIConfigVariationPostModel$Outbound | undefined;
    name: string;
    modelConfigKey?: string | undefined;
    modelConfigVersion?: number | undefined;
    outputFormat?: {
        [k: string]: any;
    } | undefined;
    tools?: Array<VariationToolPost$Outbound> | undefined;
    toolKeys?: Array<string> | undefined;
    skills?: Array<VariationSkillPost$Outbound> | undefined;
    judgeConfiguration?: JudgeConfiguration$Outbound | undefined;
};
/** @internal */
export declare const AIConfigVariationPost$outboundSchema: z.ZodType<AIConfigVariationPost$Outbound, z.ZodTypeDef, AIConfigVariationPost>;
export declare function aiConfigVariationPostToJSON(aiConfigVariationPost: AIConfigVariationPost): string;
export declare function aiConfigVariationPostFromJSON(jsonString: string): SafeParseResult<AIConfigVariationPost, SDKValidationError>;
//# sourceMappingURL=aiconfigvariationpost.d.ts.map