import type { DataDomain } from '../DataDomain.js';
export interface CreateTemplateOptions {
    /**
     * The DataDomain instance to use for the template.
     * If not provided, a new DataDomain instance will be created.
     */
    domain?: DataDomain;
}
/**
 * Template metadata for UI presentation
 */
export interface DomainTemplate {
    /** Unique identifier for the template */
    id: string;
    /** Display name of the template */
    name: string;
    /** Short description of what the template does (plain text, no HTML/markdown) */
    description: string;
    /** When the template was created (ISO string) */
    createdAt: string;
    /** When the template was last updated (ISO string) */
    updatedAt: string;
    /** Template version */
    version: string;
    /** Author information */
    author: string;
    /** Template categorization tags */
    tags: string[];
    /** Detailed domain structure for UI presentation */
    structure: DomainTemplateStructure;
}
/**
 * Detailed domain structure information for UI presentation
 */
export interface DomainTemplateStructure {
    /** Domain information */
    domain: DomainInfo;
    /** List of namespaces in the domain */
    namespaces: NamespaceInfo[];
}
/**
 * Domain-level information
 */
export interface DomainInfo {
    /** Domain name */
    name: string;
    /** Domain description */
    description?: string;
    /** Total number of entities across all namespaces */
    totalEntities: number;
    /** Total number of properties across all entities */
    totalProperties: number;
    /** Total number of associations across all entities */
    totalAssociations: number;
}
/**
 * Namespace-level information
 */
export interface NamespaceInfo {
    /** Namespace name */
    name: string;
    /** Namespace display name */
    displayName?: string;
    /** Namespace description */
    description?: string;
    /** Number of models in this namespace */
    modelCount: number;
    /** Number of entities in this namespace */
    entityCount: number;
    /** List of models in this namespace */
    models: ModelInfo[];
}
/**
 * Model-level information
 */
export interface ModelInfo {
    /** Model name */
    name: string;
    /** Model display name */
    displayName?: string;
    /** Model description */
    description?: string;
    /** Number of entities in this model */
    entityCount: number;
    /** List of entities in this model */
    entities: EntityInfo[];
}
/**
 * Entity-level information for UI presentation
 */
export interface EntityInfo {
    /** Entity name */
    name: string;
    /** Entity display name */
    displayName?: string;
    /** Entity description */
    description?: string;
    /** Number of properties */
    propertyCount: number;
    /** Number of associations */
    associationCount: number;
    /** Whether this entity is deprecated */
    deprecated?: boolean;
    /** List of properties for this entity */
    properties: PropertyInfo[];
    /** List of associations for this entity */
    associations: AssociationInfo[];
    /** Applied semantic types */
    semantics: string[];
}
/**
 * Property-level information for UI presentation
 */
export interface PropertyInfo {
    /** Property name */
    name: string;
    /** Property display name */
    displayName?: string;
    /** Property description */
    description?: string;
    /** Data type (string, number, boolean, etc.) */
    type: string;
    /** Whether this property is required */
    required?: boolean;
    /** Whether this property allows multiple values */
    multiple?: boolean;
    /** Whether this property is a primary key */
    primary?: boolean;
    /** Whether this property is unique */
    unique?: boolean;
    /** Whether this property is read-only */
    readOnly?: boolean;
    /** Whether this property is write-only */
    writeOnly?: boolean;
    /** Whether this property is deprecated */
    deprecated?: boolean;
    /** Applied semantic types */
    semantics: string[];
    /** Enum values if applicable */
    enumValues?: string[];
    /** Default value if specified */
    defaultValue?: string;
}
/**
 * Association-level information for UI presentation
 */
export interface AssociationInfo {
    /** Association name */
    name: string;
    /** Association display name */
    displayName?: string;
    /** Association description */
    description?: string;
    /** Whether this association is required */
    required?: boolean;
    /** Whether this association allows multiple targets */
    multiple?: boolean;
    /** Whether this association is read-only */
    readOnly?: boolean;
    /** Target entity names this association points to */
    targetEntities: string[];
    /** Applied semantic types */
    semantics: string[];
    /** Relationship cardinality description (e.g., "One-to-Many", "Many-to-Many") */
    cardinality: string;
}
//# sourceMappingURL=types.d.ts.map