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

import * as z from "zod/v4-mini";
import {
  AuthorizationCodeTokenRequest,
  AuthorizationCodeTokenRequest$Outbound,
  AuthorizationCodeTokenRequest$outboundSchema,
} from "../components/authorizationcodetokenrequest.js";
import {
  RefreshTokenRequest,
  RefreshTokenRequest$Outbound,
  RefreshTokenRequest$outboundSchema,
} from "../components/refreshtokenrequest.js";
import {
  WebTokenRequest,
  WebTokenRequest$Outbound,
  WebTokenRequest$outboundSchema,
} from "../components/webtokenrequest.js";

export type Oauth2RequestTokenRequestBody =
  | AuthorizationCodeTokenRequest
  | RefreshTokenRequest
  | WebTokenRequest;

/** @internal */
export type Oauth2RequestTokenRequestBody$Outbound =
  | AuthorizationCodeTokenRequest$Outbound
  | RefreshTokenRequest$Outbound
  | WebTokenRequest$Outbound;

/** @internal */
export const Oauth2RequestTokenRequestBody$outboundSchema: z.ZodMiniType<
  Oauth2RequestTokenRequestBody$Outbound,
  Oauth2RequestTokenRequestBody
> = z.union([
  AuthorizationCodeTokenRequest$outboundSchema,
  RefreshTokenRequest$outboundSchema,
  WebTokenRequest$outboundSchema,
]);

export function oauth2RequestTokenRequestBodyToJSON(
  oauth2RequestTokenRequestBody: Oauth2RequestTokenRequestBody,
): string {
  return JSON.stringify(
    Oauth2RequestTokenRequestBody$outboundSchema.parse(
      oauth2RequestTokenRequestBody,
    ),
  );
}
