import { EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
import { MJAPIKeyEntity } from '@memberjunction/core-entities';
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
import * as i0 from "@angular/core";
/** Filter options for the list */
export type APIKeyFilter = 'all' | 'active' | 'revoked' | 'expiring' | 'expired' | 'never-used';
/** Category scope display */
interface CategoryScopeCount {
    category: string;
    count: number;
    color: string;
    icon: string;
}
/** Scope info for display */
interface KeyScopeInfo {
    count: number;
    preview: string[];
    categories: CategoryScopeCount[];
}
/**
 * List view component for displaying and filtering API keys
 */
export declare class APIKeyListComponent extends BaseAngularComponent implements OnInit, OnChanges {
    Filter: APIKeyFilter;
    KeySelected: EventEmitter<MJAPIKeyEntity>;
    CreateRequested: EventEmitter<void>;
    Math: Math;
    AllKeys: MJAPIKeyEntity[];
    FilteredKeys: MJAPIKeyEntity[];
    IsLoading: boolean;
    SearchText: string;
    SortField: 'Label' | 'Status' | 'User' | 'LastUsedAt' | 'ExpiresAt' | '__mj_CreatedAt';
    SortDirection: 'asc' | 'desc';
    PageSize: number;
    CurrentPage: number;
    Stats: {
        total: number;
        active: number;
        revoked: number;
        expiring: number;
        expired: number;
        neverUsed: number;
    };
    KeyScopeMap: Map<string, KeyScopeInfo>;
    private AllScopes;
    private readonly defaultUIConfig;
    private categoryUIConfigs;
    ngOnInit(): Promise<void>;
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    /**
     * Load all API keys
     */
    loadKeys(): Promise<void>;
    /**
     * Get scope info for a key
     */
    getScopeInfo(key: MJAPIKeyEntity): KeyScopeInfo;
    /**
     * Calculate statistics
     */
    private calculateStats;
    /**
     * Apply filters and sorting
     */
    applyFilters(): void;
    /**
     * Handle search input
     */
    onSearch(): void;
    /**
     * Clear search
     */
    clearSearch(): void;
    /**
     * Set filter
     */
    setFilter(filter: APIKeyFilter): void;
    /**
     * Toggle sort
     */
    toggleSort(field: typeof this.SortField): void;
    /**
     * Get sort icon class
     */
    getSortIcon(field: typeof this.SortField): string;
    /**
     * Get paginated keys
     */
    getPaginatedKeys(): MJAPIKeyEntity[];
    /**
     * Get total pages
     */
    getTotalPages(): number;
    /**
     * Go to page
     */
    goToPage(page: number): void;
    /**
     * Get page numbers to display
     */
    getPageNumbers(): number[];
    /**
     * Select a key
     */
    selectKey(key: MJAPIKeyEntity): void;
    /**
     * Request key creation
     */
    requestCreate(): void;
    /**
     * Format date for display
     */
    formatDate(date: Date | null): string;
    /**
     * Format expiration for display
     */
    formatExpiration(date: Date | null): string;
    /**
     * Get expiration status class
     */
    getExpirationClass(key: MJAPIKeyEntity): string;
    /**
     * Get filter count
     */
    getFilterCount(filter: APIKeyFilter): number;
    static ɵfac: i0.ɵɵFactoryDeclaration<APIKeyListComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<APIKeyListComponent, "mj-api-key-list", never, { "Filter": { "alias": "Filter"; "required": false; }; }, { "KeySelected": "KeySelected"; "CreateRequested": "CreateRequested"; }, never, never, false, never>;
}
export {};
//# sourceMappingURL=api-key-list.component.d.ts.map