/**
 * @module entity-list.component
 * @description Displays the list of entities accessible to the current user.
 *
 * Loaded from `DatabaseDesignerEngine.Instance.loadAccessibleEntities()` —
 * data access goes through the engine singleton, not this component directly,
 * so the cache is shared across wizard openings.
 */
import { OnInit, OnDestroy, EventEmitter } from '@angular/core';
import type { AccessibleEntity } from '../database-designer.types.js';
import * as i0 from "@angular/core";
type SortField = 'entityName' | 'tableName' | 'schemaName' | 'createdAt' | 'owner';
type SortDirection = 'asc' | 'desc';
export declare class EntityListComponent implements OnInit, OnDestroy {
    /** Emitted when the user clicks "Edit" on an entity row. */
    readonly EditEntity: EventEmitter<AccessibleEntity>;
    /** Emitted when the user clicks "View Details" on an entity row. */
    readonly ViewEntity: EventEmitter<AccessibleEntity>;
    /** Emitted when the user clicks "New Entity". */
    readonly NewEntity: EventEmitter<void>;
    IsLoading: boolean;
    ErrorMessage: string | null;
    /** Full unfiltered list from the engine. */
    private _allEntities;
    /** Public accessor for the chrome's X-of-Y badge. */
    get TotalEntityCount(): number;
    /** Cached sorted unique schema names — recomputed only when _allEntities changes. */
    private _availableFilterSchemas;
    /** Currently displayed (filtered + sorted) rows. */
    FilteredEntities: AccessibleEntity[];
    private readonly _search$;
    private readonly _schema$;
    private readonly _sortField$;
    private readonly _sortDir$;
    private readonly _destroy$;
    private readonly cdr;
    ngOnInit(): void;
    ngOnDestroy(): void;
    get SearchTerm(): string;
    set SearchTerm(v: string);
    get SelectedSchema(): string;
    set SelectedSchema(v: string);
    /** Unique schema names present in the loaded entity list, sorted alphabetically. */
    get AvailableFilterSchemas(): string[];
    get SortField(): SortField;
    get SortDirection(): SortDirection;
    /** Toggle sort: same field flips direction; new field defaults to asc. */
    OnSortChange(field: SortField): void;
    OnEditEntity(entity: AccessibleEntity): void;
    OnViewEntity(entity: AccessibleEntity): void;
    OnNewEntity(): void;
    OnRefresh(): void;
    TrackByEntityId(_: number, entity: AccessibleEntity): string;
    FormatDate(date: Date): string;
    private setupFilter;
    private loadEntities;
    private applyFilterAndSort;
    private sortValue;
    static ɵfac: i0.ɵɵFactoryDeclaration<EntityListComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EntityListComponent, "mj-database-entity-list", never, {}, { "EditEntity": "EditEntity"; "ViewEntity": "ViewEntity"; "NewEntity": "NewEntity"; }, never, never, false, never>;
}
export {};
//# sourceMappingURL=entity-list.component.d.ts.map