import { ChildAggregate } from '../meta/ChildAggregate';
import { Header } from '../meta/Header';
import { Element } from '../meta/Element';
import { AggregateInfo } from './AggregateInfo';
/**
 * Introspector for aggregate information.
 */
export declare class AggregateIntrospector {
    private static AGGREGATE_CLASSES_BY_NAME;
    private static placeholderName;
    /**
     * Get the aggregate meta information for the specified class.
     *
     * @param clazz the aggregate class.
     * @return The aggregate meta information, or null if the class isn't an aggregate.
     */
    static getAggregateInfo(clazz: any): AggregateInfo;
    private static getAncestorAggregateInfo;
    /**
     * Find the aggregate class by name.
     *
     * @param aggregateName The name of the aggregate.
     * @return The aggregate class.
     */
    static findAggregateByName(aggregateName: string): any;
    static addAggregate(clazz: any, name: string): void;
    static addChildAggregate(clazz: any, childAggregate: ChildAggregate): void;
    static addElement(clazz: any, element: Element): void;
    static addHeader(clazz: any, header: Header): void;
}
