import { CustomTypeModelLinkSelectType } from "./link.js";
import { CustomTypeModelFieldType } from "./types.js";

//#region src/types/model/contentRelationship.d.ts
/** @internal */
type CustomTypeModelFetchGroupLevel2 = {
  id: string;
  fields: ReadonlyArray<string>;
};
/** @internal */
type CustomTypeModelFetchCustomTypeLevel2 = {
  id: string;
  fields: ReadonlyArray<string | CustomTypeModelFetchGroupLevel2>;
};
/** @internal */
type CustomTypeModelFetchGroupLevel1 = {
  id: string;
  fields: ReadonlyArray<string | CustomTypeModelFetchContentRelationshipLevel1>;
};
/** @internal */
type CustomTypeModelFetchContentRelationshipLevel1 = {
  id: string;
  customtypes: ReadonlyArray<string | CustomTypeModelFetchCustomTypeLevel2>;
};
/** @internal */
type CustomTypeModelFetchCustomTypeLevel1 = {
  id: string;
  fields: ReadonlyArray<string | CustomTypeModelFetchGroupLevel1 | CustomTypeModelFetchContentRelationshipLevel1>;
};
/**
 * A content relationship custom type field.
 *
 * More details: {@link https://prismic.io/docs/content-relationship}
 */
interface CustomTypeModelContentRelationshipField<CustomTypes extends string | CustomTypeModelFetchCustomTypeLevel1 = string | CustomTypeModelFetchCustomTypeLevel1, Tags extends string = string> {
  type: typeof CustomTypeModelFieldType.Link;
  fieldset?: string | null;
  config?: {
    label?: string | null;
    placeholder?: string;
    select: typeof CustomTypeModelLinkSelectType.Document;
    customtypes?: readonly CustomTypes[];
    tags?: readonly Tags[];
  };
}
//#endregion
export { CustomTypeModelContentRelationshipField, CustomTypeModelFetchContentRelationshipLevel1, CustomTypeModelFetchCustomTypeLevel1, CustomTypeModelFetchCustomTypeLevel2, CustomTypeModelFetchGroupLevel1, CustomTypeModelFetchGroupLevel2 };
//# sourceMappingURL=contentRelationship.d.ts.map