import { type IoDefaultMessages } from '../io/private';
import type { BootstrappedEnvironment, Notice } from './types';
export interface NoticesFilterFilterOptions {
    readonly data: Notice[];
    readonly cliVersion: string;
    readonly outDir: string;
    readonly bootstrappedEnvironments: BootstrappedEnvironment[];
}
export declare class NoticesFilter {
    private readonly ioMessages;
    constructor(ioMessages: IoDefaultMessages);
    filter(options: NoticesFilterFilterOptions): FilteredNotice[];
    /**
     * From a set of input options, return the notices components we are searching for
     */
    private otherComponents;
    /**
     * Based on a set of component names, find all notices that match one of the given components
     */
    private findForNamedComponents;
    /**
     * Whether the given "affected component" name applies to the given actual component name.
     *
     * The name matches if the name is exactly the same, or the name in the notice
     * is a prefix of the node name when the query ends in '.'.
     */
    private componentNameMatches;
    /**
     * Adds dynamic values from the given ActualComponents
     *
     * If there are multiple components with the same dynamic name, they are joined
     * by a comma.
     */
    private addDynamicValues;
    /**
     * Treat 'framework' as an alias for either `aws-cdk-lib.` or `@aws-cdk/core.`.
     *
     * Because it's EITHER `aws-cdk-lib` or `@aws-cdk/core`, we need to add multiple
     * arrays at the top level.
     */
    private resolveAliases;
    /**
     * Load the construct tree from the given directory and return its components
     */
    private constructTreeComponents;
}
/**
 * Notice after passing the filter. A filter can augment a notice with
 * dynamic values as it has access to the dynamic matching data.
 */
export declare class FilteredNotice {
    readonly notice: Notice;
    private readonly dynamicValues;
    constructor(notice: Notice);
    addDynamicValue(key: string, value: string): void;
    format(): string;
    private formatOverview;
    private resolveDynamicValues;
}
