/** * Layer Composition Utilities * * For users who want to provide custom service implementations: * ```typescript * import { FredLayers, AgentService, AgentServiceLive } from 'fred/effect'; * import { Layer } from 'effect'; * * // Replace AgentService with custom implementation * const customAgentLayer = Layer.succeed(AgentService, myCustomAgentImpl); * * const customLayers = FredLayers.pipe( * Layer.provideMerge(customAgentLayer) * ); * ``` */ import { Layer, Context } from 'effect'; import { type FredServices } from '../services'; import { AgentService } from '../agent/service'; import { PipelineService } from '../pipeline/service'; import { ContextStorageService } from '../context/service'; export { FredLayers } from '../services'; /** * Create FredLayers with a custom service layer merged in. * * @param customLayer - Layer providing a custom service implementation * @returns FredLayers with custom service merged */ export declare const withCustomLayer: (customLayer: Layer.Layer) => Layer.Layer; /** * FredService - Aggregate service for convenient access * * Power users can use this instead of accessing individual services: * ```typescript * const program = Effect.gen(function* () { * const fred = yield* FredService; * const agent = yield* fred.agents.getAgent(id); * const workflow = yield* fred.pipelines.getWorkflowIR(workflowId); * }); * ``` */ export interface FredService { readonly agents: Context.Tag.Service; readonly pipelines: Context.Tag.Service; readonly context: Context.Tag.Service; } export declare const FredService: Context.Tag; /** * Live layer for FredService */ export declare const FredServiceLive: Layer.Layer; //# sourceMappingURL=layers.d.ts.map