import { SortedSet } from '../collections/SortedSet'; import { ChildAggregate } from '../meta/ChildAggregate'; import { Element } from '../meta/Element'; import { Header } from '../meta/Header'; import { AggregateAttribute } from './AggregateAttribute'; export interface HeaderMap { [key: string]: Header; } export interface HeaderValues { [key: string]: Object; } /** * Holder for meta information about an aggregate class. */ export declare class AggregateInfo { private name; private attributes; private headers; private owner; constructor(name: string, owner: any, parentInfo?: AggregateInfo); /** * The name of the aggregate. * * @return The name of the aggregate. */ getName(): string; setName(name: string): void; getOwner(): any; /** * The attributes. * * @return The attributes. */ getAttributes(): SortedSet; /** * Get the attribute by the specified name. * * @param name The name of the attribute. * @param orderHint The order at which the attribute should come after in case there are more than one candidates. * @param assignableTo The class this attribute must be assignable to * @return The attribute by the specified name, * or if there are more than one by that name, * the first one after the specified order, * or if there are none then the first collection that * comes after the order hint, or the latest if there * are none that come after the order hint, or null. */ getAttribute(name: string, orderHint: number, assignableTo?: any): AggregateAttribute; /** * Whether this aggregate has headers. * * @return Whether this aggregate has headers. */ hasHeaders(): boolean; /** * Get the headers defined by the specific aggregate instance. * * @param instance The aggregate instance. * @return The headers. */ getHeaders(instance: Object): HeaderValues; /** * The type of the specified header. * * @param name The header name. * @return The header type, or null if no header by the specified name exists. */ getHeaderType(name: string): any; /** * Set the header value for the specified instance. * * @param instance The instance. * @param name The name of the header. * @param value the value of the header. */ setHeader(instance: Object, name: string, value: Object): void; addChildAggregate(childAggregate: ChildAggregate): void; addElement(element: Element): void; addHeader(header: Header): void; }