import { PerspectiveProxy } from "../perspectives/PerspectiveProxy";
/**
 * Represents a subject in the perspective.
 * A subject is an entity that has properties and collections.
 */
export declare class Subject {
    #private;
    /**
     * Constructs a new subject.
     * @param perspective - The perspective that the subject belongs to.
     * @param baseExpression - The base expression of the subject.
     * @param subjectClass - The class of the subject.
     */
    constructor(perspective: PerspectiveProxy, baseExpression: string, subjectClass: string);
    /**
     * Gets the base expression of the subject.
     */
    get baseExpression(): string;
    /**
     * Initializes the subject by validating it and defining its properties and collections dynamically.
     *
     * NOTE: This method should be called before using the subject. All the properties and collections of the subject defined are not type-checked.
     */
    init(): Promise<void>;
}
