type ObjectiveStateSnapshotSource = "tool_result" | "cli" | "system" | "manual";
type ObjectiveStateSnapshotKind = "tool" | "file" | "process" | "record" | "workspace";
type ObjectiveStateChangeKind = "created" | "updated" | "deleted" | "observed" | "executed" | "failed";
type ObjectiveStateOutcome = "success" | "failure" | "partial" | "unknown";
interface ObjectiveStateValueRef {
    exists?: boolean;
    ref?: string;
    valueHash?: string;
}
interface ObjectiveStateSnapshot {
    schemaVersion: 1;
    snapshotId: string;
    recordedAt: string;
    sessionKey: string;
    source: ObjectiveStateSnapshotSource;
    kind: ObjectiveStateSnapshotKind;
    changeKind: ObjectiveStateChangeKind;
    scope: string;
    summary: string;
    toolName?: string;
    command?: string;
    outcome?: ObjectiveStateOutcome;
    before?: ObjectiveStateValueRef;
    after?: ObjectiveStateValueRef;
    entityRefs?: string[];
    tags?: string[];
    metadata?: Record<string, string>;
}
interface ObjectiveStateStoreStatus {
    enabled: boolean;
    writesEnabled: boolean;
    rootDir: string;
    snapshotsDir: string;
    snapshots: {
        total: number;
        valid: number;
        invalid: number;
        byKind: Partial<Record<ObjectiveStateSnapshotKind, number>>;
        byOutcome: Partial<Record<ObjectiveStateOutcome, number>>;
        latestSnapshotId?: string;
        latestRecordedAt?: string;
        latestSessionKey?: string;
    };
    latestSnapshot?: ObjectiveStateSnapshot;
    invalidSnapshots: Array<{
        path: string;
        error: string;
    }>;
}
interface ObjectiveStateSearchResult {
    snapshot: ObjectiveStateSnapshot;
    score: number;
}
declare function resolveObjectiveStateStoreDir(memoryDir: string, overrideDir?: string): string;
declare function validateObjectiveStateSnapshot(raw: unknown): ObjectiveStateSnapshot;
declare function recordObjectiveStateSnapshot(options: {
    memoryDir: string;
    objectiveStateStoreDir?: string;
    snapshot: ObjectiveStateSnapshot;
}): Promise<string>;
declare function getObjectiveStateStoreStatus(options: {
    memoryDir: string;
    objectiveStateStoreDir?: string;
    enabled: boolean;
    writesEnabled: boolean;
}): Promise<ObjectiveStateStoreStatus>;
declare function searchObjectiveStateSnapshots(options: {
    memoryDir: string;
    objectiveStateStoreDir?: string;
    query: string;
    maxResults: number;
    sessionKey?: string;
}): Promise<ObjectiveStateSearchResult[]>;

export { type ObjectiveStateChangeKind, type ObjectiveStateOutcome, type ObjectiveStateSearchResult, type ObjectiveStateSnapshot, type ObjectiveStateSnapshotKind, type ObjectiveStateSnapshotSource, type ObjectiveStateStoreStatus, type ObjectiveStateValueRef, getObjectiveStateStoreStatus, recordObjectiveStateSnapshot, resolveObjectiveStateStoreDir, searchObjectiveStateSnapshots, validateObjectiveStateSnapshot };
