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

import * as z from "zod/v4-mini";
import { safeParse } from "../../lib/schemas.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import {
  OffSessionChargesNotEnabled,
  OffSessionChargesNotEnabled$inboundSchema,
} from "./offsessionchargesnotenabled.js";
import {
  OrganizationNotReadyForPayments,
  OrganizationNotReadyForPayments$inboundSchema,
} from "./organizationnotreadyforpayments.js";
import {
  PaymentActionRequired,
  PaymentActionRequired$inboundSchema,
} from "./paymentactionrequired.js";
import { PaymentFailed, PaymentFailed$inboundSchema } from "./paymentfailed.js";
import { SDKValidationError } from "./sdkvalidationerror.js";

/**
 * Off-session charges are not enabled for this organization, or its account can't currently accept payments.
 */
export type OrdersFinalizeResponse403OrdersFinalize =
  | OffSessionChargesNotEnabled
  | OrganizationNotReadyForPayments;

/**
 * The charge failed, or requires customer authentication (e.g. a 3DS challenge) that can't be completed off-session.
 */
export type OrdersFinalizeResponse402OrdersFinalize =
  | PaymentFailed
  | PaymentActionRequired;

/** @internal */
export const OrdersFinalizeResponse403OrdersFinalize$inboundSchema:
  z.ZodMiniType<OrdersFinalizeResponse403OrdersFinalize, unknown> = z.union([
    OffSessionChargesNotEnabled$inboundSchema,
    OrganizationNotReadyForPayments$inboundSchema,
  ]);

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

/** @internal */
export const OrdersFinalizeResponse402OrdersFinalize$inboundSchema:
  z.ZodMiniType<OrdersFinalizeResponse402OrdersFinalize, unknown> = z.union([
    PaymentFailed$inboundSchema,
    PaymentActionRequired$inboundSchema,
  ]);

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