import type { PbxTarget } from './pbxproj-parser';
export type ProvisioningMapErrorCode = 'missing' | 'empty' | 'malformed' | 'invalid';
export declare class ProvisioningMapError extends Error {
    readonly code: ProvisioningMapErrorCode;
    constructor(code: ProvisioningMapErrorCode, message: string);
}
export interface ProvisioningMapEntry {
    profile: string;
    name: string;
    readonly bundleId: string;
}
export type ProvisioningMap = Record<string, ProvisioningMapEntry>;
export interface ProvisioningTargetGroup {
    bundleId: string;
    targetNames: string[];
}
export interface WildcardReuse {
    entry: ProvisioningMapEntry;
    sourceKeys: string[];
    targets: ProvisioningTargetGroup[];
}
export interface ProvisioningCoverage {
    exact: ProvisioningTargetGroup[];
    missing: ProvisioningTargetGroup[];
    unresolved: PbxTarget[];
    wildcardReuse: WildcardReuse | null;
    wildcardConflict: ProvisioningTargetGroup[];
    generation: ProvisioningTargetGroup[];
}
/** Cache the parsed bundle ID without changing the persisted { profile, name } contract. */
export declare function createProvisioningMapEntry(profile: string, name: string, bundleId: string): ProvisioningMapEntry;
export declare function parseProvisioningMap(raw: unknown): ProvisioningMap;
export declare function isConcreteBundleId(bundleId: string): boolean;
export declare function wildcardBundleMatches(wildcardBundleId: string, targetBundleId: string): boolean;
export declare function analyzeProvisioningCoverage(targets: PbxTarget[], map: ProvisioningMap): ProvisioningCoverage;
