import type { CanvasProject, LocaleStrategy, MarketingMode } from "./types.js"; export type CampaignView = { id: string; projectId: string; name: string; status: string; error?: string | null; bundleUrl?: string | null; progress?: Record; variants?: Array>; [key: string]: unknown; }; export type ProjectQualityReport = { projectId: string; mode: "check" | "fix"; changed: boolean; updatedAt?: string; summary: { status: "ready" | "needs-attention"; screenCount: number; errorCount: number; warningCount: number; infoCount: number; fixCount: number; }; screens: Array<{ screenId: string; screenName: string; status: "ready" | "needs-attention"; warningsBefore: Array>; fixes: Array>; warningsAfter: Array>; }>; }; export type MarketingAuditReport = { mode: MarketingMode; localeStrategy: LocaleStrategy; status: "ready" | "needs-improvement"; summary: { screenCount: number; recommendedMin: number; recommendedMax: number; warningCount: number; infoCount: number; deviceLayerCount: number; mockedDeviceCount: number; emptyDeviceCount: number; }; issues: Array>; nextActions: string[]; }; export type PreviewResult = { base64: string; width: number; height: number; mimeType: string; }; export declare class ApiClient { private baseUrl; private apiToken?; constructor(baseUrl: string, apiToken?: string); private get authHeaders(); createProject(name: string, data?: Partial, template?: string, templateInputs?: { appName?: string; features?: string[]; tone?: "minimal" | "bold" | "playful" | "technical"; }): Promise<{ id: string; project: CanvasProject; }>; getProject(id: string): Promise; updateProject(id: string, data: Partial): Promise; uploadImage(projectId: string, imageSource: string): Promise<{ url: string; }>; private postPreview; getScreenPreview(projectId: string, screenId: string, scale?: number): Promise; getStripPreview(projectId: string, screenIds: string[], scale?: number): Promise; runQualityPass(projectId: string, body: { screenIds?: string[]; mode?: "check" | "fix"; }): Promise; runMarketingAudit(projectId: string, body: { mode?: MarketingMode; targetLocale?: string; localeStrategy?: LocaleStrategy; appCategory?: string; }): Promise; listTemplates(): Promise>; listProjects(): Promise>; deleteProject(id: string): Promise; submitFeedback(email: string, category: string, message: string): Promise; getProjectUrl(projectId: string): string; /** Absolutize an app-relative path (e.g. a render job's /api/images/{id} output). */ absoluteUrl(path: string): string; /** GET the ad plan: brief slots, angles + voice guidance, per-angle defaults. */ planAdVideo(projectId: string): Promise>; /** Trigger a server-side ad-video render. Returns the job id + config summary. */ createAdVideo(projectId: string, body: { angle: string; overrides?: Record; }): Promise<{ jobId: string; status: string; ad: Record; }>; createInstallCampaign(projectId: string, brief: Record): Promise<{ campaign: CampaignView; scaffold: Record; }>; uploadCampaignAsset(projectId: string, filePath: string, campaignId?: string): Promise>; saveInstallCampaign(campaignId: string, plan: Record): Promise; quoteCampaignSourceClips(campaignId: string, directions: Array<{ slotKey: string; direction: string; }>): Promise>; generateCampaignSourceClips(campaignId: string, quoteId: string): Promise>; approveCampaignSourceClips(campaignId: string, selections: Array<{ slotKey: string; assetId: string; }>): Promise>; getCampaign(campaignId: string): Promise; renderCampaign(campaignId: string): Promise; getCampaignPack(campaignId: string): Promise<{ campaignId: string; assetId: string; url: string; disclosure?: string; }>; recordCampaignResult(campaignId: string, variantId: string, feedback: { platform: string; verdict: string; notes?: string; metrics?: Record; }): Promise>; getRenderJob(jobId: string): Promise; /** * Poll a render job until it completes. Throws on failure or timeout. * Renders typically take 1-3 minutes on the worker. */ waitForRenderJob(jobId: string, { intervalMs, timeoutMs }?: { intervalMs?: number; timeoutMs?: number; }): Promise; } export type RenderJobStatus = { jobId: string; status: "queued" | "rendering" | "completed" | "failed"; format: string; progress: number | null; url: string | null; error: string | null; createdAt?: string; completedAt?: string | null; }; //# sourceMappingURL=api-client.d.ts.map