import { ObjectBase } from '@awesome-nodes/object';
import { ObjectModel } from "../model";
import { IViewModel } from "./";
/**
 * Represents the base for all view models in the model-view-view-model pattern.
 * @template TModel
 */
export declare abstract class ViewModelBase<TModel extends ObjectModel> extends ObjectBase implements IViewModel<TModel> {
    private _model;
    get name(): string;
    /**
     * Returns the model instance which is associated with this view-model instance.
     */
    get model(): TModel;
    /**
     * Returns the model instance which is associated with this view-model instance.
     */
    set model(value: TModel);
    /**
     * Initializes this instance.
     * @param {TModel} model
     * @param {string} name
     */
    protected constructor(model: TModel, name?: string);
    /** @inheritDoc */
    init?(): void;
    /** @inheritDoc */
    viewInit?(): void;
    /** @inheritDoc */
    viewChecked?(): void;
    /** @inheritDoc */
    contentInit?(): void;
    /** @inheritDoc */
    contentChecked?(): void;
    /** @inheritDoc */
    changes?(changes: unknown): void;
    /** @inheritDoc */
    destroy(): void;
    /**
     * Checks equality by comparing the name property of this instance.
     * @inheritDoc
     * @param {ViewModelBase<TModel>} other
     */
    equals(other: ViewModelBase<TModel>): boolean;
}
