import { Artifact, Generation, GenerationLike } from '@dolittle/sdk.artifacts';
import { AggregateRootId, AggregateRootIdLike } from '@dolittle/sdk.events';
import { AggregateRootTypeAlias } from './AggregateRootTypeAlias';
/**
 * Represents the type of an aggregate root.
 */
export declare class AggregateRootType extends Artifact<AggregateRootId> {
    readonly alias?: AggregateRootTypeAlias | undefined;
    /**
     * Initializes a new instance of {@link EventType}.
     * @param {AggregateRootType} id - The unique identifier of the aggregate root type.
     * @param {Generation} [generation = Generation.first] - Optional generation - will default to {@link generation.first}.
     * @param {AggregateRootTypeAlias} [alias = undefined] - Optional alias.
     */
    constructor(id: AggregateRootId, generation?: Generation, alias?: AggregateRootTypeAlias | undefined);
    /**
     * Gets a value indicating whether there is an alias for the aggregate root type.
     * @returns {boolean} A value indicating whether there is an alias for the aggregate root type.
     */
    hasAlias(): boolean;
    /** @inheritdoc */
    toString(): string;
    /**
     * Creates an instance of {@link AggregateRootType}.
     * @param {AggregateRootIdLike} id - The aggregate root type id.
     * @param {GenerationLike | undefined} generation - The optional generation of the aggregate root type.
     * @returns {AggregateRootType} The created aggregate root type.
     */
    static from(id: AggregateRootIdLike, generation?: GenerationLike): AggregateRootType;
}
/**
 * Checks whether or not an object is an instance of {@link AggregateRootType}.
 * @param {any} object - The object to check.
 * @returns {boolean} True if the object is an {@link AggregateRootType}, false if not.
 */
export declare const isAggregateRootType: (object: any) => object is AggregateRootType;
//# sourceMappingURL=AggregateRootType.d.ts.map