import type { BundleCompatibilityOptions } from '../schemas/bundle';
import type { Compatibility } from '../utils';
interface CompatibilityResult {
    finalCompatibility: Compatibility[];
    hasIncompatible: boolean;
    resolvedAppId: string;
    channel: string;
}
export declare function checkCompatibilityInternal(appId: string, options: BundleCompatibilityOptions, silent?: boolean): Promise<CompatibilityResult>;
export declare function checkCompatibility(appId: string, options: BundleCompatibilityOptions): Promise<void>;
export type UploadCompatibilityResult = 'compatible' | 'incompatible' | 'skipped';
export interface UploadCompatibilitySummary {
    result: UploadCompatibilityResult;
    incompatibleCount: number;
    reasons: string[];
}
/**
 * Summarize an upload's compatibility outcome for analytics.
 *
 * `finalCompatibility` is `undefined` when the comparison did not run (new
 * channel / no remote native metadata / `--ignore-metadata-check`), which is
 * reported as `skipped` so the funnel never silently counts a skip as
 * `compatible`.
 */
export declare function summarizeUploadCompatibility(finalCompatibility: Compatibility[] | undefined): UploadCompatibilitySummary;
export {};
