import type { Effect } from "effect"; import type { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; import type { SmithersIdeResolvedConfig } from "./SmithersIdeResolvedConfig.ts"; import type { SmithersIdeAskUserResult } from "./SmithersIdeAskUserResult.ts"; import type { SmithersIdeAvailability } from "./SmithersIdeAvailability.ts"; import type { SmithersIdeOpenDiffResult } from "./SmithersIdeOpenDiffResult.ts"; import type { SmithersIdeOpenFileResult } from "./SmithersIdeOpenFileResult.ts"; import type { SmithersIdeOpenWebviewResult } from "./SmithersIdeOpenWebviewResult.ts"; import type { SmithersIdeOverlayOptions } from "./SmithersIdeOverlayOptions.ts"; import type { SmithersIdeOverlayResult } from "./SmithersIdeOverlayResult.ts"; import type { SmithersIdeOverlayType } from "./SmithersIdeOverlayType.ts"; import type { SmithersIdeRunTerminalResult } from "./SmithersIdeRunTerminalResult.ts"; export type SmithersIdeServiceApi = { readonly config: SmithersIdeResolvedConfig; readonly askUser: (prompt: string) => Effect.Effect; readonly detectAvailability: () => Effect.Effect; readonly openDiff: (content: string) => Effect.Effect; readonly openFile: ( path: string, line?: number, column?: number, ) => Effect.Effect; readonly openWebview: ( url: string, ) => Effect.Effect; readonly runTerminal: ( command: string, cwd?: string, ) => Effect.Effect; readonly showOverlay: ( type: SmithersIdeOverlayType, options: SmithersIdeOverlayOptions, ) => Effect.Effect; };