import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
export { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import * as _cloudbase_toolbox from '@cloudbase/toolbox';
import CloudBase from '@cloudbase/manager-node';
export { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';

interface InteractiveResult {
    type: 'envId' | 'clarification' | 'confirmation';
    data: any;
    cancelled?: boolean;
}
declare class InteractiveServer {
    private app;
    private server;
    private wss;
    private port;
    private isRunning;
    private currentResolver;
    private sessionData;
    private readonly DEFAULT_PORT;
    private readonly FALLBACK_PORTS;
    constructor();
    private cleanup;
    private setupExpress;
    private setupWebSocket;
    start(): Promise<number>;
    stop(): Promise<void>;
    collectEnvId(availableEnvs: any[]): Promise<InteractiveResult>;
    clarifyRequest(message: string, options?: string[]): Promise<InteractiveResult>;
    private getEnvSetupHTML;
    private getLogsHTML;
    private getClarificationHTML;
    private getConfirmationHTML;
    get running(): boolean;
    get currentPort(): number;
}

interface UploadFileParams {
    cloudPath: string;
    fileContent: string;
}
interface ListFilesParams {
    prefix: string;
    marker?: string;
}
interface DeleteFileParams {
    cloudPath: string;
}
interface GetFileInfoParams {
    cloudPath: string;
}
interface ToolResponse {
    success: boolean;
    [key: string]: any;
}
interface DataModelField {
    name: string;
    type: 'string' | 'number' | 'boolean' | 'date' | 'array' | 'object' | 'objectId' | 'file' | 'image';
    required?: boolean;
    default?: any;
    description?: string;
    validation?: {
        min?: number;
        max?: number;
        pattern?: string;
        enum?: any[];
    };
}
interface DataModelSchema {
    type: 'object';
    properties: Record<string, {
        type: string;
        description?: string;
        required?: boolean;
        default?: any;
        validation?: any;
    }>;
    required?: string[];
}
interface DataModel {
    id?: string;
    name: string;
    title: string;
    schema: DataModelSchema;
    envId?: string;
    status?: 'draft' | 'published';
    createdAt?: string;
    updatedAt?: string;
}
interface CloudBaseOptions {
    secretId?: string;
    secretKey?: string;
    token?: string;
    envId?: string;
    proxy?: string;
    region?: string;
    envType?: string;
}

/**
 * 数据上报类
 * 用于收集 MCP 工具使用情况和错误信息，帮助改进产品
 *
 * 隐私保护：
 * - 可通过环境变量 CLOUDBASE_MCP_TELEMETRY_DISABLED=true 完全关闭
 * - 不收集敏感信息（代码内容、具体文件路径等）
 * - 使用设备指纹而非真实用户信息
 * - 所有数据仅用于产品改进，不用于其他用途
 */
declare class TelemetryReporter {
    private deviceId;
    private userAgent;
    private additionalParams;
    private enabled;
    constructor();
    /**
     * 获取用户运行环境信息
     * 包含操作系统、Node版本和MCP版本等信息
     */
    getUserAgent(): {
        userAgent: string;
        deviceId: string;
        osType: string;
        osRelease: string;
        nodeVersion: string;
        arch: string;
        mcpVersion: string;
    };
    /**
     * 获取设备唯一标识
     * 基于主机名、CPU信息和MAC地址生成匿名设备指纹
     */
    private getDeviceId;
    /**
     * 发送HTTP请求
     */
    private postFetch;
    /**
     * 上报事件
     * @param eventCode 事件代码
     * @param eventData 事件数据
     */
    report(eventCode: string, eventData?: {
        [key: string]: any;
    }): Promise<void>;
    /**
     * 设置公共参数
     */
    addAdditionalParams(params: {
        [key: string]: any;
    }): void;
    /**
     * 检查是否启用
     */
    isEnabled(): boolean;
}
declare const telemetryReporter: TelemetryReporter;
declare const reportToolkitLifecycle: (params: {
    event: "start" | "exit";
    duration?: number;
    exitCode?: number;
    error?: string;
}) => Promise<void>;

declare const info: (message: string, data?: any) => void;
declare const warn: (message: string, data?: any) => void;
declare const error: (message: string, data?: any) => void;

interface ExtendedMcpServer extends McpServer {
    cloudBaseOptions?: CloudBaseOptions;
}
/**
 * Create and configure a CloudBase MCP Server instance
 * @param options Server configuration options
 * @returns Configured McpServer instance
 */
declare function createCloudBaseMcpServer(options?: {
    name?: string;
    version?: string;
    enableTelemetry?: boolean;
    cloudBaseOptions?: CloudBaseOptions;
}): ExtendedMcpServer;
/**
 * Get the default configured CloudBase MCP Server
 */
declare function getDefaultServer(): ExtendedMcpServer;

declare function getLoginState(): Promise<_cloudbase_toolbox.Credential>;
declare function logout(): Promise<void>;

declare function getEnvId(cloudBaseOptions?: CloudBaseOptions): Promise<string>;
declare function resetCloudBaseManagerCache(): void;
interface GetManagerOptions {
    requireEnvId?: boolean;
    cloudBaseOptions?: CloudBaseOptions;
}
/**
 * 每次都实时获取最新的 token/secretId/secretKey
 */
declare function getCloudBaseManager(options?: GetManagerOptions): Promise<CloudBase>;
/**
 * 使用传入的 CloudBase 配置创建 manager，不使用缓存
 * @param cloudBaseOptions 传入的 CloudBase 配置选项
 * @returns CloudBase manager 实例
 */
declare function createCloudBaseManagerWithOptions(cloudBaseOptions: CloudBaseOptions): CloudBase;

/**
 * Get interactive server instance (CommonJS compatible)
 */
declare function getInteractiveServerAsync(): Promise<InteractiveServer>;

export { createCloudBaseManagerWithOptions, createCloudBaseMcpServer, error, getCloudBaseManager, getDefaultServer, getEnvId, getInteractiveServerAsync, getLoginState, info, logout, reportToolkitLifecycle, resetCloudBaseManagerCache, telemetryReporter, warn };
export type { CloudBaseOptions, DataModel, DataModelField, DataModelSchema, DeleteFileParams, ExtendedMcpServer, GetFileInfoParams, InteractiveResult, ListFilesParams, ToolResponse, UploadFileParams };
