import Field from '../field';
import Fixture from '../fixture';
import { DateBuilderOptions, LoremIpsumOptions } from '../types';
import { ArrayBuilderOptions } from './array-field-builder';
import { ArrayOfFixtureBuilderOptions } from './array-of-fixture-builder';
export interface FieldTypeSelector {
    asBoolean: () => void;
    asNumber: () => void;
    asString: () => void;
    withValue: (value: string) => void;
    asConstant: (constantValue: string) => void;
    firstName: () => void;
    lastName: () => void;
    fullName: () => void;
    pickFrom: (options: any[]) => void;
    asDate: (options?: DateBuilderOptions) => void;
    fromFixture: <T>(fixture: Fixture<T>) => void;
    asArray: <T>(options?: ArrayBuilderOptions) => void;
    asEmail: () => void;
    as: <T>(fn: (increment: number) => T) => void;
    arrayOfFixture: <T>(options: ArrayOfFixtureBuilderOptions<T>) => void;
    asLoremIpsum: (options?: LoremIpsumOptions) => void;
    extends: <T>(fixture: Fixture<T>) => void;
}
export declare const fieldTypeGenerators: {
    asBoolean: (fieldName: string) => (increment: number) => Field<boolean>;
    asNumber: (fieldName: string) => (increment: number) => Field<number>;
    asString: (fieldName: string) => (increment: number) => Field<string>;
    withValue: (fieldName: string, [value]: [string]) => (increment: number) => Field<string>;
    asConstant: (fieldName: string, [constantValue]: [string]) => () => Field<string>;
    firstName: (fieldName: string) => () => Field<any>;
    lastName: (fieldName: string) => () => Field<any>;
    fullName: (fieldName: string) => () => Field<string>;
    pickFrom: (fieldName: string, [options]: [any[]]) => (increment: number) => Field<any>;
    asDate: (fieldName: string, [options]?: [(DateBuilderOptions | undefined)?]) => (increment: number) => Field<Date>;
    fromFixture: <T>(fieldName: string, [fixture]: [Fixture<T>]) => (increment: number) => Field<T>;
    asArray: (fieldName: string, [options]: [ArrayBuilderOptions]) => () => Field<string[]>;
    asEmail: (fieldName: string) => (increment: number) => Field<string>;
    as: <T_1>(fieldName: string, [func]: [(inc: number) => T_1]) => (increment: number) => Field<T_1>;
    arrayOfFixture: <T_2>(fieldName: string, [{ fixture, count }]: ArrayOfFixtureBuilderOptions<T_2>[]) => (increment: number) => Field<T_2[]>;
    asLoremIpsum: (fieldName: string, [options]: [(Partial<LoremIpsumOptions> | undefined)?]) => (increment: number) => Field<string>;
};
