export type PropSpec<PType extends boolean | number | string> = {
    default: PType;
    values?: readonly PType[];
} | {
    default: undefined;
    type: 'string' | 'number' | 'boolean';
    values?: readonly PType[];
};
export type PropSchema = Record<string, PropSpec<boolean | number | string>>;
/**
 * BlockConfig contains the "schema" info about a Block type
 * i.e. what props it supports, what content it supports, etc.
 */
export interface BlockConfig<T extends string = string, PS extends PropSchema = PropSchema, C extends 'inline' | 'none' | 'table' = 'inline' | 'none' | 'table'> {
    /**
     * The type of the block (unique identifier within a schema)
     */
    type: T;
    /**
     * The properties that the block supports
     * @todo will be zod schema in the future
     */
    readonly propSchema: PS;
    /**
     * The content that the block supports
     */
    content: C;
}
