type FetchLike = (input: RequestInfo, init?: RequestInit) => Promise<Response>;
export interface ErrorReportAttachment {
    name: string;
    url?: string;
    contentType?: string;
    size?: number;
}
export interface ErrorReportOptions {
    sourceApp?: string;
    message?: string;
    subject?: string;
    environment?: string;
    clientId?: string;
    clientSlug?: string;
    clientName?: string;
    clientRepo?: string;
    clientEmail?: string;
    severity?: string;
    stack?: string | Error;
    error?: unknown;
    context?: Record<string, any> | string | null;
    metadata?: Record<string, any> | string | null;
    attachments?: ErrorReportAttachment[];
    fingerprint?: string;
    idempotencyKey?: string;
    reportedBy?: string;
    reportedAt?: string | Date;
    reportedFor?: string;
    reportedCount?: number;
    reportedSourceHost?: string;
    reportedSourceIp?: string;
    reportedSourceVersion?: string;
    reportedSourcePid?: number;
    reportedSourceInstance?: string;
    reportedSourceRegion?: string;
    reportedSourceCluster?: string;
    reportedSourceProcess?: string;
    reportedSourceEnv?: Record<string, any>;
    correlationId?: string;
    apiUrl?: string;
    fetch?: FetchLike;
    logger?: Pick<typeof console, 'error' | 'warn' | 'info' | 'log'>;
}
export interface ErrorReportResult {
    delivered: boolean;
    status?: number;
    reason?: string;
}
export declare class ErrorReporter {
    static report(options: ErrorReportOptions): Promise<ErrorReportResult>;
}
export {};
