import { Spec, SpecType, Model, SpecPool } from 'pretur.spec';
import { State } from './clay';
import { Value } from './Value';
import { Record } from './Record';
import { Set } from './Set';
export declare type Fields<T extends SpecType> = {
    [P in keyof T['fields']]: Value<T['fields'][P]>;
} & {
    [P in keyof T['records']]: Record<T['records'][P]>;
} & {
    [P in keyof T['sets']]: Set<T['sets'][P]>;
};
export declare function buildFields<T extends SpecType>(pool: SpecPool, spec: Spec<T>, values?: Partial<Model<T>>): Fields<T>;
export declare function buildRecord<T extends SpecType>(pool: SpecPool, spec: Spec<T>, values?: Partial<Model<T>>, state?: State): Record<T>;
export declare function buildSet<T extends SpecType>(pool: SpecPool, spec: Spec<T>, items?: Partial<Model<T>>[]): Set<T>;
