import type { ImportedPackages } from './analyzer/importedPackages.ts';
import type { AeiFinding, AeiInstallStrategy, AeiRecommendation, AeiRecommendationSource, AeiScoreBand } from './types.ts';
/**
 * Infinite exposure rules that put the dependency on the package's public
 * identity surface (re-export, subclass, owned export). v1 peer-with-default
 * requires at least one of these (API-EXPOSURE-INDEX.md §12).
 */
export declare const IDENTITY_SURFACE_RULE_IDS: ReadonlySet<string>;
/**
 * Coupling / host-context findings that veto shipping a default install —
 * nested copies break shared registries, globals, or React contexts.
 */
export declare const HOST_CONTEXT_RULE_IDS: ReadonlySet<string>;
/**
 * Framework / plugin-host packages that must never receive a default
 * install via `peer-with-default` (even when always imported).
 */
export declare const DEFAULT_HOST_FRAMEWORK_PACKAGES: ReadonlySet<string>;
export interface ResolveInstallStrategyParams {
    dependency: string;
    findings: AeiFinding[];
    /** Host package names that must not ship a default install. */
    hostPackages?: ReadonlySet<string>;
    importedPackages?: ImportedPackages;
    /** True when this package already marks the peer optional. */
    optionalPeer: boolean;
}
/**
 * Whether the package has a static value import of the dependency
 * (runtime-required signal). When import scanning is unavailable, returns
 * false so promotion stays conservative.
 */
export declare function hasRuntimeValueImport(dependency: string, importedPackages: ImportedPackages | undefined): boolean;
export declare function hasIdentitySurface(findings: AeiFinding[]): boolean;
export declare function hasHostContextVeto(findings: AeiFinding[]): boolean;
/**
 * True when the only conclusive peer reason is a forwarded chain contract
 * with no local identity surface — not a candidate for shipping a default.
 */
export declare function isChainForwardOnly(findings: AeiFinding[]): boolean;
/**
 * Resolves how a peer-leaning dependency should be installed (spec §12).
 * Only meaningful when the base score recommendation is `peer`.
 *
 * - `none` — optional / feature-gated peer (no default, often optional meta)
 * - `dev` — peer + local dev companion (current library default)
 * - `default` — peer + dependencies (`peer-with-default`)
 */
export declare function resolveInstallStrategy({ dependency, findings, hostPackages, importedPackages, optionalPeer, }: ResolveInstallStrategyParams): AeiInstallStrategy;
/**
 * Promotes a definitive `peer` recommendation to `peer-with-default` when
 * install strategy is `default`. No-op when peer-with-default is disabled
 * or the base band is not definitive `peer`.
 */
export declare function applyPeerWithDefaultPromotion(baseRecommendation: AeiScoreBand | AeiRecommendation, installStrategy: AeiInstallStrategy | undefined, enabled: boolean): AeiRecommendation;
export interface ApplyInstallStrategyParams {
    dependency: string;
    findings: AeiFinding[];
    importedPackages?: ImportedPackages;
    optionalPeer: boolean;
    peerWithDefaultEnabled: boolean;
    recommendation: AeiRecommendation;
    recommendationSource: AeiRecommendationSource;
}
/**
 * When peer-with-default mode is on and the recommendation is peer-leaning,
 * compute install strategy and optionally promote score-sourced `peer` to
 * `peer-with-default`.
 */
export declare function applyInstallStrategy({ dependency, findings, importedPackages, optionalPeer, peerWithDefaultEnabled, recommendation, recommendationSource, }: ApplyInstallStrategyParams): {
    installStrategy: AeiInstallStrategy | undefined;
    recommendation: AeiRecommendation;
};
//# sourceMappingURL=installStrategy.d.ts.map