import { ReactElement, ReactNode } from 'react'; import { BasicFormField, ComponentSchema, ObjectField, ParsedValueForComponentSchema, SlugFormField } from "./form/api.js"; import { Config } from "./index.js"; type WrapperComponentConfig> = { label: string; description?: string; icon?: ReactElement; schema: Schema; forSpecificLocations?: boolean; } & ({ ContentView?: (props: { value: ParsedValueForComponentSchema>; children: ReactNode; }) => ReactNode; } | { NodeView?: (props: { value: ParsedValueForComponentSchema>; onChange(value: ParsedValueForComponentSchema>): void; onRemove(): void; isSelected: boolean; children: ReactNode; }) => ReactNode; }); type WrapperComponent> = WrapperComponentConfig & { kind: 'wrapper'; }; export declare function wrapper>(config: WrapperComponentConfig): WrapperComponent; type BlockComponentConfig> = { label: string; description?: string; icon?: ReactElement; schema: Schema; forSpecificLocations?: boolean; } & ({ ContentView?: (props: { value: ParsedValueForComponentSchema>; }) => ReactNode; } | { NodeView?: (props: { value: ParsedValueForComponentSchema>; onChange(value: ParsedValueForComponentSchema>): void; onRemove(): void; isSelected: boolean; }) => ReactNode; }); type BlockComponent> = BlockComponentConfig & { kind: 'block'; handleFile?: (file: File, config: Config) => false | Promise>>; }; export declare function block>(config: BlockComponentConfig): BlockComponent; type InlineComponentConfig> = { label: string; description?: string; icon?: ReactElement; schema: Schema; ToolbarView?(props: { value: ParsedValueForComponentSchema>; onChange(value: ParsedValueForComponentSchema>): void; onRemove(): void; }): ReactNode; } & ({ ContentView?: (props: { value: ParsedValueForComponentSchema>; }) => ReactNode; } | { NodeView?: (props: { value: ParsedValueForComponentSchema>; onChange(value: ParsedValueForComponentSchema>): void; onRemove(): void; isSelected: boolean; }) => ReactNode; }); type InlineComponent> = InlineComponentConfig & { kind: 'inline'; handleFile?: (file: File, config: Config) => false | Promise>>; }; export declare function inline>(config: InlineComponentConfig): InlineComponent; type Thing> = T | { method(props: { value: ParsedValueForComponentSchema>; }): T; }['method']; type MarkComponentConfig> = { label: string; icon: ReactElement; schema: Schema; tag?: 'span' | 'strong' | 'em' | 'u' | 'del' | 'code' | 'a' | 'sub' | 'sup' | 'kbd' | 'abbr' | 'mark' | 's' | 'small' | 'big'; style?: Thing<{ [key: string]: string; }, Schema>; className?: Thing; }; type MarkComponent> = MarkComponentConfig & { kind: 'mark'; }; export declare function mark>(config: MarkComponentConfig): MarkComponent; type RepeatingComponentConfig> = WrapperComponentConfig & { children: string | string[]; validation?: { children?: { min?: number; max?: number; }; }; }; type RepeatingComponent> = WrapperComponentConfig & { kind: 'repeating'; children: string[]; validation: { children: { min: number; max: number; }; }; }; export declare function repeating>(config: RepeatingComponentConfig): RepeatingComponent; export type ContentComponent = WrapperComponent> | BlockComponent> | RepeatingComponent> | InlineComponent> | MarkComponent>; export declare function cloudImage(args: { label: string; }): BlockComponent<{ src: SlugFormField; alt: SlugFormField; height: BasicFormField; width: BasicFormField; }>; export {};