import type { LinkContent, SliceContent, WidgetContent } from "@prismicio/types-internal/lib/content" import type { StaticSlice, StaticWidget } from "@prismicio/types-internal/lib/customtypes" import type { AnyLinkDef, DocumentLinkDef, MediaLinkDef, WebLinkDef } from "./customtypes" import type { Field, GroupOrField, Slice } from "./fetch" export interface Renderer< D extends StaticWidget, C extends WidgetContent, F extends Field | undefined = undefined, O = unknown, > { renderV1(content: C, fetch?: F | undefined, options?: O): unknown renderV2(definition: D, content: C, fetch?: F | undefined, options?: O): unknown renderDefault(definition: D): unknown renderMocks(definition: D, content: C, options?: O): unknown } export type LinkRendererOptions = { omitKey: boolean } export interface LinkRenderer< D extends MediaLinkDef | DocumentLinkDef | WebLinkDef | MediaLinkDef | AnyLinkDef, C extends LinkContent, F extends Field | undefined = undefined, O = LinkRendererOptions, > { renderV1(content: C, fetch?: F | undefined, options?: O): unknown renderV2(definition: D | AnyLinkDef, content: C, fetch?: F | undefined, options?: O): unknown renderMocks(definition: D | AnyLinkDef, content: C, options?: O): unknown } export interface SliceRenderer { renderV1(content: C, fetch?: F | undefined): unknown renderV2(definition: D, content: C, fetch?: F | undefined): unknown renderDefault(definition: D): unknown renderMocks(definition: D, content: C): unknown }