import { IKosDataModel, IKosModel, IKosVisitor } from '../core/kosModel';
/**
 * Represents a base class for visiting and processing Kos data models.
 *
 * @abstract
 * @implements IKosVisitor<IKosModel>
 * @category Core
 * @kosService core.kos-model
 * @kosApiLevel 2
 */
export declare abstract class KosModelVisitor implements IKosVisitor<IKosModel> {
    /**
     * A set to keep track of visited model IDs to prevent redundant visits.
     */
    visitedModels: Set<string>;
    /**
     * Initializes a new instance of the KosModelVisitor class.
     */
    constructor();
    /**
     * Starts the visiting process from a root Kos data model.
     *
     * @param rootModel - The root Kos data model to start visiting from.
     * @throws An error if the rootModel does not have an ID or if it cannot be found.
     */
    start(rootModel: IKosDataModel): void;
    /**
     * Visits and processes a Kos model.
     *
     * @param model - The Kos model to visit and process.
     */
    visit(model: IKosModel): void;
    /**
     * Abstract method to visit and process a Kos data model.
     *
     * @param model - The Kos data model to visit and process.
     * @param context - The KosModelVisitor instance for context.
     * @returns `true` to stop visiting further models, or `false` or `undefined` to continue visiting.
     */
    abstract visitModel<T extends IKosDataModel = IKosDataModel>(model: T, context: KosModelVisitor): boolean | void;
}
//# sourceMappingURL=kos-model-visitor.d.ts.map