import { OnInit, OnDestroy } from '@angular/core';
import { MJListFormComponent } from '../../generated/Entities/MJList/mjlist.form.component';
import { MJListEntity, MJListDetailEntity, MJListCategoryEntity, MJUserViewEntityExtended } from '@memberjunction/core-entities';
import { EntityInfo } from '@memberjunction/core';
import { ListShareDialogConfig, ListShareDialogResult } from '@memberjunction/ng-list-management';
import * as i0 from "@angular/core";
export type ListSection = 'overview' | 'items' | 'sharing' | 'activity' | 'settings';
export interface ListItemViewModel {
    detail: MJListDetailEntity;
    recordName: string;
    isLoading: boolean;
}
export interface ListStats {
    itemCount: number;
    shareCount: number;
    invitationCount: number;
    lastUpdated: Date | null;
}
/**
 * Represents a record that can be added to a list
 */
export interface AddableRecord {
    ID: string;
    Name: string;
    isInList: boolean;
    isSelected: boolean;
}
/**
 * World-class List form component that provides a rich exploration experience
 * for managing lists in the MemberJunction system.
 *
 * Features:
 * - Overview with visual stats and entity context
 * - Items grid with inline record navigation
 * - Sharing management (coming soon)
 * - Activity history
 * - Settings and configuration
 */
export declare class MJListFormComponentExtended extends MJListFormComponent implements OnInit, OnDestroy {
    private sharedService;
    record: MJListEntity;
    activeSection: ListSection;
    navItems: ({
        id: ListSection;
        icon: string;
        label: string;
        badge?: undefined;
        disabled?: undefined;
    } | {
        id: ListSection;
        icon: string;
        label: string;
        badge: number;
        disabled?: undefined;
    } | {
        id: ListSection;
        icon: string;
        label: string;
        badge: number;
        disabled: boolean;
    })[];
    listItems: ListItemViewModel[];
    categories: MJListCategoryEntity[];
    entityInfo: EntityInfo | null;
    stats: ListStats;
    isLoadingItems: boolean;
    isLoadingStats: boolean;
    explorerError: string | null;
    itemSearchTerm: string;
    selectedItems: Set<string>;
    isSelectAllChecked: boolean;
    isEditingName: boolean;
    isEditingDescription: boolean;
    editingName: string;
    editingDescription: string;
    showAddRecordsDialog: boolean;
    addDialogLoading: boolean;
    addDialogSaving: boolean;
    addableRecords: AddableRecord[];
    addRecordsSearchFilter: string;
    existingListDetailIds: Set<string>;
    addProgress: number;
    addTotal: number;
    private searchSubject;
    showAddFromViewDialog: boolean;
    showAddFromViewLoader: boolean;
    userViews: MJUserViewEntityExtended[] | null;
    userViewsToAdd: MJUserViewEntityExtended[];
    addFromViewProgress: number;
    addFromViewTotal: number;
    fetchingRecordsToSave: boolean;
    showShareDialog: boolean;
    shareDialogConfig: ListShareDialogConfig | null;
    private destroy$;
    private metadata;
    ngOnInit(): Promise<void>;
    private showNotification;
    ngOnDestroy(): void;
    private loadExplorerData;
    private loadCategories;
    private loadItems;
    private loadRecordNames;
    private loadStats;
    private updateNavBadges;
    setActiveSection(section: ListSection): void;
    get filteredItems(): ListItemViewModel[];
    toggleItemSelection(item: ListItemViewModel): void;
    toggleSelectAll(): void;
    private updateSelectAllState;
    removeSelectedItems(): Promise<void>;
    openRecord(item: ListItemViewModel): void;
    startEditingName(): void;
    saveNameEdit(): Promise<void>;
    cancelNameEdit(): void;
    startEditingDescription(): void;
    saveDescriptionEdit(): Promise<void>;
    cancelDescriptionEdit(): void;
    get entityDisplayName(): string;
    get entityIcon(): string;
    get categoryName(): string;
    get formattedItemCount(): string;
    get formattedLastUpdated(): string;
    getOwnerName(): string;
    isCurrentUserOwner(): boolean;
    onCategoryChange(categoryId: string | null): Promise<void>;
    refreshItems(): Promise<void>;
    openAddRecordsDialog(): Promise<void>;
    closeAddRecordsDialog(): void;
    private loadExistingListDetailIds;
    onAddRecordsSearchChange(value: string): void;
    private searchRecords;
    toggleRecordSelection(record: AddableRecord): void;
    get selectedAddableRecords(): AddableRecord[];
    selectAllAddable(): void;
    deselectAllAddable(): void;
    confirmAddRecords(): Promise<void>;
    openAddFromViewDialog(): Promise<void>;
    closeAddFromViewDialog(): void;
    private loadEntityViews;
    toggleViewSelection(view: MJUserViewEntityExtended): void;
    isViewSelected(view: MJUserViewEntityExtended): boolean;
    confirmAddFromView(): Promise<void>;
    openShareDialog(): void;
    onShareDialogComplete(result: ListShareDialogResult): void;
    onShareDialogCancel(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<MJListFormComponentExtended, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<MJListFormComponentExtended, "mj-list-form-extended", never, {}, {}, never, never, false, never>;
}
//# sourceMappingURL=list-form.component.d.ts.map