import { Faker } from "../lib/createFaker.js";
import { GroupFieldModelMap, NestedGroupFieldModelMap, Seed, SlicePrimaryFieldModelMap, WithoutFakerConfig } from "../types.js";
import { MockBooleanModelConfig } from "./boolean.js";
import { MockColorModelConfig } from "./color.js";
import { MockContentRelationshipModelConfig } from "./contentRelationship.js";
import { MockCustomTypeModelConfig, customType } from "./customType.js";
import { MockDateModelConfig } from "./date.js";
import { MockEmbedModelConfig } from "./embed.js";
import { MockGeoPointModelConfig } from "./geoPoint.js";
import { MockGroupModelConfig } from "./group.js";
import { MockImageModelConfig } from "./image.js";
import { MockIntegrationFieldModelConfig } from "./integration.js";
import { MockKeyTextModelConfig } from "./keyText.js";
import { MockLinkModelConfig, link } from "./link.js";
import { MockLinkToMediaModelConfig, linkToMedia } from "./linkToMedia.js";
import { MockNumberModelConfig } from "./number.js";
import { MockRichTextModelConfig, richText } from "./richText.js";
import { MockSelectModelConfig } from "./select.js";
import { MockSharedSliceModelConfig } from "./sharedSlice.js";
import { MockSharedSliceVariationModelConfig } from "./sharedSliceVariation.js";
import { MockSliceModelConfig } from "./slice.js";
import { MockSliceZoneModelConfig } from "./sliceZone.js";
import { MockTimestampModelConfig } from "./timestamp.js";
import { MockTitleModelConfig } from "./title.js";
import { MockUIDModelConfig } from "./uid.js";
import { MockTableModelConfig } from "./table.js";
import { BuildMockGroupFieldMapConfig } from "./buildMockGroupFieldMap.js";
import * as prismic from "@prismicio/client";

//#region src/model/createModelMockFactory.d.ts
declare const createModelMockFactory: (...args: ConstructorParameters<typeof ModelMockFactory>) => ModelMockFactory;
type ModelMockFactoryConfig = {
  seed: Seed;
} | {
  faker: Faker;
};
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>>): ReturnType<typeof customType<Definition>>;
  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>>): ReturnType<typeof link<AllowTargetBlank>>;
  linkToMedia(config?: WithoutFakerConfig<MockLinkToMediaModelConfig>): ReturnType<typeof linkToMedia>;
  number(config?: WithoutFakerConfig<MockNumberModelConfig>): prismic.CustomTypeModelNumberField;
  richText<WithMultipleBlocks extends boolean = boolean>(config?: WithoutFakerConfig<MockRichTextModelConfig<WithMultipleBlocks>>): ReturnType<typeof richText<WithMultipleBlocks>>;
  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.CustomTypeModelTitleField;
  uid(config?: WithoutFakerConfig<MockUIDModelConfig>): prismic.CustomTypeModelUIDField;
}
//#endregion
export { ModelMockFactory, createModelMockFactory };
//# sourceMappingURL=createModelMockFactory.d.ts.map