/** * The SDK runtime — the Effect-core boundary the Promise facade runs against. * * The app `Layer` is built ONCE into a process-lifetime `Scope`, lazily and memoized. It provides a * single service — `SealantApiClient`, the contract-derived control-plane client — so the SDK is a * THIN HTTP CLIENT: every operation (create/run/read) is an HTTP call to `baseUrl`. Run execution and * telemetry ingest moved SERVER-SIDE (the worker), so the SDK no longer opens a Postgres pool, spawns * docker, or writes telemetry. Every operation surfaces a plain `SealantError` (the typed Effect * failure is squashed and mapped here). `dispose()` closes the scope (the HTTP client) and is idempotent. */ import { Effect } from "effect"; import type { SealantInternalConfig } from "../internal/config.js"; import { SealantApiClient } from "./api-client.js"; /** Services the SDK runtime provides to operation effects. */ export type SdkServices = SealantApiClient; export interface SdkRuntime { /** Provide the app context and run an operation effect, surfacing plain `SealantError`s. */ readonly run: (effect: Effect.Effect) => Promise; /** Dispose the runtime scope (the HTTP client). Idempotent. */ readonly dispose: () => Promise; } export declare const makeSdkRuntime: (config: SealantInternalConfig) => SdkRuntime;