import type { RevealCollectionConfig, RevealGlobalConfig, RevealUIField } from '../types/index.js'; import type { RelationshipMetadata } from '../types/query.js'; /** * Relationship Field Analyzer * * Analyzes a collection config and extracts all relationship fields with their metadata. * This is the foundation for depth-based relationship population. * * Based on RevealUI admin analysis: * - Simple relationships (single, no hasMany): Direct Foreign Keys * - hasMany relationships: Junction Tables * - Polymorphic relationships (relationTo array): Junction Tables with multiple FK columns */ /** * Shared type for configs that have fields and slug (collections and globals) */ type ConfigWithFields = { slug: string; fields: RevealUIField[]; }; /** * Analyzes a collection or global configuration and extracts all relationship fields * with their storage metadata for proper query building. * * @param config - The collection or global configuration to analyze * @param collectionSlug - Optional slug override (defaults to config.slug) * @returns Array of relationship metadata for all relationship fields */ export declare function getRelationshipFields(config: RevealCollectionConfig | RevealGlobalConfig | ConfigWithFields, collectionSlug?: string): RelationshipMetadata[]; /** * Validates relationship metadata for consistency and correctness. * Used during development to catch configuration errors early. */ export declare function validateRelationshipMetadata(metadata: RelationshipMetadata[]): { valid: boolean; errors: string[]; }; export {}; //# sourceMappingURL=analyzer.d.ts.map