import { PropertyDescriptorParams, PropertyDescriptor } from "./PropertyDescriptor";
export interface ChildAggregateParams<T> extends PropertyDescriptorParams<T> {
    order: number;
    name?: string;
    required?: boolean;
    collectionEntryType?: any;
}
/**
 * Marks a method as providing a child aggregate (or set of them to a top-level aggregate).
 */
export declare class ChildAggregate extends PropertyDescriptor {
    private _name;
    private _required;
    private _order;
    private _collectionEntryType;
    constructor(params: ChildAggregateParams<any>);
    /**
     * Used to specify the name of the aggregate in its context as a child aggregate.
     *
     * @return Used to specify the name of the aggregate in its context as a child aggregate.
     */
    name(): string;
    /**
     * Whether this aggregate is required.
     *
     * @return Whether this aggregate is required.
     */
    required(): boolean;
    /**
     * The order this child aggregate comes in its parent aggregate.
     *
     * @return The order this child aggregate comes in its parent aggregate.
     */
    order(): number;
    /**
     * If the type is a collection, return the type of the elements of the collection (otherwise null)
     */
    collectionEntryType(): any;
}
