import * as z from "zod/v3";
import { ClosedEnum } from "../../types/enums.js";
import { ErrorPart, ErrorPart$Outbound } from "./errorpart.js";
import { FilePart, FilePart$Outbound } from "./filepart.js";
import { TextPart, TextPart$Outbound } from "./textpart.js";
import { ToolResultPart, ToolResultPart$Outbound } from "./toolresultpart.js";
/**
 * Role indicating this message is from a user
 */
export declare const UserMessageRequestRole: {
    readonly User: "user";
};
/**
 * Role indicating this message is from a user
 */
export type UserMessageRequestRole = ClosedEnum<typeof UserMessageRequestRole>;
/**
 * Message part that can be provided by users. Use "text" for regular messages, "file" for attachments, or "tool_result" when responding to tool call requests.
 */
export type UserMessageRequestPublicMessagePart = TextPart | FilePart | ToolResultPart | ErrorPart;
/**
 * The user message to send to the model
 */
export type UserMessageRequest = {
    /**
     * Optional message ID in ULID format
     */
    messageId?: string | undefined;
    /**
     * Role indicating this message is from a user
     */
    role: UserMessageRequestRole;
    /**
     * Array of message parts. User messages can contain text, file, tool_result, and error parts.
     */
    parts: Array<TextPart | FilePart | ToolResultPart | ErrorPart>;
};
/** @internal */
export declare const UserMessageRequestRole$outboundSchema: z.ZodNativeEnum<typeof UserMessageRequestRole>;
/** @internal */
export type UserMessageRequestPublicMessagePart$Outbound = TextPart$Outbound | FilePart$Outbound | ToolResultPart$Outbound | ErrorPart$Outbound;
/** @internal */
export declare const UserMessageRequestPublicMessagePart$outboundSchema: z.ZodType<UserMessageRequestPublicMessagePart$Outbound, z.ZodTypeDef, UserMessageRequestPublicMessagePart>;
export declare function userMessageRequestPublicMessagePartToJSON(userMessageRequestPublicMessagePart: UserMessageRequestPublicMessagePart): string;
/** @internal */
export type UserMessageRequest$Outbound = {
    messageId?: string | undefined;
    role: string;
    parts: Array<TextPart$Outbound | FilePart$Outbound | ToolResultPart$Outbound | ErrorPart$Outbound>;
};
/** @internal */
export declare const UserMessageRequest$outboundSchema: z.ZodType<UserMessageRequest$Outbound, z.ZodTypeDef, UserMessageRequest>;
export declare function userMessageRequestToJSON(userMessageRequest: UserMessageRequest): string;
//# sourceMappingURL=usermessagerequest.d.ts.map