import { type SessionBlob } from "dp-shared";
export interface SessionMeta {
    /** sha256 hash of the current center-published OmniFlow session JSON. */
    content_hash: string;
    /** ISO timestamp when this artifact was last synced locally. */
    last_local_modified_at: string;
    /** ISO timestamp when this content_hash was pulled from center. */
    synced_at: string;
}
export interface SyncOmniFlowSessionDeps {
    fetchUrlToBuffer: (url: string) => Promise<Uint8Array>;
    now?: () => number;
}
export interface SyncOmniFlowSessionResult {
    status: "applied" | "skipped";
    reason?: "hash-match";
    content_hash: string;
    path: string;
}
export declare function sessionMetaPath(workspace: string): string;
export declare function omniFlowSessionPath(workspace: string): string;
export declare function readLocalSessionMeta(workspace: string): Promise<SessionMeta | null>;
export declare function writeLocalSessionMeta(workspace: string, meta: SessionMeta): Promise<void>;
export declare function syncOmniFlowSessionBlob(workspace: string, blob: SessionBlob, depsOverride?: Partial<SyncOmniFlowSessionDeps>): Promise<SyncOmniFlowSessionResult>;
