import type { FeedbackPayload, FeedbackResponse, SubmissionSessionResponse, ClarifyResponse, ClarifyMessage } from '../types.js'; export interface ClarifyStreamResult { messages: ClarifyMessage[]; suggestions?: string[]; done: boolean; failed?: boolean; } export declare class ApiError extends Error { readonly status: number; constructor(status: number); } export declare function isTerminalConflict(error: unknown): boolean; export declare const FINALIZE_TIMEOUT_MS = 25000; export interface ApiClientOptions { projectKey: string; apiUrl?: string; retryDelayMs?: number; userToken?: string; userTokenFn?: () => Promise; } export declare class ApiClient { private apiUrl; private projectKey; private retryDelayMs; private userToken?; private userTokenFn?; constructor(options: ApiClientOptions); resolveUserToken(): Promise; resolveScreenshotResourceUrl(submissionSessionId: string, token: string, resourceUrl: string, contentType?: string, signal?: AbortSignal): Promise; private authHeaders; private submissionHeaders; createSubmissionSession(payload: FeedbackPayload, screenshot: Blob | null): Promise; createIdentityToken(reporterExternalId: string): Promise<{ identity_token: string; board_url: string; } | null>; updateReporter(feedbackId: string, email: string, identityToken: string): Promise; answerClarification(submissionSessionId: string, token: string, message: string): Promise; private requestClarification; streamClarification(submissionSessionId: string, token: string, onDelta: (text: string) => void, signal?: AbortSignal): Promise; finalizeSubmissionSession(submissionSessionId: string, token: string): Promise; uploadScreenshot(submissionSessionId: string, token: string, screenshot: Blob, signal?: AbortSignal): Promise; abandonSubmissionSession(submissionSessionId: string, token: string): Promise; private fetchWithRetry; } //# sourceMappingURL=client.d.ts.map