import { Props } from '../../interfaces/Props';
export interface IEntity<Id_T> {
    id?: Id_T;
    version?: number;
    isDiscarded?: boolean;
    registeredAt?: Date;
    updatedAt?: Date;
}
export declare abstract class Entity<Id_T> implements IEntity<Id_T> {
    private _id;
    private _version;
    private _isDiscarded;
    private _registeredAt;
    private _updatedAt;
    constructor(id: Id_T, version: number, isDiscarded: boolean, registeredAt: Date, updatedAt: Date);
    protected check_not_discarded(): void;
    protected baseRepr(identifier: string, props?: Props): string;
    abstract toString(): string;
    toHash(): string;
    equals(other: any): boolean;
    get id(): Id_T;
    set id(value: Id_T);
    get version(): number;
    get isDiscarded(): boolean;
    get registeredAt(): Date;
    get updatedAt(): Date;
    get props(): Props;
    update(): void;
    private _update;
    discard(): void;
}
