import { default as BaseModel, IBaseModelOptions } from "./BaseModel.js";
import SetModel from "./SetModel.js";
export interface ICommitHandler {
    (): void;
}
export interface IFeatureValueChangeHandler {
    (args: IFeatureValueChangeHandlerArgs): void;
}
export interface IFeatureValueChangeHandlerArgs {
    name: string;
    oldValue: any;
    newValue: any;
    cancel?: boolean;
}
export interface IControllerModelOptions extends IBaseModelOptions {
    parent: SetModel;
}
export default class ControllerModel extends BaseModel {
    private m_parent;
    private m_events;
    constructor(options: IControllerModelOptions);
    get parent(): SetModel;
    protected onInit(): void;
    protected onActivate(): void;
    activate(): void;
    commit(): void;
    toJSON(): any;
    onValueChanged(name: string, handler: IFeatureValueChangeHandler): void;
    onValueChanged(names: Array<string>, handler: IFeatureValueChangeHandler): void;
    valueChanged(args: IFeatureValueChangeHandlerArgs): void;
    onCommit(handler: ICommitHandler): void;
}
