type QueryValue = string | number | boolean | null | undefined | Array; export interface RequestOptions { method?: string; body?: unknown; query?: Record; headers?: Record; signal?: AbortSignal; timeoutMs?: number; } export interface McpCredentials { baseUrl: string; token: string; } export declare class AppLaunchFlowApiError extends Error { status: number; body: any; retryAfter?: number; requestId?: string; /** Dashboard origin that rejected the request (for recovery links). */ baseUrl?: string; constructor(message: string, status: number, body: any); } export declare class AppLaunchFlowClient { credentials: McpCredentials; constructor(credentials: McpCredentials); private buildHeaders; requestJson(path: string, options?: RequestOptions): Promise; createSignedUpload(args: { projectId: string; filename: string; contentType: string; deviceType?: "mobile" | "tablet" | "desktop" | "watch"; platform?: "ios" | "android"; fileType?: "screenshot-overwrite-stage" | "illustration" | "logo" | "panorama" | "background" | "mockup-media" | "promo-media" | "font"; }): Promise<{ uploadUrl: string; path: string; fullPath: string; filename: string; subfolder: string; }>; uploadBinary(uploadUrl: string, buffer: Buffer, contentType: string): Promise; listAssets(projectId: string): Promise; listProjects(): Promise<{ projects: any[]; }>; createProject(body: Record): Promise<{ project: any; }>; deleteProject(projectId: string): Promise<{ success: true; }>; getProject(projectId: string): Promise; listScreenshots(query: { projectId: string; deviceType?: "mobile" | "tablet" | "desktop"; platform?: "ios" | "android"; }): Promise<{ screenshots: string[]; isSample?: boolean; }>; listProjectScreenshots(projectId: string): Promise<{ screenshotUrls: string[]; paths: string[]; platforms: Array<"ios" | "android">; deviceTypes: Array<"phone" | "tablet" | "desktop">; defaultPlatform: "ios" | "android"; }>; generateLayouts(body: Record): Promise; applyScreenshotTemplate(body: { generationId: string; catalogKey: string; templateId: string; paletteMode: "v1" | "v2"; }): Promise; regenerateLayouts(body: { projectId: string; variantId?: string; }): Promise; getLayout(query: { generationId: string; language?: string; variantId?: string; sign?: boolean; }): Promise; saveLayout(body: Record): Promise; transformLayout(body: Record): Promise; /** Lambda-rendered screen images of a saved screenshot variant. */ previewScreenshots(body: Record): Promise<{ projectId: string; variantId: string; language: string; platform: string; device: string; size: string; renderedWidth: number; renderedHeight: number; screenCount: number; renderMs: number; images: Array<{ screenIndex: number; width: number; height: number; mimeType: string; url: string; expiresAt: string; }>; }>; listFonts(query: { projectId: string; query?: string; limit?: number; }): Promise; registerCustomFont(body: { projectId: string; path: string; name?: string; weight?: string; style?: "normal" | "italic"; }): Promise; bulkApplyScreenshots(body: Record): Promise; syncLayoutTranslations(body: Record): Promise; searchStockPhotos(provider: "pexels" | "unsplash", query: Record): Promise; importStockPhoto(provider: "pexels" | "unsplash", body: Record): Promise; listTemplates(): Promise<{ templates: any[]; }>; getTemplate(templateId: string): Promise<{ template: any; }>; listSocialTemplates(): Promise<{ templates: any[]; }>; getSocialTemplate(templateId: string): Promise<{ template: any; }>; getPromoVideo(generationId: string, variantId?: string, language?: string): Promise; translatePromoVideo(body: { generationId: string; variantId?: string; targetLanguages: string[]; }): Promise; previewPromoVideo(body: Record): Promise<{ [key: string]: unknown; mimeType: string; png: string; }>; exportPromoVideo(body: Record, idempotencyKey: string): Promise; getExport(exportId: string): Promise; /** Resolve an authenticated download path to a short-lived file URL. */ getDownloadLink(path: string): Promise<{ url: string; expiresAt?: string; }>; generatePromoVideo(body: Record): Promise; updatePromoVideo(body: Record): Promise; clearPromoVideo(body: Record): Promise; createMockupAnimation(body: Record): Promise; getMockupAnimation(generationId: string, variantId?: string): Promise; updateMockupAnimation(body: Record): Promise; listMockupMedia(projectId: string, options?: { includeMetadata?: boolean; }): Promise; inspectMockupMedia(body: { generationId: string; path: string; removeIfUnsuitable?: boolean; }): Promise; getMockupPresets(): Promise; previewMockupAnimation(body: { generationId: string; variantId?: string; times?: number[]; scale?: number; }): Promise; generateMockupMotion(body: { generationId: string; prompt: string; deviceKind: "phone" | "tablet" | "laptop"; }): Promise; exportMockupAnimation(body: { projectId: string; variantId?: string; options: { format: "mp4" | "webm"; quality: "720p" | "1080p"; fps: 30 | 60; }; }, idempotencyKey?: string): Promise<{ status: string; exportJobId: string; }>; /** Video export job status (promo or mockup). */ getExportJob(exportJobId: string): Promise<{ export: { id: string; contentType: string; status: string; progress: number | null; errorMessage: string | null; fileName: string | null; fileSize: number | null; expiresAt: string | null; }; downloadUrl?: string; }>; /** Resolve an export-history download link to a short-lived file URL. */ getExportDownload(downloadPath: string): Promise<{ url: string; expiresAt: string; }>; getMockupThemeColors(generationId: string): Promise; lookupAppStore(id: string, country?: string): Promise; translateLayouts(body: Record): Promise; listVariants(generationId: string, contentType: string): Promise; createVariant(body: Record): Promise; switchVariant(variantId: string): Promise; duplicateVariant(variantId: string): Promise; deleteVariant(variantId: string): Promise; getGraphics(projectId: string, variantId?: string, language?: string): Promise; getGraphicsFormat(projectId: string, format: string, variantId?: string, language?: string): Promise; translateGraphics(body: { generationId: string; variantId?: string; targetLanguages: string[]; }): Promise; listGraphicsTranslations(projectId: string, variantId?: string): Promise<{ variantId: string | null; sourceLanguage: string; availableLanguages: string[]; }>; transformGraphics(body: Record): Promise; updateGraphicsSettings(body: Record): Promise; renderGraphics(mode: "preview" | "export", body: Record): Promise; /** Download a short-lived artifact URL returned by a render (S3 presigned). */ fetchArtifactBytes(url: string, maxBytes?: number): Promise; generateGraphics(body: Record): Promise; applyGraphicsTemplate(body: { generationId: string; catalogKey: string; templateId: string; primaryFormat: string; paletteMode: "v1" | "v2"; }): Promise; saveGraphics(body: Record): Promise; saveGraphicsFormat(body: Record): Promise; getAsoCopy(generationId: string, variantId?: string): Promise; generateAsoCopy(body: Record): Promise; updateAsoCopy(body: Record): Promise; translateAsoCopy(body: Record): Promise; suggestCompetitors(body: Record): Promise; listSharedIllustrations(query?: { category?: string; style?: string; search?: string; limit?: number; }): Promise; listProjectIllustrations(projectId: string): Promise; listKeywords(query: { projectId: string; storeProvider?: "app_store" | "google_play"; }): Promise; listKeywordCompetitors(query: { projectId: string; storeProvider?: "app_store" | "google_play"; }): Promise; getKeywordHistory(query: { trackedKeywordId: string; appId?: string; }): Promise; addKeywords(body: { projectId: string; appId: string; keywords: string[]; country?: string; lang?: string; source?: "type" | "suggest" | "competitor" | "auto_detect"; storeProvider?: "app_store" | "google_play"; }): Promise<{ ok: true; added: number; staleCount: number; }>; addKeywordsForProject(body: { projectId: string; keywords: string[]; appId?: string; country?: string; lang?: string; countries?: Array<{ country: string; lang: string; }>; storeProvider?: "app_store" | "google_play"; }): Promise<{ ok: true; added: number; staleCount: number; storeProvider?: "app_store" | "google_play"; appId?: string | null; }>; removeKeywords(ids: string[]): Promise<{ ok: true; removed?: number; }>; replaceKeywordCompetitors(body: { projectId: string; appIds: string[]; storeProvider: "app_store" | "google_play"; }): Promise; suggestKeywords(body: { projectId: string; storeProvider?: "app_store" | "google_play"; }): Promise<{ candidates: Array<{ keyword: string; }>; }>; suggestKeywordCompetitors(query: { projectId: string; storeProvider?: "app_store" | "google_play"; }): Promise; getApiUsage(): Promise<{ pro: boolean; unlimited: boolean; limit: number; used: number; remaining: number | null; periodStart: string; resetsAt: string; }>; /** List files in a project's asset subfolder (panorama, illustrations, backgrounds, etc.) */ listProjectAssetFolder(projectId: string, folder: string): Promise; } /** One wire contract for the MCP and direct SDK consumers. */ export declare function officialApiPath(path: string): string; export {};