import type { CustomTypeModelField } from "./types" /** * A Prismic custom type model. * * @typeParam ID - API ID of the custom type. * @typeParam Definition - The custom type's tabs and their fields. */ export interface CustomTypeModel< ID extends string = string, Definition extends CustomTypeModelDefinition = CustomTypeModelDefinition, > { /** The ID of the custom type model. */ id: ID /** The human readable name of the custom type model. */ // TODO: Revert to `label?: string | null` if `label` can be partial in: https://github.com/prismicio/prismic-types-internal/blob/HEAD/src/customtypes/CustomType.ts#L39 label: string | null | undefined /** * The format of the custom type model. * * Fallback to "custom" if undefined. */ format?: "page" | "custom" /** Determines if more than one document for the custom type can be created. */ repeatable: boolean /** The custom type model definition. */ json: Definition /** Determines if new documents for the custom type can be created. */ status: boolean } /** * A Prismic custom type's tabs and their fields. * * @typeParam TabName - Names of custom type tabs. */ export type CustomTypeModelDefinition = Record< TabName, CustomTypeModelTab > /** * A custom type's tab. Each tab can contain any number of fields but is limited to one Slice Zone. * * @typeParam FieldName - API IDs of the fields. */ export type CustomTypeModelTab< Fields extends Record = Record, > = Fields