import type { RequestContext } from "../config/index.js";
interface SentryIssue {
    id: string;
    title: string;
    culprit: string;
    lastSeen: string;
    firstSeen: string;
    count: string;
    userCount: number;
}
interface SentryEvent {
    eventID: string;
    message?: string;
    title?: string;
    culprit?: string;
    dateReceived: string;
    dateCreated: string;
    entries: Array<{
        type: string;
        data: unknown;
    }>;
    tags: Array<{
        key: string;
        value: string;
    }>;
    raw: unknown;
}
export type AllowedStatsPeriod = "24h" | "7d" | "14d" | "30d" | "90d";
/**
 * 특정 프로젝트의 Sentry 로그 (Issues)를 검색합니다.
 * Sentry API는 'Issues'라는 용어를 사용하며, 이는 그룹화된 오류들을 의미합니다.
 * @param projectSlug Sentry 프로젝트 슬러그 (예: 'your-project-name')
 * @param query 검색 쿼리 (예: "user.id:123 error.message:\"Database timeout\"")
 * @param limit 반환할 결과 수 (기본값: 50)
 * @param cursor 페이징을 위한 커서 (옵션)
 * @param statsPeriod 검색 기간 (기본값: "24h")
 * @returns 검색된 Sentry 이슈 목록
 */
export declare function searchSentryLogs(projectSlug: string, query: string | undefined, statsPeriod: AllowedStatsPeriod | undefined, limit: number | undefined, cursor: string | undefined, context: RequestContext): Promise<SentryIssue[]>;
/**
 * 특정 프로젝트의 Sentry 이벤트들을 검색합니다.
 * @param projectSlug Sentry 프로젝트 슬러그
 * @param query 검색 쿼리
 * @param limit 반환할 결과 수
 * @param cursor 페이징 커서
 * @returns 검색된 Sentry 이벤트 목록
 */
export declare function searchSentryEvents(projectSlug: string, query: string | undefined, limit: number | undefined, cursor: string | undefined, context: RequestContext): Promise<SentryEvent[]>;
/**
 * 특정 Sentry 이슈(로그 그룹)의 이벤트 세부 정보를 가져옵니다.
 * eventId가 제공되면 해당 특정 이벤트를, 그렇지 않으면 이슈의 최신 이벤트를 가져옵니다.
 * @param issueId Sentry 이슈 ID
 * @param eventId (선택적) Sentry 이벤트 ID
 * @returns 해당 이벤트의 세부 정보
 */
export declare function getSentryLogDetails(issueId: string, eventId: string | undefined, context: RequestContext): Promise<SentryEvent>;
export {};
//# sourceMappingURL=sentry.service.d.ts.map