/**
 * MCP 서버 레코드의 transport별 구조와 정규화 규칙을 정의한다.
 * HTTP 서버와 stdio 서버를 같은 레지스트리에서 다루되, 각 transport 제약은 이 파일에 모은다.
 */
/**
 * 현재 지원하는 MCP transport 타입이다.
 */
export type McpTransportType = 'http' | 'stdio';
/**
 * 공통 MCP 서버 메타데이터다.
 */
type McpServerRecordBase = {
    /**
     * 생성 시각이다.
     */
    createdAt: string;
    /**
     * 서버 이름이다.
     */
    name: string;
    /**
     * transport 타입이다.
     */
    transport: McpTransportType;
    /**
     * 마지막 갱신 시각이다.
     */
    updatedAt: string;
};
/**
 * HTTP MCP 서버 레코드다.
 */
export type McpHttpServerRecord = McpServerRecordBase & {
    /**
     * HTTP endpoint URL이다.
     */
    transport: 'http';
    /**
     * MCP endpoint URL이다.
     */
    url: string;
};
/**
 * stdio MCP 서버 레코드다.
 */
export type McpStdioServerRecord = McpServerRecordBase & {
    /**
     * stdio 실행 transport다.
     */
    transport: 'stdio';
    /**
     * MCP 서버를 실행할 command다.
     */
    command: string;
    /**
     * MCP 서버 실행 인자 목록이다.
     */
    args: string[];
};
/**
 * 주홍이가 저장하는 MCP 서버 레코드 전체 타입이다.
 */
export type McpServerRecord = McpHttpServerRecord | McpStdioServerRecord;
/**
 * 레코드 저장 전에 받는 MCP 서버 입력 타입이다.
 */
export type McpServerRecordInput = {
    /**
     * 서버 이름이다.
     */
    name: string;
    /**
     * transport 타입이다.
     */
    transport: 'http';
    /**
     * MCP endpoint URL이다.
     */
    url: string;
} | {
    /**
     * 서버 이름이다.
     */
    name: string;
    /**
     * transport 타입이다.
     */
    transport: 'stdio';
    /**
     * MCP 서버 실행 command다.
     */
    command: string;
    /**
     * MCP 서버 실행 인자 목록이다.
     */
    args?: string[];
};
/**
 * @description MCP 서버 이름을 정규화한다.
 * @param value 원본 이름
 * @returns 정규화된 이름
 */
export declare function normalizeMcpServerName(value: string): string;
/**
 * @description HTTP MCP 서버 URL을 정규화한다.
 * @param value 원본 URL
 * @returns 정규화된 URL
 */
export declare function normalizeMcpUrl(value: string): string;
/**
 * @description transport별 MCP 서버 입력을 저장 가능한 레코드로 정규화한다.
 * @param input MCP 서버 입력
 * @param timestamps 생성/수정 시각
 * @returns 정규화된 레코드
 */
export declare function createMcpServerRecord(input: McpServerRecordInput, timestamps: {
    createdAt: string;
    updatedAt: string;
}): McpServerRecord;
/**
 * @description 알 수 없는 persisted JSON 값을 MCP 레코드로 복구한다.
 * legacy `{ name, url }` 형식은 자동으로 HTTP transport로 승격한다.
 * @param value 디스크에서 읽은 원본 값
 * @returns 정규화된 레코드 또는 undefined
 */
export declare function parsePersistedMcpServerRecord(value: unknown): McpServerRecord | undefined;
/**
 * @description 레코드가 stdio transport인지 판별한다.
 * @param server 검사 대상 레코드
 * @returns stdio 여부
 */
export declare function isStdioMcpServer(server: McpServerRecord): server is McpStdioServerRecord;
/**
 * @description 레코드가 HTTP transport인지 판별한다.
 * @param server 검사 대상 레코드
 * @returns HTTP 여부
 */
export declare function isHttpMcpServer(server: McpServerRecord): server is McpHttpServerRecord;
/**
 * @description MCP 서버의 주요 연결 대상을 사람이 읽기 쉬운 문자열로 반환한다.
 * @param server MCP 서버 레코드
 * @returns URL 또는 command 문자열
 */
export declare function describeMcpServerRecord(server: McpServerRecord): string;
/**
 * @description MCP 서버 transport별 표시 라벨을 반환한다.
 * @param server MCP 서버 레코드
 * @returns transport 이름
 */
export declare function getMcpServerTransportLabel(server: McpServerRecord): "http" | "stdio";
/**
 * @description MCP 서버 transport별 대상 필드 라벨을 반환한다.
 * @param server MCP 서버 레코드
 * @returns `url` 또는 `command`
 */
export declare function getMcpServerTargetLabel(server: McpServerRecord): "command" | "url";
/**
 * @description MCP 서버 transport별 헬스체크 대상 라벨을 반환한다.
 * @param server MCP 서버 레코드
 * @returns `Endpoint` 또는 `Launcher`
 */
export declare function getMcpServerHealthLabel(server: McpServerRecord): "Endpoint" | "Launcher";
/**
 * @description 두 MCP 레코드가 같은 transport 설정을 가지는지 비교한다.
 * @param left 비교 대상 왼쪽 레코드
 * @param right 비교 대상 오른쪽 레코드
 * @returns transport 설정 동일 여부
 */
export declare function isSameMcpServerConfig(left: McpServerRecord, right: McpServerRecord): boolean;
export {};
//# sourceMappingURL=server-record.d.ts.map