/**
 * @fileoverview Classify · Content Types tab.
 *
 * Self-contained sub-page: owns its header-interior and the content-type cards
 * grid. Receives the shared raw data needed to build the cards from the host
 * orchestrator (content types, sources, items, and the accurate total item
 * count). The slide-in CRUD form stays in the host — this tab emits
 * Add/Edit intents up via @Output and the host opens its existing form.
 */
import { EventEmitter } from '@angular/core';
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
import { ContentTypeCard } from '../shared/classify.types';
import { formatNumber } from '../shared/classify.format';
import * as i0 from "@angular/core";
export declare class ClassifyTypesTabComponent extends BaseAngularComponent {
    private cdr;
    /** Shown while a manual Refresh() recomputes the content-type cards. */
    IsLoading: boolean;
    /** Raw `MJ: Content Types` rows — the primary source for the cards. */
    private _contentTypes;
    set ContentTypes(value: Record<string, unknown>[]);
    get ContentTypes(): Record<string, unknown>[];
    /** Raw `MJ: Content Sources` rows — used to count sources per content type. */
    private _sources;
    set Sources(value: Record<string, unknown>[]);
    get Sources(): Record<string, unknown>[];
    /** Raw `MJ: Content Items` rows — used to count items per content type. */
    private _items;
    set Items(value: Record<string, unknown>[]);
    get Items(): Record<string, unknown>[];
    /** Accurate total item count from TotalRowCount (used when a single content type exists). */
    private _totalItemCount;
    set TotalItemCount(value: number);
    get TotalItemCount(): number;
    ContentTypeCards: ContentTypeCard[];
    /** Template-facing formatter (exposed so `formatNumber(...)` resolves in the view). */
    readonly formatNumber: typeof formatNumber;
    /** Bubble Add/Edit intents to the host, which owns the slide-in CRUD form. */
    AddTypeRequested: EventEmitter<void>;
    EditTypeRequested: EventEmitter<ContentTypeCard>;
    /**
     * Recompute the content-type cards from the current host-supplied inputs. The
     * data is host-owned (flows in via @Input); Refresh rebuilds the view models
     * and surfaces a brief loading state for user feedback.
     */
    Refresh(): Promise<void>;
    onAddType(): void;
    onEditType(card: ContentTypeCard): void;
    /** Rebuild the card view models from the current inputs. */
    private rebuild;
    private countSourcesByContentType;
    private countItemsByContentType;
    static ɵfac: i0.ɵɵFactoryDeclaration<ClassifyTypesTabComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ClassifyTypesTabComponent, "classify-types-tab", never, { "ContentTypes": { "alias": "ContentTypes"; "required": false; }; "Sources": { "alias": "Sources"; "required": false; }; "Items": { "alias": "Items"; "required": false; }; "TotalItemCount": { "alias": "TotalItemCount"; "required": false; }; }, { "AddTypeRequested": "AddTypeRequested"; "EditTypeRequested": "EditTypeRequested"; }, never, never, false, never>;
}
//# sourceMappingURL=types-tab.component.d.ts.map