/*
 * TaskSendParams.kt
 *
 * This code was generated by json-kotlin-schema-codegen - JSON Schema Code Generator
 * See https://github.com/pwall567/json-kotlin-schema-codegen
 *
 * It is not advisable to modify generated code as any modifications will be lost
 * when the generation process is re-run.
 *
 * This was generated from A2A Schema: https://raw.githubusercontent.com/google/A2A/refs/heads/main/specification/json/a2a.json
 */
package dev.mokksy.aimocks.a2a.model

import kotlinx.serialization.Contextual
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
public data class TaskSendParams
    @JvmOverloads
    constructor(
        @SerialName("id")
        val id: TaskId,
        @SerialName("sessionId")
        val sessionId: SessionId? = null,
        @SerialName("message")
        val message: Message,
        @SerialName("pushNotification")
        val pushNotification: PushNotificationConfig? = null,
        @SerialName("historyLength")
        val historyLength: Long? = null,
        @SerialName("metadata")
        @Contextual
        val metadata: Metadata? = null,
    ) {
        public companion object {
            /**
             * Creates a new TaskSendParams using the DSL builder.
             *
             * @param init The lambda to configure the task send params.
             * @return A new TaskSendParams instance.
             */
            @JvmStatic
            public fun build(init: TaskSendParamsBuilder.() -> Unit): TaskSendParams =
                TaskSendParamsBuilder().apply(init).build()
        }
    }
