import { AppLaunchFlowClient, type McpCredentials, type RequestOptions } from "./api.js"; export { AppLaunchFlowApiError, type RequestOptions, type McpCredentials, } from "./api.js"; export type FormatId = "ios.phone.6.9" | "ios.phone.6.5" | "ios.phone.6.3" | "ios.phone.6.1" | "ios.phone.duo-inner" | "ios.phone.duo-outer" | "ios.tablet.13" | "ios.tablet.12.9" | "ios.tablet.11" | "ios.tablet.10.5" | "android.phone" | "android.tablet7" | "android.tablet10"; export interface ApiUsage { pro: boolean; unlimited: boolean; limit: number; used: number; remaining: number | null; periodStart: string; resetsAt: string; } export interface RenderInput { projectId: string; variantId?: string; formats: FormatId[]; resolutions?: Partial>; languages: string[]; package?: "fastlane"; } export interface Render { id: string; projectId: string; variantId: string; status: "queued" | "dispatching" | "rendering" | "succeeded" | "failed" | "cancelled" | "indeterminate"; errorCode: string | null; statusUrl: string; createdAt: string; completedAt: string | null; } export interface Manifest { schemaVersion: 1; valid: true; projectId: string; variantId: string; inputHash: string; rendererVersion: string; files: Array<{ path: string; width: number; height: number; locale: string; platform: "ios" | "android"; format: FormatId; screenId: string; sha256: string; sizeBytes: number; }>; } export declare class AppLaunchFlow extends AppLaunchFlowClient { constructor(credentials: McpCredentials); requestJson(path: string, options?: RequestOptions): Promise; getApiUsage(): Promise; formats(): Promise<{ formats: Array<{ id: FormatId; platform: string; device: string; width: number; height: number; storeType: string; }>; locales: { ios: string[]; android: string[]; }; resolutionOptions?: { androidPhonePresets: Record; custom: { min: number; max: number; }; orientation: string; note: string; }; limits: Record; }>; createRender(input: RenderInput, idempotencyKey: string): Promise; getRender(id: string, options?: RequestOptions): Promise; getManifest(id: string): Promise; getDownload(id: string): Promise<{ url: string; sha256: string; sizeBytes: number; expiresAt: string; }>; cancelRender(id: string, idempotencyKey: string): Promise; waitForRender(id: string, { signal, timeoutMs, intervalMs, }?: { signal?: AbortSignal; timeoutMs?: number; intervalMs?: number; }): Promise; /** Downloads exclusively to a new file, verifies bytes, removes partial files. Never extracts archives or overwrites an existing path. */ downloadPackage(id: string, path: string): Promise<{ url: string; sha256: string; sizeBytes: number; expiresAt: string; }>; }