import { LitElement, nothing, type PropertyValues, type TemplateResult } from 'lit';
import type { DomainValidation } from '@api-client/core/modeling/validation/rules.js';
import type { DataDomain } from '@api-client/core/browser.js';
/**
 * An element that specializes in displaying a domain validation report.
 * It is used in the context of the domain validation process.
 *
 * The report is generated elsewhere and passed to this element for display.
 *
 * @fires openissue {CustomEvent<SchemaSelectionInfo>} Fired when the user clicks on the "Open" button
 *   of a validation issue.
 *   The detail contains `SchemaSelectionInfo` with the entity/property/association to navigate to.
 * @fires autofix - Fired when the user clicks on the "Auto fix" button.
 */
export default class DomainValidationReport extends LitElement {
    #private;
    /**
     * The generated report of domain validation.
     */
    accessor report: DomainValidation[];
    /**
     * The domain that was validated.
     * This is used to provide context for the validation report.
     */
    accessor domain: DataDomain | undefined;
    /**
     * When set to true, the UI will include an "Auto fix" button
     * that allows the user to attempt to automatically fix issues in the report.
     * The host must handle the `autofix` event to perform the actual fixing.
     * @attribute
     */
    accessor withAutoFix: boolean;
    /**
     * The number of issues with the severity of "info".
     */
    accessor infoCount: number;
    /**
     * The number of issues with the severity of "warning".
     */
    accessor warningCount: number;
    /**
     * The number of issues with the severity of "error".
     */
    accessor errorCount: number;
    /**
     * Controls which severity levels are currently shown.
     * Determines which validation messages are filtered and displayed.
     */
    accessor visibleSeverities: Set<"error" | "info" | "warning">;
    /**
     * Cached filtered report based on current severity filters.
     * This improves performance by avoiding re-filtering on every render.
     */
    accessor filteredReport: DomainValidation[];
    protected willUpdate(cp: PropertyValues<this>): void;
    /**
     * Computes the number of issues in the report based on their severity.
     * This method is called whenever the `report` is updated.
     */
    protected computeIssueCounters(): void;
    /**
     * Sets the default filters based on available issues.
     * By default shows errors. If no errors, shows warnings. Never shows notices by default.
     */
    protected setDefaultFilters(): void;
    /**
     * Updates the filtered report based on the current severity filters.
     * This method is called whenever the visibility filters change.
     */
    protected updateFilteredReport(): void;
    /**
     * Handles the filter button click events.
     * Toggles the visibility of validation messages by severity.
     */
    protected handleFilterClick(e: Event): void;
    /**
     * A handler for the "Open" button click event.
     * It prepares the Intent data to be used to run the activity
     * that will open the corresponding issue.
     */
    protected handleOpenIssue(e: Event): void;
    handleAutoFix(): void;
    render(): TemplateResult | typeof nothing;
}
//# sourceMappingURL=DomainValidationReport.d.ts.map