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

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 {
  ActivityTaskCompletedAttributesResponse,
  ActivityTaskCompletedAttributesResponse$inboundSchema,
} from "./activitytaskcompletedattributesresponse.js";

/**
 * Emitted when an activity task completes successfully.
 *
 * @remarks
 *
 * Contains timing information about the successful execution.
 */
export type ActivityTaskCompletedResponse = {
  /**
   * 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: "ACTIVITY_TASK_COMPLETED";
  /**
   * Attributes for activity task completed events.
   */
  attributes: ActivityTaskCompletedAttributesResponse;
};

/** @internal */
export const ActivityTaskCompletedResponse$inboundSchema: z.ZodType<
  ActivityTaskCompletedResponse,
  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("ACTIVITY_TASK_COMPLETED").default(
    "ACTIVITY_TASK_COMPLETED",
  ),
  attributes: ActivityTaskCompletedAttributesResponse$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 activityTaskCompletedResponseFromJSON(
  jsonString: string,
): SafeParseResult<ActivityTaskCompletedResponse, SDKValidationError> {
  return safeParse(
    jsonString,
    (x) => ActivityTaskCompletedResponse$inboundSchema.parse(JSON.parse(x)),
    `Failed to parse 'ActivityTaskCompletedResponse' from JSON`,
  );
}
