import { OnInit, EventEmitter, ChangeDetectorRef } from '@angular/core';
import { MJAPIScopeEntity } from '@memberjunction/core-entities';
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
import * as i0 from "@angular/core";
/** Scope tree node structure */
interface ScopeTreeNode {
    scope: MJAPIScopeEntity;
    children: ScopeTreeNode[];
    expanded: boolean;
    level: number;
}
/**
 * API Scopes Panel Component
 * Manages API Scopes in a hierarchical tree structure
 */
export declare class APIScopesPanelComponent extends BaseAngularComponent implements OnInit {
    ScopeUpdated: EventEmitter<void>;
    private get md();
    private cdr;
    IsLoading: boolean;
    IsSaving: boolean;
    ScopeTree: ScopeTreeNode[];
    FlatScopes: MJAPIScopeEntity[];
    EditingScope: MJAPIScopeEntity | null;
    EditName: string;
    EditDescription: string;
    EditCategory: string;
    EditResourceType: string;
    EditParentId: string | null;
    EditIsActive: boolean;
    ShowCreateDialog: boolean;
    ShowEditDialog: boolean;
    SelectedParentScope: MJAPIScopeEntity | null;
    SuccessMessage: string;
    ErrorMessage: string;
    readonly CategoryColors: Record<string, string>;
    readonly ResourceTypes: string[];
    readonly Categories: string[];
    constructor(cdr: ChangeDetectorRef);
    ngOnInit(): Promise<void>;
    /**
     * Load all scopes
     */
    loadData(): Promise<void>;
    /**
     * Build tree structure from flat scopes
     */
    private buildTree;
    /**
     * Open create dialog for new scope
     */
    openCreateDialog(parentScope?: MJAPIScopeEntity | null): void;
    /**
     * Open edit dialog for existing scope
     */
    openEditDialog(scope: MJAPIScopeEntity): void;
    /**
     * Save scope (create or update)
     */
    saveScope(): Promise<void>;
    /**
     * Toggle node expansion
     */
    toggleExpanded(node: ScopeTreeNode): void;
    /**
     * Expand all nodes
     */
    expandAll(): void;
    /**
     * Collapse all nodes
     */
    collapseAll(): void;
    /**
     * Close all dialogs
     */
    closeDialogs(): void;
    /**
     * Get parent scopes for dropdown (exclude self and descendants)
     */
    getParentOptions(): MJAPIScopeEntity[];
    /**
     * Get category color
     */
    getCategoryColor(category: string | null): string;
    /**
     * Get count of total scopes
     */
    getTotalCount(): number;
    /**
     * Get count of active scopes
     */
    getActiveCount(): number;
    static ɵfac: i0.ɵɵFactoryDeclaration<APIScopesPanelComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<APIScopesPanelComponent, "mj-api-scopes-panel", never, {}, { "ScopeUpdated": "ScopeUpdated"; }, never, never, false, never>;
}
export {};
//# sourceMappingURL=api-scopes-panel.component.d.ts.map