/**
 * slash command 실행 telemetry를 PostHog로 수집하는 파일이다.
 * 사용자 입력 파라미터, git 메타데이터, 실행 결과 상태를 정규화해 이벤트로 남긴다.
 */
import type { AIServiceType, TraceLogger } from '../types/index';
/**
 * Slash Command Telemetry Status 관련 타입이다.
 * hover 정보만으로도 용도와 필드 의미를 파악할 수 있도록 이 선언을 유지한다.
 */
type SlashCommandTelemetryStatus = 'success' | 'blocked' | 'cancelled' | 'terminated' | 'error';
/**
 * Slash Command Telemetry Kind 관련 타입이다.
 * hover 정보만으로도 용도와 필드 의미를 파악할 수 있도록 이 선언을 유지한다.
 */
type SlashCommandTelemetryKind = 'builtin';
/**
 * Track Slash Command Execution Options를 전달하기 위한 옵션 구조다.
 * hover 정보만으로도 용도와 필드 의미를 파악할 수 있도록 이 선언을 유지한다.
 */
type TrackSlashCommandExecutionOptions = {
    /**
     * 파싱된 명령 인자 목록
     */
    args: Array<string | null>;
    /**
     * 대상 slash command 문자열
     */
    command: `/${string}`;
    /**
     * 명령 또는 레코드 종류 식별자
     */
    kind: SlashCommandTelemetryKind;
    /**
     * root Dir 값
     */
    rootDir: string;
    /**
     * 대상 AI 서비스 식별자
     */
    service: AIServiceType;
    /**
     * status 값
     */
    status: SlashCommandTelemetryStatus;
    /**
     * 실행 흐름 추적 로거
     */
    trace?: TraceLogger;
};
/**
 * @description
 * slash command 실행 도중 입력받은 값을 telemetry 전송 직전까지 누적 관리한다.
 * 최초 slash line에 포함된 인자와 이후 질문/선택 UI에서 입력된 값을 같은 배열에 순서대로 보관한다.
 * @param initialArgs slash command 최초 입력에 포함된 인자 목록
 */
export declare function beginSlashCommandTelemetryInputCollection(initialArgs: string[]): void;
/**
 * @description
 * 선택 UI 또는 질문형 입력에서 얻은 값을 telemetry 파라미터 후보로 추가한다.
 * 단일 값, 배열, 객체형 선택값을 모두 허용하고, 사람이 식별 가능한 문자열로 정규화한다.
 * @param value 사용자 입력 또는 선택 결과
 */
export declare function appendSlashCommandTelemetryInputValue(value: unknown): void;
/**
 * @description
 * 현재 명령 실행에서 누적된 입력값 스냅샷을 반환하고 수집 상태를 정리한다.
 * 명령 종료 후 이전 입력이 다음 명령에 섞이지 않도록 반드시 clear를 함께 수행한다.
 * @returns 현재 명령에서 누적한 telemetry 입력값 목록
 */
export declare function endSlashCommandTelemetryInputCollection(): (string | null)[];
/**
 * @description
 * slash command 실행 결과를 PostHog에 usage telemetry로 적재한다.
 * telemetry 실패는 본래 명령 실행을 방해하지 않아야 하므로 모든 예외를 내부에서 흡수하고 trace에만 남긴다.
 * @param options capture에 필요한 명령 실행 메타데이터
 */
export declare function trackSlashCommandExecution(options: TrackSlashCommandExecutionOptions): void;
/**
 * @description
 * 단명 프로세스인 CLI에서도 누적된 telemetry가 가능한 한 flush 되도록 종료 시점에 PostHog client를 정리한다.
 * 동일 세션에서 중복 호출되더라도 하나의 shutdown promise만 재사용하도록 보호한다.
 */
export declare function shutdownPostHogClient(): Promise<void>;
export {};
//# sourceMappingURL=posthog.d.ts.map