import type { ConceptRef } from '../models/concept-ref.js'; /** Minimal concept shape these utilities need. */ export interface ExternalConceptLike { status?: string | null; related?: ReadonlyArray<{ type?: string; }>; } /** Lookup interface the caller provides. */ export interface ConceptStore { lookup(ref: ConceptRef | RefShape | null | undefined): ExternalConceptLike | null | undefined; } interface RefShape { source?: string | null; id?: string | null; text?: string | null; } interface MemberLike { ref?: ConceptRef | RefShape | null; } interface HyperedgeLike { comprehensive?: ConceptRef | RefShape | null; members?: ReadonlyArray; partitives?: ReadonlyArray; } export declare function isExternalConcept(concept: ExternalConceptLike | null | undefined): boolean; export declare function isExternalMember(member: MemberLike | null | undefined, store: ConceptStore): boolean; export declare function isExternalComprehensive(hyperedge: HyperedgeLike, store: ConceptStore): boolean; export declare function getExternalMembers(hyperedge: HyperedgeLike, store: ConceptStore): MemberLike[]; export declare function hasProvidedBy(concept: ExternalConceptLike | null | undefined): boolean; /** * True if any external concept (comprehensive or member) lacks a * `provided_by` edge — the decomposition dangles because there's no * way to reach the providing dataset. */ export declare function hasDanglingExternal(hyperedge: HyperedgeLike, store: ConceptStore): boolean; export {}; //# sourceMappingURL=external-detection.d.ts.map