import type { CanonicalEntry } from '../../engine/index.js';
import type { CodexExtensionPlan } from '../../providers/codex/codec/sync-extension.js';
import type { MaterializationPlan } from '../../providers/shared/index.js';
export interface CodexRoleStray {
    roleName: string;
    providerPath: string;
    description?: string;
}
export interface CodexRegenerationDependencies {
    scopeRoot: string;
    scanCanonical: () => Promise<CanonicalEntry[]>;
    computeExtensionPlan: (scopeRoot: string, canonicalEntries: CanonicalEntry[]) => Promise<CodexExtensionPlan>;
    applyExtensionPlan: (scopeRoot: string, plan: CodexExtensionPlan) => Promise<unknown>;
}
interface ProviderStrayCandidate {
    provider: string;
    report: {
        providerPath: string;
    };
}
export declare function filterMaterializationManagedStrays<TCandidate extends ProviderStrayCandidate>(candidates: TCandidate[], plans: readonly MaterializationPlan[]): TCandidate[];
export declare function detectCodexRoleStrays(scopeRoot: string, canonicalEntries: CanonicalEntry[], managedRoleNames?: Set<string>): Promise<CodexRoleStray[]>;
export declare function regenerateCodexAfterAdoption({ scopeRoot, scanCanonical, computeExtensionPlan, applyExtensionPlan, }: CodexRegenerationDependencies): Promise<void>;
export {};
//# sourceMappingURL=codex-strays.d.ts.map