/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 * @generated-id: bf83cc1854bc
 */

import * as z from "zod/v4";
import { remap as remap$ } from "../../lib/primitives.js";
import { safeParse } from "../../lib/schemas.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import {
  CustomTaskInProgressAttributesResponse,
  CustomTaskInProgressAttributesResponse$inboundSchema,
} from "./customtaskinprogressattributesresponse.js";

/**
 * Emitted during custom task execution to report progress.
 *
 * @remarks
 *
 * This event supports streaming updates via JSON or JSON Patch payloads,
 * enabling real-time progress tracking for long-running tasks.
 */
export type CustomTaskInProgressResponse = {
  /**
   * Unique identifier for this event instance.
   */
  eventId: string;
  /**
   * Unix timestamp in nanoseconds when the event was created.
   */
  eventTimestamp: number;
  /**
   * Execution ID of the root workflow that initiated this execution chain.
   */
  rootWorkflowExecId: string;
  /**
   * Execution ID of the parent workflow that initiated this execution. If this is a root workflow, this field is not set.
   */
  parentWorkflowExecId: string | null;
  /**
   * Execution ID of the workflow that emitted this event.
   */
  workflowExecId: string;
  /**
   * Run ID of the workflow execution. Changes on continue-as-new while workflow_exec_id stays the same.
   */
  workflowRunId: string;
  /**
   * The registered name of the workflow that emitted this event.
   */
  workflowName: string;
  /**
   * Event type discriminator.
   */
  eventType: "CUSTOM_TASK_IN_PROGRESS";
  /**
   * Attributes for custom task in-progress events with streaming updates.
   */
  attributes: CustomTaskInProgressAttributesResponse;
};

/** @internal */
export const CustomTaskInProgressResponse$inboundSchema: z.ZodType<
  CustomTaskInProgressResponse,
  unknown
> = z.object({
  event_id: z.string(),
  event_timestamp: z.int(),
  root_workflow_exec_id: z.string(),
  parent_workflow_exec_id: z.nullable(z.string()),
  workflow_exec_id: z.string(),
  workflow_run_id: z.string(),
  workflow_name: z.string(),
  event_type: z.literal("CUSTOM_TASK_IN_PROGRESS").default(
    "CUSTOM_TASK_IN_PROGRESS",
  ),
  attributes: CustomTaskInProgressAttributesResponse$inboundSchema,
}).transform((v) => {
  return remap$(v, {
    "event_id": "eventId",
    "event_timestamp": "eventTimestamp",
    "root_workflow_exec_id": "rootWorkflowExecId",
    "parent_workflow_exec_id": "parentWorkflowExecId",
    "workflow_exec_id": "workflowExecId",
    "workflow_run_id": "workflowRunId",
    "workflow_name": "workflowName",
    "event_type": "eventType",
  });
});

export function customTaskInProgressResponseFromJSON(
  jsonString: string,
): SafeParseResult<CustomTaskInProgressResponse, SDKValidationError> {
  return safeParse(
    jsonString,
    (x) => CustomTaskInProgressResponse$inboundSchema.parse(JSON.parse(x)),
    `Failed to parse 'CustomTaskInProgressResponse' from JSON`,
  );
}
