/**
 * Lineage Tracking Module (ADR-004, Domain 2)
 *
 * PURPOSE: Track parent-child relationships between simulation artifacts.
 * Ruvector stores lineage as first-class data, not inferred from timestamps.
 *
 * INVARIANTS ENFORCED:
 * - Invariant 1: Every simulation has a memory footprint
 * - Invariant 2: Every integration/ERP mapping derives from a simulation
 * - Invariant 3: No integration proposal without traceability
 * - Invariant 7: CLI is only path for artifact creation
 *
 * FORBIDDEN:
 * - Creating lineage without a simulation parent
 * - Querying live enterprise systems
 * - Storing credentials or tokens
 * - Business logic (lineage is structural, not behavioral)
 */
import type { LineageRecord, SimulationMemoryRecord, IntegrationProposal, ErpSurfaceMapping, ArtifactCategory, Attribution } from '../types/index.js';
/**
 * Create a lineage record for an artifact.
 * Every artifact persisted in Ruvector must have a corresponding lineage record.
 *
 * @param artifactId - The artifact this lineage entry describes
 * @param category - The type of artifact
 * @param simulationId - The parent simulation (Invariant 2)
 * @param decisionContext - The natural language input that seeded synthesis
 * @param attribution - Identity attribution (user_id, org_id)
 * @param planId - The plan this artifact belongs to (optional)
 */
export declare function createLineageRecord(artifactId: string, category: ArtifactCategory, simulationId: string, decisionContext: string, attribution: Attribution, planId?: string): LineageRecord;
/**
 * Create a simulation memory record for Ruvector persistence (Invariant 1).
 * Called when a simulation is initiated through the CLI.
 */
export declare function createSimulationMemoryRecord(id: string, intent: string, attribution: Attribution): SimulationMemoryRecord;
/**
 * Update a simulation memory record with completion data.
 */
export declare function completeSimulationMemoryRecord(record: SimulationMemoryRecord, result: unknown, artifactIds: string[]): SimulationMemoryRecord;
/**
 * Mark a simulation memory record as failed.
 */
export declare function failSimulationMemoryRecord(record: SimulationMemoryRecord, error: string): SimulationMemoryRecord;
/**
 * Create an integration proposal derived from a simulation (Invariant 2).
 * Proposals describe what would change, not what has changed.
 */
export declare function createIntegrationProposal(integrationName: string, proposedChanges: string, risks: string[], dependencies: string[], simulationId: string, attribution: Attribution, planId?: string): IntegrationProposal;
/**
 * Create an ERP Surface mapping derived from a simulation (Invariant 6).
 * ERP Surface never initiates — it receives proposed implementations.
 */
export declare function createErpSurfaceMapping(erpType: string, entityType: string, proposedImplementation: unknown, simulationId: string, integrationProposalIds: string[], attribution: Attribution): ErpSurfaceMapping;
/**
 * Validate that an artifact has a valid simulation parent.
 * Returns a validation result with specific error messaging.
 *
 * ADR-004, Invariant 3: No integration proposal exists without traceability.
 */
export declare function validateTraceability(simulationId: string | undefined, artifactType: string): {
    valid: boolean;
    message: string;
};
/**
 * Validate that a lineage chain is complete.
 * Checks that simulation → plan → artifact chain is traceable.
 */
export declare function validateLineageChain(records: LineageRecord[]): {
    complete: boolean;
    missing: string[];
};
//# sourceMappingURL=lineage.d.ts.map