/**
 * Native Build Request Module
 *
 * This module handles native iOS and Android build requests through Capgo's cloud build service.
 *
 * CREDENTIAL SECURITY GUARANTEE:
 * ═══════════════════════════════════════════════════════════════════════════
 * Your build credentials (certificates, keystores, passwords, API keys) are:
 *
 * ✓ NEVER stored permanently on Capgo servers
 * ✓ Used ONLY during the active build process
 * ✓ Automatically deleted from Capgo servers after build completion
 * ✓ Retained for a MAXIMUM of 24 hours (even if build fails)
 * ✓ Builds sent DIRECTLY to app stores (Apple/Google)
 * ✓ Build outputs may optionally be uploaded for time-limited download links
 *
 * Credentials are transmitted securely over HTTPS and used only in ephemeral
 * build environments that are destroyed after each build completes.
 * ═══════════════════════════════════════════════════════════════════════════
 *
 * BEFORE BUILDING:
 * You must save your credentials first using:
 * - `npx @capgo/cli build credentials save --platform ios` (for iOS)
 * - `npx @capgo/cli build credentials save --platform android` (for Android)
 * - Credentials stored in ~/.capgo/credentials.json (local machine only)
 * - Use `build credentials clear` to remove saved credentials
 */
import type { BuildOptionsPayload, BuildRequestOptions, BuildRequestResult } from '../schemas/build';
/**
 * Callback interface for build logging.
 * Allows callers (like the onboarding UI) to capture log output
 * without stdout/stderr interception hacks.
 */
export interface BuildLogger {
    info: (msg: string) => void;
    error: (msg: string) => void;
    warn: (msg: string) => void;
    success: (msg: string) => void;
    /** Called with build log lines streamed from the builder */
    buildLog: (msg: string) => void;
    /** Called with upload progress percentage (0-100) */
    uploadProgress: (percent: number) => void;
    /** Called with custom messages from the builder (QR codes, etc.) */
    customMsg: (kind: string, data: Record<string, unknown>) => void | Promise<void>;
}
type BuildPlatform = 'ios' | 'android';
interface ResolveBuildPlatformOptions {
    silent?: boolean;
    interactive?: boolean;
    promptPlatform?: () => Promise<unknown>;
}
export declare function resolveBuildPlatform(platform: string | undefined, { silent, interactive, promptPlatform, }?: ResolveBuildPlatformOptions): Promise<BuildPlatform>;
export type { BuildCredentials, BuildRequestOptions, BuildRequestResult } from '../schemas/build';
/**
 * Extract native node_modules roots that contain platform folders.
 */
interface NativeDependencies {
    packages: Set<string>;
    cordovaPackages: Set<string>;
    usesSPM: boolean;
    usesCocoaPods: boolean;
}
interface ZipDirectoryOptions {
    nodeModules?: string;
}
/**
 * Check if a file path should be included in the zip
 */
export declare function shouldIncludeFile(filePath: string, platform: 'ios' | 'android', nativeDeps: NativeDependencies, platformDir: string): boolean;
/**
 * Zip directory for native build, including only necessary files:
 * - ios/ OR android/ folder (based on platform)
 * - node_modules with native code (from Podfile/settings.gradle)
 * - capacitor.config.*, package.json, package-lock.json
 * Zip contents are the user's responsibility, not Capgo's; Capgo packages the user-provided files as-is.
 */
export declare function zipDirectory(projectDir: string, outputPath: string, platform: 'ios' | 'android', capConfig: any, options?: ZipDirectoryOptions): Promise<void>;
/**
 * Request a native build from Capgo's cloud build service
 *
 * @param appId - The app ID (e.g., com.example.app)
 * @param options - Build request options including platform and credentials
 * @param silent - Suppress console output
 *
 * @returns Build request result with job ID and status
 *
 * SECURITY NOTE:
 * Credentials provided to this function are:
 * - Transmitted securely over HTTPS to Capgo's build servers
 * - Used ONLY during the active build process
 * - Automatically deleted after build completion
 * - NEVER stored permanently on Capgo servers
 * - Build outputs may optionally be uploaded for time-limited download links
 */
/** Keys that are non-secret build options and should NOT be sent in the credentials blob. */
export declare const NON_CREDENTIAL_KEYS: Set<string>;
/**
 * Split merged credentials into a build options payload and a credentials-only payload.
 * Non-secret configuration keys (schemes, directories, output control) go into buildOptions.
 * Only actual secrets (certificates, passwords, API keys) remain in buildCredentials.
 */
export declare function splitPayload(mergedCredentials: Record<string, string | undefined>, platform: 'ios' | 'android', buildMode: string, cliVersion: string): {
    buildOptions: BuildOptionsPayload;
    buildCredentials: Record<string, string>;
};
export declare function requestBuildInternal(appId: string, options: BuildRequestOptions, silent?: boolean, logger?: BuildLogger): Promise<BuildRequestResult>;
export declare function requestBuildCommand(appId: string, options: BuildRequestOptions): Promise<void>;
