export type SoulCaller = "birth" | "soul_patch" | "soul_journal" | "soul_feel" | "reflect" | "heartbeat" | "manual" | "migration";
/**
 * Wrap an async block so that any soul write inside it commits with the given
 * caller label. Used at tool-execute boundaries (soul_patch, soul_journal, ...)
 * and at reflect / birth entry points.
 */
export declare function withSoulCaller<T>(caller: SoulCaller, fn: () => Promise<T>): Promise<T>;
/**
 * Initialize the soul repo. Idempotent — a no-op if .git already exists. Safe
 * to call on every startup. Adds a deterministic identity (Lisa <lisa@self>)
 * so commits don't depend on the user's global git config.
 */
export declare function initSoulRepo(): Promise<void>;
/**
 * Stage the file at `relPath` (relative to SOUL_DIR) and commit if there's a
 * real diff. opKind is the high-level operation ("patch", "feel", "journal",
 * etc.). Failures are swallowed with a warn — soul history is best-effort.
 *
 * Async, but the caller is encouraged to `void` it: a slow git commit
 * shouldn't block the agent loop. We serialize commits via a tiny in-process
 * queue so concurrent writes don't race on the index.lock.
 */
export declare function commitSoulChange(relPath: string, opKind: string): Promise<void>;
export declare function gitLogOneline(opts: {
    pathRel?: string;
    limit?: number;
    since?: string;
}): Promise<string>;
export declare function gitDiffPatch(opts: {
    pathRel?: string;
    since?: string;
    limit?: number;
}): Promise<string>;
/** For tests / introspection. */
export declare function _resetGitAvailableCache(): Promise<void>;
//# sourceMappingURL=git.d.ts.map