/**
 * Relationships Service for Relationship Types (FU-059)
 *
 * Manages first-class typed relationships between entities.
 * Updated to use relationship observations and snapshots.
 */
import type { RelationshipSnapshot } from "../reducers/relationship_reducer.js";
export type RelationshipType = "PART_OF" | "CORRECTS" | "REFERS_TO" | "SETTLES" | "DUPLICATE_OF" | "DEPENDS_ON" | "SUPERSEDES" | "EMBEDS" | "works_at" | "owns" | "manages" | "part_of" | "related_to" | "depends_on" | "references" | "transacted_with" | "member_of" | "reports_to" | "located_at" | "created_by" | "funded_by" | "acquired_by" | "subsidiary_of" | "partner_of" | "competitor_of" | "supplies_to" | "contracted_with" | "invested_in";
export interface Relationship {
    id: string;
    relationship_type: RelationshipType;
    source_entity_id: string;
    target_entity_id: string;
    metadata: Record<string, unknown>;
    created_at: string;
    user_id: string;
}
export declare class RelationshipsService {
    private validTypes;
    /**
     * Create relationship (creates observation and snapshot)
     */
    createRelationship(params: {
        relationship_type: RelationshipType;
        source_entity_id: string;
        target_entity_id: string;
        source_id?: string | null;
        source_peer_id?: string;
        metadata?: Record<string, unknown>;
        user_id: string;
    }): Promise<RelationshipSnapshot>;
    /**
     * Get relationship snapshots for entity (replaces getRelationshipsForEntity)
     *
     * Filters deleted relationships by default.
     */
    getRelationshipsForEntity(entityId: string, direction?: "outgoing" | "incoming" | "both", includeDeleted?: boolean): Promise<RelationshipSnapshot[]>;
    /**
     * Get relationship snapshots by type
     *
     * Filters deleted relationships by default.
     */
    getRelationshipsByType(type: RelationshipType, includeDeleted?: boolean): Promise<RelationshipSnapshot[]>;
    /**
     * Get a specific relationship snapshot
     *
     * Returns null if relationship is deleted (unless explicitly requested).
     */
    getRelationshipSnapshot(relationshipType: RelationshipType, sourceEntityId: string, targetEntityId: string, userId: string, includeDeleted?: boolean): Promise<RelationshipSnapshot | null>;
    /**
     * Compute or recompute snapshot for a relationship
     */
    computeRelationshipSnapshot(relationshipType: RelationshipType, sourceEntityId: string, targetEntityId: string, userId: string): Promise<RelationshipSnapshot>;
}
export declare const relationshipsService: RelationshipsService;
//# sourceMappingURL=relationships.d.ts.map