/**
 * @fileoverview Classify · Seed-taxonomy review.
 *
 * Calls the server-side `GenerateSeedTaxonomy` GraphQL mutation (which samples a
 * source's content and proposes a tag tree), renders the proposal as a checkbox
 * tree with inline rename, and — on Accept — persists the selected nodes as
 * `MJ: Tags` (parent/child wired via ParentID). Used standalone on the Tags /
 * Taxonomy area and embedded inside the setup wizard's Taxonomy step.
 *
 * The mutation is invoked through the first-class transport helper
 * `GraphQLClassifyClient` (constructed from the threaded `ProviderToUse`,
 * narrowed to the concrete `GraphQLDataProvider` it is at runtime), which
 * returns a strongly-typed `SeedTaxonomyResult` — no inline GraphQL or manual
 * JSON parsing in the component.
 */
import { EventEmitter } from '@angular/core';
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
import * as i0 from "@angular/core";
/** Editable view-model node — adds selection + rename + a stable key for tracking. */
export interface SeedTaxonomyNode {
    Key: string;
    Name: string;
    Description?: string;
    MemberCount?: number;
    Selected: boolean;
    Renaming: boolean;
    Depth: number;
    Children: SeedTaxonomyNode[];
}
export declare class ClassifySeedTaxonomyComponent extends BaseAngularComponent {
    private cdr;
    /** The content source to sample for the taxonomy proposal. */
    SourceID: string | null;
    /** How many items to sample (passed to the mutation). */
    SampleSize: number;
    /** Optional parent tag ID under which accepted root nodes are created. */
    ParentTagID: string | null;
    /** Emitted after Accept persists tags, with the count created. */
    Accepted: EventEmitter<{
        Created: number;
    }>;
    IsGenerating: boolean;
    IsAccepting: boolean;
    ProposedNodes: SeedTaxonomyNode[];
    HasGenerated: boolean;
    LastMethod: string | null;
    LastSampleSize: number | null;
    private keySeq;
    /** True when at least one node is checked. */
    get HasSelection(): boolean;
    /** Count of currently-selected nodes (template-facing). */
    get SelectedCount(): number;
    private countSelected;
    /** Call the GenerateSeedTaxonomy mutation and render the proposal. */
    Generate(): Promise<void>;
    private toViewModel;
    /** Toggle a node's selection, cascading to descendants. */
    ToggleNode(node: SeedTaxonomyNode): void;
    private setSelectedRecursive;
    StartRename(node: SeedTaxonomyNode): void;
    CommitRename(node: SeedTaxonomyNode, value: string): void;
    /** Flatten the visible tree for the template (depth-first), preserving order. */
    get FlatNodes(): SeedTaxonomyNode[];
    /**
     * Persist every selected node as an `MJ: Tags` record. Parent/child links use
     * ParentID; root nodes use the optional ParentTagID input. Walks the tree
     * top-down so a parent's saved ID is available when creating its children.
     */
    AcceptSelected(): Promise<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<ClassifySeedTaxonomyComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ClassifySeedTaxonomyComponent, "classify-seed-taxonomy", never, { "SourceID": { "alias": "SourceID"; "required": false; }; "SampleSize": { "alias": "SampleSize"; "required": false; }; "ParentTagID": { "alias": "ParentTagID"; "required": false; }; }, { "Accepted": "Accepted"; }, never, never, false, never>;
}
//# sourceMappingURL=classify-seed-taxonomy.component.d.ts.map