import { OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
import { BaseResourceComponent } from '@memberjunction/ng-shared';
import * as i0 from "@angular/core";
/** Local mirror of MJGlobal's ClassRegistration shape (avoids importing the type). */
interface ClassRegistration {
    BaseClass: {
        name?: string;
    };
    SubClass: {
        name?: string;
    };
    Key: string | null;
    Priority: number;
}
interface RegistrationGroup {
    baseClassName: string;
    count: number;
    registrations: ClassRegistration[];
    expanded: boolean;
    /** Number of distinct keys (some keys can have multiple registrations at different priorities). */
    uniqueKeys: number;
    /** True when at least one key in this group has multiple registrations (priority resolution applies). */
    hasOverrides: boolean;
}
/**
 * Class Registry Browser — read-only inspector of every `@RegisterClass`
 * registration tracked by `MJGlobal.Instance.ClassFactory`. Groups by base
 * class, surfaces priority/override conflicts, supports search + copy.
 */
export declare class ClassRegistryInspectorComponent extends BaseResourceComponent implements OnInit, OnDestroy {
    private cdr;
    Groups: RegistrationGroup[];
    Stats: {
        total: number;
        baseClasses: number;
        withOverrides: number;
    };
    SearchQuery: string;
    CopyConfirmed: boolean;
    LastRefreshed: Date;
    constructor(cdr: ChangeDetectorRef);
    ngOnInit(): void;
    ngOnDestroy(): void;
    PersistPrefs(): void;
    private savePrefs;
    GetResourceDisplayName(): Promise<string>;
    GetResourceIconClass(): Promise<string>;
    refresh(): void;
    ToggleGroup(group: RegistrationGroup): void;
    ExpandAll(): void;
    CollapseAll(): void;
    OnSearchChange(value: string): void;
    get FilteredGroups(): RegistrationGroup[];
    IsConflictRow(group: RegistrationGroup, reg: ClassRegistration): boolean;
    IsWinningRow(group: RegistrationGroup, reg: ClassRegistration): boolean;
    OnCopy(): Promise<void>;
    get LastRefreshedLabel(): string;
    TrackByBase: (_i: number, g: RegistrationGroup) => string;
    TrackByReg: (_i: number, r: ClassRegistration) => string;
    static ɵfac: i0.ɵɵFactoryDeclaration<ClassRegistryInspectorComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ClassRegistryInspectorComponent, "mj-class-registry-inspector", never, {}, {}, never, never, false, never>;
}
export {};
//# sourceMappingURL=class-registry.component.d.ts.map