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.
     */
    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<TabName extends string = string> = 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<string, CustomTypeModelField> = Record<string, CustomTypeModelField>> = Fields;
