import { type Logger } from '../utils/logger.js';
import { Registry } from './Registry.js';
export interface ManagedRegistryConfig<TDefinition> {
    componentName: string;
    idField?: keyof TDefinition & string;
    /**
     * Extract id from a full item. Takes precedence over `idField` when provided.
     * Required when the id field is nested (e.g. `def.info.id`).
     */
    computeId?: (item: TDefinition) => string;
    logger?: Logger;
}
export declare class ManagedRegistry<TDefinition> extends Registry<TDefinition> {
    protected log: Logger;
    private idField?;
    private computeId?;
    constructor(config: ManagedRegistryConfig<TDefinition>);
    register(id: string, item: TDefinition): void;
    register(item: TDefinition): void;
    register(items: TDefinition[]): void;
    getOrThrow(id: string): TDefinition;
}
//# sourceMappingURL=ManagedRegistry.d.ts.map