import { ConstructTreeNode } from './tree';
export interface DisplayNoticesProps {
    /**
     * The cloud assembly directory. Usually 'cdk.out'.
     */
    readonly outdir: string;
    /**
     * Issue numbers of notices that have been acknowledged by a user
     * of the current CDK repository. These notices will be skipped.
     */
    readonly acknowledgedIssueNumbers: number[];
    /**
     * Whether cached notices should be ignored. Setting this property
     * to true will force the CLI to download fresh data
     *
     * @default false
     */
    readonly ignoreCache?: boolean;
}
export declare function refreshNotices(): Promise<Notice[]>;
export declare function displayNotices(props: DisplayNoticesProps): Promise<number>;
export declare function generateMessage(dataSource: NoticeDataSource, props: DisplayNoticesProps): Promise<string>;
export interface FilterNoticeOptions {
    outdir?: string;
    cliVersion?: string;
    frameworkVersion?: string;
    acknowledgedIssueNumbers?: Set<number>;
}
export declare function filterNotices(data: Notice[], options: FilterNoticeOptions): Notice[];
export declare function formatNotices(data: Notice[]): string[];
export interface Component {
    name: string;
    version: string;
}
export interface Notice {
    title: string;
    issueNumber: number;
    overview: string;
    components: Component[];
    schemaVersion: string;
}
export interface NoticeDataSource {
    fetch(): Promise<Notice[]>;
}
export declare class WebsiteNoticeDataSource implements NoticeDataSource {
    fetch(): Promise<Notice[]>;
}
export declare class CachedDataSource implements NoticeDataSource {
    private readonly fileName;
    private readonly dataSource;
    private readonly skipCache?;
    constructor(fileName: string, dataSource: NoticeDataSource, skipCache?: boolean | undefined);
    fetch(): Promise<Notice[]>;
    private fetchInner;
    private load;
    private save;
}
export interface NoticeFilterProps {
    cliVersion: string;
    acknowledgedIssueNumbers: Set<number>;
    tree: ConstructTreeNode;
}
export declare class NoticeFilter {
    private readonly props;
    private readonly acknowledgedIssueNumbers;
    constructor(props: NoticeFilterProps);
    /**
     * Returns true iff we should show this notice.
     */
    apply(notice: Notice): boolean;
    /**
     * Returns true iff we should show the notice.
     */
    private applyVersion;
}
