import * as prismic from "@prismicio/client";
import { Faker } from "../lib/createFaker";
import { GroupFieldModelMap, NestedGroupFieldModelMap, Seed, SlicePrimaryFieldModelMap, WithoutFakerConfig } from "../types";
import { MockBooleanModelConfig } from "./boolean";
import { BuildMockGroupFieldMapConfig } from "./buildMockGroupFieldMap";
import { MockColorModelConfig } from "./color";
import { MockContentRelationshipModelConfig } from "./contentRelationship";
import { MockCustomTypeModelConfig } from "./customType";
import { MockDateModelConfig } from "./date";
import { MockEmbedModelConfig } from "./embed";
import { MockGeoPointModelConfig } from "./geoPoint";
import { MockGroupModelConfig } from "./group";
import { MockImageModelConfig } from "./image";
import { MockIntegrationFieldModelConfig } from "./integration";
import { MockKeyTextModelConfig } from "./keyText";
import { MockLinkModelConfig } from "./link";
import { MockLinkToMediaModelConfig } from "./linkToMedia";
import { MockNumberModelConfig } from "./number";
import { MockRichTextModelConfig } from "./richText";
import { MockSelectModelConfig } from "./select";
import { MockSharedSliceModelConfig } from "./sharedSlice";
import { MockSharedSliceVariationModelConfig } from "./sharedSliceVariation";
import { MockSliceModelConfig } from "./slice";
import { MockSliceZoneModelConfig } from "./sliceZone";
import { MockTimestampModelConfig } from "./timestamp";
import { MockTitleModelConfig } from "./title";
import { MockUIDModelConfig } from "./uid";
import { MockTableModelConfig } from "./table";
export declare const createModelMockFactory: (config: ModelMockFactoryConfig) => ModelMockFactory;
type ModelMockFactoryConfig = {
    seed: Seed;
} | {
    faker: Faker;
};
export declare class ModelMockFactory {
    private faker;
    constructor(config: ModelMockFactoryConfig);
    get seed(): Seed;
    buildMockGroupFieldMap(config?: WithoutFakerConfig<BuildMockGroupFieldMapConfig>): NestedGroupFieldModelMap;
    boolean(config?: WithoutFakerConfig<MockBooleanModelConfig>): prismic.CustomTypeModelBooleanField;
    color(config?: WithoutFakerConfig<MockColorModelConfig>): prismic.CustomTypeModelColorField;
    contentRelationship<CustomTypeIDs extends string, Tags extends string>(config?: WithoutFakerConfig<MockContentRelationshipModelConfig<CustomTypeIDs, Tags>>): prismic.CustomTypeModelContentRelationshipField<CustomTypeIDs, Tags>;
    customType<Definition extends prismic.CustomTypeModelTab | prismic.CustomTypeModelDefinition>(config?: WithoutFakerConfig<MockCustomTypeModelConfig<Definition>>): (Definition extends Record<string, prismic.CustomTypeModelField> ? prismic.CustomTypeModel<string, Record<"Main", Definition>> : Definition extends prismic.CustomTypeModelDefinition ? prismic.CustomTypeModel<string, Definition> : never) & {
        label: string;
    };
    date(config?: WithoutFakerConfig<MockDateModelConfig>): prismic.CustomTypeModelDateField;
    embed(config?: WithoutFakerConfig<MockEmbedModelConfig>): prismic.CustomTypeModelEmbedField;
    geoPoint(config?: WithoutFakerConfig<MockGeoPointModelConfig>): prismic.CustomTypeModelGeoPointField;
    group<Fields extends GroupFieldModelMap>(config?: WithoutFakerConfig<MockGroupModelConfig<Fields>>): prismic.CustomTypeModelGroupField<Fields>;
    image<ThumbnailNames extends string = string>(config?: WithoutFakerConfig<MockImageModelConfig<ThumbnailNames>>): prismic.CustomTypeModelImageField<ThumbnailNames>;
    integration(config?: WithoutFakerConfig<MockIntegrationFieldModelConfig>): prismic.CustomTypeModelIntegrationField;
    keyText(config?: WithoutFakerConfig<MockKeyTextModelConfig>): prismic.CustomTypeModelKeyTextField;
    link<AllowTargetBlank extends boolean = boolean>(config?: WithoutFakerConfig<MockLinkModelConfig<AllowTargetBlank>>): prismic.CustomTypeModelLinkField & {
        config: AllowTargetBlank extends true ? {
            allowTargetBlank: true;
        } : {
            allowTargetBlank?: undefined;
        };
    } & {
        config: {
            allowText: true;
        } | {
            allowText?: undefined;
        };
    } & {
        config: {
            repeat: true;
        } | {
            repeat?: undefined;
        };
    };
    linkToMedia(config?: WithoutFakerConfig<MockLinkToMediaModelConfig>): prismic.CustomTypeModelLinkToMediaField & {
        config: {
            allowText: true;
        } | {
            allowText?: undefined;
        };
    };
    number(config?: WithoutFakerConfig<MockNumberModelConfig>): prismic.CustomTypeModelNumberField;
    richText<WithMultipleBlocks extends boolean = boolean>(config?: WithoutFakerConfig<MockRichTextModelConfig<WithMultipleBlocks>>): WithMultipleBlocks extends true ? prismic.CustomTypeModelRichTextMultiField : prismic.CustomTypeModelRichTextSingleField;
    select<Option extends string, DefaultOption extends Option>(config?: WithoutFakerConfig<MockSelectModelConfig<Option, DefaultOption>>): prismic.CustomTypeModelSelectField<Option, DefaultOption>;
    sharedSlice<Variation extends prismic.SharedSliceModelVariation>(config?: WithoutFakerConfig<MockSharedSliceModelConfig<Variation>>): prismic.SharedSliceModel<string, Variation>;
    sharedSliceChoice(): prismic.CustomTypeModelSharedSlice;
    sharedSliceVariation<ID extends string, PrimaryFields extends SlicePrimaryFieldModelMap, ItemsFields extends NestedGroupFieldModelMap>(config?: WithoutFakerConfig<MockSharedSliceVariationModelConfig<ID, PrimaryFields, ItemsFields>>): prismic.SharedSliceModelVariation<ID, PrimaryFields, ItemsFields>;
    slice<NonRepeatFields extends NestedGroupFieldModelMap, RepeatFields extends NestedGroupFieldModelMap>(config?: WithoutFakerConfig<MockSliceModelConfig<NonRepeatFields, RepeatFields>>): prismic.CustomTypeModelSlice<NonRepeatFields, RepeatFields>;
    sliceZone<Slices extends Record<string, prismic.CustomTypeModelSlice | prismic.CustomTypeModelSharedSlice>>(config?: WithoutFakerConfig<MockSliceZoneModelConfig<Slices>>): prismic.CustomTypeModelSliceZoneField<Slices>;
    table(config?: WithoutFakerConfig<MockTableModelConfig>): prismic.CustomTypeModelTableField;
    timestamp(config?: WithoutFakerConfig<MockTimestampModelConfig>): prismic.CustomTypeModelTimestampField;
    title(config?: WithoutFakerConfig<MockTitleModelConfig>): prismic.CustomTypeModelRichTextSingleField;
    uid(config?: WithoutFakerConfig<MockUIDModelConfig>): prismic.CustomTypeModelUIDField;
}
export {};
