export declare const RELATIONSHIP_SCHEMA_VERSION: "1";
export declare const RELATIONSHIP_OBJECT_KINDS: readonly ["agent", "capsule", "capsule-set", "chat", "connector", "data-source", "evidence-run", "mcp-tool", "memory", "patch-proposal", "skill", "tool", "workflow-run", "workspace-path"];
export type RelationshipObjectKind = (typeof RELATIONSHIP_OBJECT_KINDS)[number];
export declare const RELATIONSHIP_SUPPORTED_OBJECT_KINDS: readonly ["capsule", "capsule-set", "chat", "evidence-run", "memory", "patch-proposal", "tool", "workflow-run", "workspace-path"];
export type RelationshipSupportedObjectKind = (typeof RELATIONSHIP_SUPPORTED_OBJECT_KINDS)[number];
export declare const RELATIONSHIP_TYPES: readonly ["reads-context", "proposes-patch", "uses-tool", "starts-workflow", "produces-evidence", "references-document", "depends-on"];
export type RelationshipType = (typeof RELATIONSHIP_TYPES)[number];
export declare const RELATIONSHIP_LIFECYCLE_STATES: readonly ["draft", "active", "archived", "superseded", "revoked", "blocked", "stale"];
export type RelationshipLifecycleState = (typeof RELATIONSHIP_LIFECYCLE_STATES)[number];
export declare const RELATIONSHIP_ACTIVITY_STATES: readonly ["inactive", "queued", "active", "processing", "completed", "failed", "blocked", "degraded", "high-throughput"];
export type RelationshipActivityState = (typeof RELATIONSHIP_ACTIVITY_STATES)[number];
export declare const RELATIONSHIP_DENIAL_CODES: readonly ["denied/non-existent-source", "denied/non-existent-target", "denied/object-kind-not-yet-supported", "denied/source-kind-not-allowed", "denied/target-kind-not-allowed", "denied/kind-incompatible", "denied/cardinality-exceeded", "denied/cycle-forbidden", "denied/cross-workspace", "denied/path-not-contained", "denied/denied-by-deny-list", "denied/lifecycle-illegal-transition", "denied/endpoint-tombstoned", "denied/endpoint-retired", "denied/endpoint-unavailable", "denied/payload-content-not-permitted", "denied/authority-insufficient", "denied/schema-version-unsupported"];
export type RelationshipDenialCode = (typeof RELATIONSHIP_DENIAL_CODES)[number];
export type RelationshipCardinality = "1:1" | "1:N" | "N:1" | "N:N";
export type RelationshipDirection = "directed" | "undirected";
export type RelationshipEvidenceRelevance = "none" | "reference" | "produces";
export interface RelationshipTypeLifecycleFlags {
    readonly creatable: boolean;
    readonly immutable: boolean;
    readonly reconnectable: boolean;
    readonly deletable: boolean;
    readonly archivable: boolean;
}
export interface RelationshipTypeDefinition {
    readonly id: RelationshipType;
    readonly displayName: string;
    readonly semantics: string;
    readonly validSourceKinds: readonly RelationshipObjectKind[];
    readonly validTargetKinds: readonly RelationshipObjectKind[];
    readonly cardinality: RelationshipCardinality;
    readonly direction: RelationshipDirection;
    readonly lifecycle: RelationshipTypeLifecycleFlags;
    readonly auditEventOnMutation: boolean;
    readonly evidenceRelevance: RelationshipEvidenceRelevance;
    readonly ownerPackage: string;
    readonly trustBoundary: string;
}
export declare const RELATIONSHIP_TYPE_DEFINITIONS: Readonly<Record<RelationshipType, RelationshipTypeDefinition>>;
export interface ObjectReference {
    readonly kind: RelationshipObjectKind;
    readonly id: string;
    readonly workspaceId: string;
}
export interface Relationship {
    readonly id: string;
    readonly schemaVersion: typeof RELATIONSHIP_SCHEMA_VERSION;
    readonly workspaceId: string;
    readonly source: ObjectReference;
    readonly target: ObjectReference;
    readonly type: RelationshipType;
    readonly lifecycleState: RelationshipLifecycleState;
    readonly metadata?: Readonly<Record<string, unknown>>;
    readonly createdAt: string;
    readonly updatedAt: string;
    readonly etag: number;
}
export interface RelationshipCardinalityCounts {
    readonly producesEvidenceForSource?: number;
    readonly startsWorkflowForTarget?: number;
}
export type RelationshipEndpointStatus = "live" | "tombstoned" | "retired" | "unavailable" | "missing";
export interface RelationshipEndpointResolverResult {
    readonly source: RelationshipEndpointStatus;
    readonly target: RelationshipEndpointStatus;
}
export interface RelationshipValidationContext {
    readonly previousLifecycleState?: RelationshipLifecycleState;
    readonly cardinalityCounts?: RelationshipCardinalityCounts;
    readonly dependsOnReverseEdgeExists?: boolean;
    readonly endpointResolver?: RelationshipEndpointResolverResult;
}
export interface RelationshipValidationError {
    readonly code: RelationshipDenialCode;
    readonly field?: string;
    readonly message: string;
}
export declare const RELATIONSHIP_FORBIDDEN_METADATA_KEY_SUBSTRINGS: readonly ["prompt", "documentcontent", "filecontent", "toolstdout", "toolstderr", "secret", "credential", "apikey", "password", "token"];
export type RelationshipForbiddenMetadataKeySubstring = (typeof RELATIONSHIP_FORBIDDEN_METADATA_KEY_SUBSTRINGS)[number];
//# sourceMappingURL=relationships.d.ts.map