import { type AuthDescriptor, type AuthResolver } from './auth.js'; import type { GenerateRequest, GenerateResponse, LlmMeshRequestMetadata, StreamRequest, StreamResult } from './generation.js'; import type { FinishReason, TokenUsage } from './streaming.js'; import type { ProviderRegistry } from './registry.js'; import { type ProviderId } from './providers.js'; export interface LlmMeshHooks { onRequest?(event: LlmMeshRequestEvent): void | Promise; onResponse?(event: LlmMeshResponseEvent): void | Promise; onError?(event: LlmMeshErrorEvent): void | Promise; } export interface LlmMeshRequestEvent { operation: 'generate' | 'stream'; providerId: ProviderId; modelId: string; auth?: AuthDescriptor; /** * Request-scoped, caller-owned metadata. It is returned unchanged on all * lifecycle hooks so hosts can safely correlate streamed completion events. * Auth material is never part of this field. */ metadata?: LlmMeshRequestMetadata; } export interface LlmMeshResponseEvent extends LlmMeshRequestEvent { finishReason?: FinishReason; responseId?: string; usage?: TokenUsage; } export interface LlmMeshErrorEvent extends LlmMeshRequestEvent { error: unknown; } export interface CreateLlmMeshOptions { registry: ProviderRegistry; authResolver?: AuthResolver; hooks?: LlmMeshHooks; } export interface LlmMesh { listProviders: ProviderRegistry['listProviders']; listModels: ProviderRegistry['listModels']; generate(request: GenerateRequest): Promise; stream(request: StreamRequest): Promise; } export declare const createLlmMesh: ({ registry, authResolver, hooks }: CreateLlmMeshOptions) => LlmMesh; //# sourceMappingURL=mesh.d.ts.map