// Generated by @novaclaw/httpapi-codegen. Do not edit.
import { Effect, Schema, Stream } from "effect"
import { Sse } from "effect/unstable/encoding"
import { HttpClientError } from "effect/unstable/http"
import { HttpApiClient, HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi"
import { ClientError } from "./client-error"

const Endpoint0SuccessData = Schema.Struct({ type: Schema.String })

const Endpoint0SuccessError = Schema.Never

export const Group1 = HttpApiGroup.make("event", { topLevel: false }).add(
  HttpApiEndpoint.make("GET")("subscribe", "/event", {
    success: HttpApiSchema.StreamSse({
      data: Endpoint0SuccessData,
      error: Endpoint0SuccessError,
      contentType: "text/event-stream",
    }).pipe(HttpApiSchema.status(202)),
  }),
)

type RawGroup = HttpApiClient.Client.Group<typeof Group1, "event", never, never>

const Endpoint0DeclaredError = Schema.Union([Endpoint0SuccessError])
const mapEndpoint0Error = (error: unknown) =>
  HttpClientError.isHttpClientError(error) || Schema.isSchemaError(error) || Sse.Retry.is(error)
    ? new ClientError({ cause: error })
    : Schema.is(Endpoint0DeclaredError)(error)
      ? error
      : new ClientError({ cause: error })
const Endpoint0 = (raw: RawGroup) => () =>
  Stream.unwrap(
    raw["subscribe"]({}).pipe(
      Effect.mapError(mapEndpoint0Error),
      Effect.map((stream) => stream.pipe(Stream.mapError(mapEndpoint0Error))),
    ),
  )

export const adaptGroup1 = (raw: RawGroup) => ({ subscribe: Endpoint0(raw) })
