import type { FC } from 'react';
export interface SelectOption {
    label: string;
    value: string;
}
/**
 * Why the wizard ended up on the no-match recovery menu. Drives the Alert
 * + hint copy in `ImportNoMatchRecoveryStep` so each route gets accurate
 * context — previously the screen claimed "no profile linked to this cert"
 * even when the parent had just logged "Apple linked them to X" (cases 3
 * and 4 below). Set by the parent right before each setStep call; absent
 * (undefined) is treated as the legacy `no-profile-on-disk` default for
 * back-compat with call sites that haven't been audited yet.
 *
 *   - 'no-profile-on-disk'        : identity picked, no usable on-disk
 *                                   profile, and no ASC key to query Apple.
 *   - 'apple-no-cert-match'       : findCertIdBySha1 returned null — Apple
 *                                   doesn't recognize this cert.
 *   - 'apple-no-profiles-linked'  : Apple has the cert but zero profiles
 *                                   linked to it.
 *   - 'apple-bundle-mismatch'     : Apple has profiles but none target the
 *                                   current app's bundle id.
 *   - 'apple-distribution-mismatch': Apple has profiles for this bundle id
 *                                   but none in the requested distribution
 *                                   mode (app_store vs ad_hoc).
 *   - 'apple-other'               : catch-all when none of the specific
 *                                   filters above explain the empty result.
 */
export type NoMatchReason = 'no-profile-on-disk' | 'apple-no-cert-match' | 'apple-no-profiles-linked' | 'apple-bundle-mismatch' | 'apple-distribution-mismatch' | 'apple-other';
export declare const ImportScanningStep: FC;
export interface ImportDistributionModeStepProps {
    dense?: boolean;
    onChange: (value: string) => void | Promise<void>;
}
export declare const ImportDistributionModeStep: FC<ImportDistributionModeStepProps>;
export interface ImportPickIdentityStepProps {
    identityCount: number;
    options: SelectOption[];
    dense?: boolean;
    onChange: (value: string) => void | Promise<void>;
}
export declare const ImportPickIdentityStep: FC<ImportPickIdentityStepProps>;
export interface ImportPickProfileStepProps {
    matchedCount: number;
    droppedCount: number;
    distribution: 'app_store' | 'ad_hoc' | null;
    options: SelectOption[];
    dense?: boolean;
    onChange: (value: string) => void;
}
export declare const ImportPickProfileStep: FC<ImportPickProfileStepProps>;
export interface ImportNoMatchRecoveryStepProps {
    identityName: string;
    options: SelectOption[];
    /**
     * Why the wizard ended up here. Optional for back-compat — undefined
     * renders the legacy `no-profile-on-disk` wording.
     */
    reason?: NoMatchReason;
    /** Concrete iOS bundle id; used by the bundle-mismatch + distribution-mismatch alerts. */
    appId?: string;
    /** Active distribution mode; used by the distribution-mismatch alert. */
    importDistribution?: 'app_store' | 'ad_hoc' | null;
    dense?: boolean;
    onChange: (value: string) => void;
}
export declare const ImportNoMatchRecoveryStep: FC<ImportNoMatchRecoveryStepProps>;
export declare const ImportCreateProfileOnlyStep: FC;
export interface ImportExportWarningStepProps {
    identityName: string;
    dense?: boolean;
    onChange: (value: string) => void;
}
export declare const ImportExportWarningStep: FC<ImportExportWarningStepProps>;
export declare const ImportExportingStep: FC;
