import type { TSchema } from "@sinclair/typebox"

export interface BaseSchemaDefinition {
  schema: TSchema
  publicSchema?: TSchema
  name: string
}

export interface SchemaDefinition extends BaseSchemaDefinition {
  isCore: boolean
  pluginKey?: string
}

export type PluginSchemaDefinition = BaseSchemaDefinition

export type SchemaRegistry = {
  register: (def: SchemaDefinition) => void
  getAll: () => SchemaDefinition[]
}
