import { INormalizeBeforeSubmit } from '../models';
import { IModel } from '../models/base';
import { IValidators } from '../validate';
export declare type $GetBuilderValue<T> = T extends BasicBuilder<infer V, infer _> ? V : never;
export declare type $GetBuilderModel<T> = T extends BasicBuilder<infer _, infer M> ? M : never;
export declare abstract class BasicBuilder<Value, Model extends IModel<Value>> {
    protected _validators: IValidators<Value>;
    protected _normalizeBeforeSubmit: INormalizeBeforeSubmit<Value, any>;
    normalizeBeforeSubmit<T>(normalizeBeforeSubmit: INormalizeBeforeSubmit<Value, T>): this;
    abstract build(defaultValue?: unknown): Model;
    validators(...validators: IValidators<Value>): this;
}
