/**
 * NeuroLink Client SDK
 *
 * Comprehensive client SDK for accessing the NeuroLink API from JavaScript/TypeScript
 * applications. Provides HTTP clients, React hooks, Vercel AI SDK compatibility,
 * and real-time streaming support.
 *
 * @packageDocumentation
 * @module @neurolink/client
 *
 * @example Basic HTTP Client Usage
 * ```typescript
 * import { createClient } from '@neurolink/client';
 *
 * const client = createClient({
 *   baseUrl: 'https://api.neurolink.example.com',
 *   apiKey: process.env.NEUROLINK_API_KEY,
 * });
 *
 * // Generate text
 * const result = await client.generate({
 *   input: { text: 'Hello, world!' },
 *   provider: 'openai',
 *   model: 'gpt-4o',
 * });
 *
 * console.log(result.data.content);
 * ```
 *
 * @example React Hooks Usage
 * ```tsx
 * import { NeuroLinkProvider, useChat } from '@neurolink/react';
 *
 * function App() {
 *   return (
 *     <NeuroLinkProvider config={{ baseUrl: '/api', apiKey: '...' }}>
 *       <ChatComponent />
 *     </NeuroLinkProvider>
 *   );
 * }
 *
 * function ChatComponent() {
 *   const { messages, input, handleInputChange, handleSubmit, isLoading } = useChat({
 *     agentId: 'my-agent',
 *   });
 *
 *   return (
 *     <div>
 *       {messages.map(m => <div key={m.id}>{m.content}</div>)}
 *       <form onSubmit={handleSubmit}>
 *         <input value={input} onChange={handleInputChange} />
 *         <button disabled={isLoading}>Send</button>
 *       </form>
 *     </div>
 *   );
 * }
 * ```
 *
 * @example Vercel AI SDK Compatibility
 * ```typescript
 * import { createNeuroLinkProvider } from '@neurolink/ai-sdk';
 * import { generateText } from 'ai';
 *
 * const neurolink = createNeuroLinkProvider({
 *   baseUrl: 'https://api.neurolink.example.com',
 *   apiKey: process.env.NEUROLINK_API_KEY,
 * });
 *
 * const result = await generateText({
 *   model: neurolink('gpt-4o'),
 *   prompt: 'Hello!',
 * });
 * ```
 *
 * @example Streaming with SSE
 * ```typescript
 * import { createStreamingClient } from '@neurolink/client/streaming';
 *
 * const client = createStreamingClient({
 *   baseUrl: 'https://api.neurolink.example.com',
 *   apiKey: process.env.NEUROLINK_API_KEY,
 *   transport: 'sse',
 * });
 *
 * const result = await client.stream({
 *   input: { text: 'Tell me a story' },
 *   callbacks: {
 *     onText: (text) => process.stdout.write(text),
 *     onDone: () => console.log('\nDone!'),
 *   },
 * });
 * ```
 */
export { NeuroLinkClient, createClient, NeuroLinkApiError, } from "./httpClient.js";
export type { ClientConfig, RequestOptions, ApiResponse, ApiError, RetryConfig, Middleware, MiddlewareRequest, MiddlewareResponse, MiddlewareContext, StreamCallbacks, StreamEvent, StreamEventType, StreamResult, GenerateRequestOptions, GenerateResponse, StreamRequestOptions, AgentExecuteOptions, AgentExecuteResult, AgentInfo, WorkflowExecuteOptions, WorkflowExecuteResult, WorkflowInfo, ToolInfo, ProviderStatus, WebSocketOptions, WebSocketState, WebSocketMessageHandler, } from "../types/clientTypes.js";
export { NeuroLinkProvider, useNeuroLinkClient, useChat, useAgent, useWorkflow, useVoice, useStream, useTools, } from "./reactHooks.js";
export type { NeuroLinkProviderProps } from "./reactHooks.js";
export type { UseChatOptions, UseChatReturn, UseAgentOptions, UseAgentReturn, UseWorkflowOptions, UseWorkflowReturn, UseVoiceOptions, UseVoiceReturn, UseStreamOptions, UseStreamReturn, UseToolsOptions, UseToolsReturn, ChatMessage, NeuroLinkProviderOptions, ModelOptions, LanguageModel, LanguageModelCallOptions, LanguageModelResponse, LanguageModelStreamResponse, } from "../types/clientTypes.js";
export { NeuroLinkLanguageModel, NeuroLinkProvider as NeuroLinkAIProvider, createNeuroLinkProvider, createNeuroLinkModel, createStreamingResponse, neurolink, } from "./aiSdkAdapter.js";
export { createApiKeyAuthInterceptor, createBearerAuthInterceptor, createDynamicAuthInterceptor, createLoggingInterceptor, createRetryInterceptor, createRateLimitInterceptor, createRequestTransformInterceptor, createResponseTransformInterceptor, createCacheInterceptor, createTimeoutInterceptor, createErrorHandlerInterceptor, composeMiddleware, conditionalMiddleware, } from "./interceptors.js";
export type { LoggingInterceptorOptions, RetryInterceptorOptions, RateLimiterOptions, CacheInterceptorOptions, TimeoutInterceptorOptions, ErrorHandlerOptions, } from "./interceptors.js";
export { SSEClient, WebSocketStreamingClient, createStreamingClient, createAsyncStream, collectStream, } from "./streamingClient.js";
export type { SSEConnectionOptions, SSEConnectionState, StreamingRequestOptions, StreamingEventEmitter, StreamingClientConfig, } from "./streamingClient.js";
export { NeuroLinkWebSocket, createWebSocketClient } from "./wsClient.js";
export type { WebSocketConfig, WebSocketMessage, WebSocketEventHandlers, WebSocketState as WSState, } from "./wsClient.js";
export { NeuroLinkSSE, createSSEClient } from "./sseClient.js";
export type { SSEConfig, SSERequestOptions, SSEEventHandlers, SSEState, } from "./sseClient.js";
export { OAuth2TokenManager, JWTTokenManager, createApiKeyMiddleware, createBearerTokenMiddleware, createTokenManagerMiddleware, createAuthWithRetryMiddleware, createMultiAuthMiddleware, OAuth2Error, OAuth2AuthenticationError as OAuth2AuthError, TokenRefreshError, decodeJWTPayload, isJWTExpired, getJWTExpiry, getApiKeyFromEnv, } from "./auth.js";
export type { AuthConfig, OAuth2Config, TokenRefreshResult, SpeechRecognitionResult, SpeechSynthesisOptions, JsonValue, JsonObject, UnknownRecord, ToolCall, ToolResult, } from "../types/clientTypes.js";
export { ErrorCode, NeuroLinkError, HttpError, ClientRateLimitError, ClientValidationError, ClientAuthenticationError, ClientAuthorizationError, NotFoundError, ClientNetworkError, ClientTimeoutError, ClientConnectionError, AbortError, ClientConfigurationError, StreamError, ClientProviderError, ContextLengthError, ContentFilterError, createErrorFromResponse, createErrorFromNative, mapStatusToErrorCode, isRetryableStatus, isRetryableError, isNeuroLinkError, isApiError, } from "./errors.js";
export type { ErrorCodeType } from "./errors.js";
