import { EventEmitter } from "@angular/core";
import { ControlValueAccessor, NgModel } from "@angular/forms";
export declare abstract class BaseValueAccessor<T> implements ControlValueAccessor {
    protected abstract model: NgModel;
    protected innerValue: T;
    protected changed: Array<(value: any) => void>;
    protected touched: Array<() => void>;
    valueChange: EventEmitter<T>;
    value: T;
    protected updateInnerValue(value: T): void;
    touch(): void;
    writeValue(value: T): void;
    registerOnChange(fn: (value: T) => void): void;
    registerOnTouched(fn: () => void): void;
}
