type RepositoryProjectRole = 'standalone' | 'component';
interface RepositoryProjectCandidate {
    root: string;
    role: RepositoryProjectRole;
    parent_root: string | null;
    markers: string[];
    ecosystems: StackEcosystem[];
}
interface RepositoryApplication {
    root: string;
    component_roots: string[];
}
interface RepositoryContext {
    selected_root: string;
    scan_max_depth: number;
    ignored_paths: string[];
    projects: RepositoryProjectCandidate[];
    applications: RepositoryApplication[];
    primary_project_root: string | null;
}

declare const STACK_ECOSYSTEMS: readonly ["node", "php", "python", "ruby", "jvm", "go", "rust", "dart", "dotnet"];
type StackEcosystem = (typeof STACK_ECOSYSTEMS)[number];
type StackProfileSourceKind = 'manifest' | 'lockfile' | 'config' | 'heuristic' | 'fallback';
interface ToolchainInfo {
    ecosystem: StackEcosystem;
    package_manager: string;
    lockfile: string;
}
interface InstalledPackage {
    name: string;
    version_constraint: string;
    locked_version: string;
    ecosystem: StackEcosystem;
    is_dev: boolean;
    root?: string;
    manifest?: string;
}
interface StackSourceReference {
    file: string;
    kind: StackProfileSourceKind;
    detail: string;
}
interface VersionBand {
    name: string;
    package_name: string;
    range: string;
    locked_version: string;
    source: 'lockfile' | 'manifest';
}
interface DetectedStackProfile {
    frameworks: string[];
    traits: string[];
    toolchains: ToolchainInfo[];
    version_bands: VersionBand[];
    sources: StackSourceReference[];
}
interface StackSnapshot {
    generated_at: string;
    source_hashes: Record<string, string>;
    toolchains: ToolchainInfo[];
    packages: InstalledPackage[];
    profile: DetectedStackProfile;
    repository?: RepositoryContext;
}
interface StackDriftChange {
    type: 'framework-added' | 'framework-removed' | 'trait-added' | 'trait-removed' | 'version-band-changed' | 'toolchain-changed' | 'package-added' | 'package-removed';
    key: string;
    before?: string;
    after?: string;
}
interface StackDriftReport {
    generated_at: string;
    status: 'no-drift' | 'drift-detected';
    previous_profile: DetectedStackProfile | null;
    current_profile: DetectedStackProfile;
    material_changes: StackDriftChange[];
    packages_added?: string[];
    packages_removed?: string[];
    newly_active_rule_bands: string[];
    newly_inactive_rule_bands: string[];
    review_targets: string[];
}

export { STACK_ECOSYSTEMS as d };
export type { DetectedStackProfile as D, InstalledPackage as I, RepositoryContext as R, StackSourceReference as S, ToolchainInfo as T, VersionBand as V, StackDriftReport as a, StackEcosystem as b, StackSnapshot as c, StackDriftChange as e, StackProfileSourceKind as f };
