// This file is auto-generated by oagen. Do not edit. import { Effect } from "effect" import type { Client, Options, TDataShape } from "./client/index.js" import type { ServerSentEventsResult } from "./core/serverSentEvents.gen.js" import type { CreateProjectTaskData, CreateProjectTaskError, CreateProjectTaskErrors, CreateProjectTaskResponse, CreateProjectTaskResponses, ListProjectTasksData, ListProjectTasksError, ListProjectTasksErrors, ListProjectTasksResponse, ListProjectTasksResponses, StreamProjectEventsData, StreamProjectEventsResponse, StreamProjectEventsResponses, } from "./types.gen.js" export type ExampleEffectOptions = Omit< Options, "responseStyle" | "throwOnError" > export interface ExampleEffectClient { tasks: { /** * List tasks for a project. */ listProjectTasks( options: ExampleEffectOptions, ): Effect.Effect /** * Create a task in a project. */ createProjectTask( options: ExampleEffectOptions, ): Effect.Effect } events: { /** * Stream project events as server-sent events. */ streamProjectEvents( options: ExampleEffectOptions, ): Effect.Effect, Error> } } export function createExampleEffectClient(client: Client): ExampleEffectClient { return { tasks: { listProjectTasks: (options) => request(() => client.get({ url: "/projects/{projectId}/tasks", ...options, throwOnError: true, responseStyle: "data", }), ), createProjectTask: (options) => request(() => client.post({ url: "/projects/{projectId}/tasks", ...options, throwOnError: true, responseStyle: "data", headers: { "Content-Type": "application/json", ...options?.headers }, }), ), }, events: { streamProjectEvents: (options) => request, never>(() => client.sse.get({ url: "/projects/{projectId}/events", ...options, throwOnError: true, responseStyle: "data", }), ), }, } } function request(evaluate: () => Promise) { return Effect.tryPromise({ try: evaluate, catch: (error) => error as E | Error, }) }