import type { Tool, Resource, ResourceTemplate, Prompt, PromptArgument, Implementation, ClientCapabilities, ServerCapabilities, InitializeRequest, InitializeResult, CallToolRequest, CallToolResult, ListToolsRequest, ListToolsResult, ListResourcesRequest, ListResourcesResult, ReadResourceRequest, ReadResourceResult, ListPromptsRequest, ListPromptsResult, GetPromptRequest, GetPromptResult, SubscribeRequest, UnsubscribeRequest, LoggingLevel, ListResourceTemplatesResult } from '@modelcontextprotocol/sdk/types.js';
export type { Tool, Resource, ResourceTemplate, Prompt, PromptArgument, Implementation, ClientCapabilities, ServerCapabilities, InitializeRequest, InitializeResult, CallToolRequest, CallToolResult, ListToolsRequest, ListToolsResult, ListResourcesRequest, ListResourcesResult, ReadResourceRequest, ReadResourceResult, ListPromptsRequest, ListPromptsResult, GetPromptRequest, GetPromptResult, SubscribeRequest, UnsubscribeRequest, LoggingLevel, };
export { LATEST_PROTOCOL_VERSION } from '@modelcontextprotocol/sdk/types.js';
export interface ServerConfig {
    url?: string;
    headers?: Record<string, string>;
    command?: string;
    args?: string[];
    env?: Record<string, string>;
    timeout?: number;
}
export interface ProxyConfig {
    host: string;
    port: number;
}
export type SessionStatus = 'active' | 'expired' | 'crashed';
export interface SessionNotifications {
    tools?: {
        listChangedAt?: string;
    };
    prompts?: {
        listChangedAt?: string;
    };
    resources?: {
        listChangedAt?: string;
    };
}
export interface SessionData {
    name: string;
    server: ServerConfig;
    profileName?: string;
    pid?: number;
    protocolVersion?: string;
    mcpSessionId?: string;
    serverInfo?: {
        name: string;
        version: string;
    };
    status?: SessionStatus;
    proxy?: ProxyConfig;
    notifications?: SessionNotifications;
    createdAt: string;
    lastSeenAt?: string;
}
export interface SessionsStorage {
    sessions: Record<string, SessionData>;
}
export interface AuthProfile {
    name: string;
    serverUrl: string;
    authType: 'oauth';
    oauthIssuer: string;
    scopes?: string[];
    userEmail?: string;
    userName?: string;
    userSubject?: string;
    createdAt: string;
    authenticatedAt?: string;
    refreshedAt?: string;
}
export interface AuthProfilesStorage {
    profiles: Record<string, Record<string, AuthProfile>>;
}
export type IpcMessageType = 'request' | 'response' | 'shutdown' | 'notification' | 'set-auth-credentials';
export interface AuthCredentials {
    serverUrl: string;
    profileName: string;
    clientId?: string;
    refreshToken?: string;
    headers?: Record<string, string>;
}
export type NotificationType = 'tools/list_changed' | 'resources/list_changed' | 'resources/updated' | 'prompts/list_changed' | 'progress' | 'logging/message';
export interface NotificationData {
    method: NotificationType;
    params?: unknown;
}
export interface IpcMessage {
    type: IpcMessageType;
    id?: string;
    method?: string;
    params?: unknown;
    result?: unknown;
    notification?: NotificationData;
    authCredentials?: AuthCredentials;
    error?: {
        code: number;
        message: string;
        data?: unknown;
    };
}
export type OutputMode = 'human' | 'json';
export interface CommandOptions {
    outputMode: OutputMode;
    config?: string;
    headers?: string[];
    timeout?: number;
    verbose?: boolean;
    hideTarget?: boolean;
    schema?: string;
    schemaMode?: 'strict' | 'compatible' | 'ignore';
}
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
export interface McpConfig {
    mcpServers: Record<string, ServerConfig>;
}
export interface ServerDetails {
    protocolVersion?: string;
    capabilities?: ServerCapabilities;
    serverInfo?: Implementation;
    instructions?: string;
}
export interface IMcpClient {
    close(): Promise<void>;
    getServerDetails(): Promise<ServerDetails>;
    ping(): Promise<void>;
    listTools(cursor?: string): Promise<ListToolsResult>;
    callTool(name: string, args?: Record<string, unknown>): Promise<CallToolResult>;
    listResources(cursor?: string): Promise<ListResourcesResult>;
    listResourceTemplates(cursor?: string): Promise<ListResourceTemplatesResult>;
    readResource(uri: string): Promise<ReadResourceResult>;
    subscribeResource(uri: string): Promise<void>;
    unsubscribeResource(uri: string): Promise<void>;
    listPrompts(cursor?: string): Promise<ListPromptsResult>;
    getPrompt(name: string, args?: Record<string, string>): Promise<GetPromptResult>;
    setLoggingLevel(level: LoggingLevel): Promise<void>;
}
//# sourceMappingURL=types.d.ts.map