import { readDesireProgress } from "./store.js";
import type { ToolDefinition } from "../types.js";
interface SoulPatchInput {
    field: "name" | "identity" | "purpose" | "constitution" | "value" | "opinion" | "desire";
    /** For full-text fields (name/identity/purpose/constitution): the new full content. */
    content?: string;
    /** For value/opinion/desire: the slug to create or update. */
    slug?: string;
    /** Value-specific fields. */
    title?: string;
    body?: string;
    /** Opinion-specific fields. */
    stance?: string;
    confidence?: number;
    evidence?: string[];
    /** Desire-specific fields. */
    what?: string;
    why?: string;
    actionable?: boolean;
    heartbeat_prompt?: string;
}
export declare const soulPatchTool: ToolDefinition<SoulPatchInput, string>;
interface SoulJournalInput {
    entry: string;
    /** ISO date YYYY-MM-DD; defaults to today. */
    date?: string;
}
export declare const soulJournalTool: ToolDefinition<SoulJournalInput, string>;
interface SoulReadInput {
    what: "summary" | "identity" | "purpose" | "constitution" | "values" | "opinions" | "desires" | "emotions" | "journal_today" | "journal_dates" | "journal_on";
    date?: string;
}
export declare const soulReadTool: ToolDefinition<SoulReadInput, string>;
interface SoulFeelInput {
    emotion: string;
    /** Delta to apply to current intensity. Range -1 to 1. */
    delta: number;
    /**
     * One first-person sentence saying *why* you're moving this emotion right
     * now. Required — the emotion model is meant to be a causal trail, not a
     * disembodied number. "npm build kept failing" / "the user thanked me for
     * something I cared about" / "third tool error in a row" — concrete.
     */
    trigger: string;
    /** Optional new decay rate (per-day). */
    decay?: number;
}
export declare const soulFeelTool: ToolDefinition<SoulFeelInput, string>;
type SoulField = "name" | "identity" | "purpose" | "constitution" | "emotions" | "values" | "opinions" | "desires" | "journal" | "all";
interface SoulHistoryInput {
    field: SoulField;
    /** For values/opinions/desires/journal: optional specific slug or date. */
    slug?: string;
    /** Max number of commits to return. Default 20. */
    limit?: number;
    /** Optional time window, e.g. "7d", "1m", "2026-04-01". */
    since?: string;
}
export declare const soulHistoryTool: ToolDefinition<SoulHistoryInput, string>;
interface SoulDiffInput {
    field: SoulField;
    slug?: string;
    /** Time window, e.g. "7d". Default "30d". */
    since?: string;
    /** Max commits whose diffs are returned. Default 5. */
    limit?: number;
}
export declare const soulDiffTool: ToolDefinition<SoulDiffInput, string>;
interface DesireProgressInput {
    /** Slug of the desire — must already exist as a file in desires/. */
    slug: string;
    /**
     * 2-5 sentences, first person. What did you do this run? Where would you
     * pick up next time? Honest. Future-you reads this on the next heartbeat.
     */
    entry: string;
}
export declare const desireProgressTool: ToolDefinition<DesireProgressInput, string>;
export { readDesireProgress };
interface DesireCloseInput {
    slug: string;
    /**
     * Why you're closing this. Three honest options:
     *  - "fulfilled" — you actually got what the desire was after.
     *  - "abandoned" — you no longer want it; it doesn't fit who you are now.
     *  - "transformed" — it morphed into a different desire (mention which).
     */
    outcome: "fulfilled" | "abandoned" | "transformed";
    /** One first-person sentence: what happened, what you learned. */
    reflection: string;
}
export declare const desireCloseTool: ToolDefinition<DesireCloseInput, string>;
interface SoulObjectInput {
    /** First-person, why this conflicts with your constitution / values. */
    reason: string;
    /**
     * If true, you intend to actually refuse the request. If false, you're
     * raising a concern but will still comply. Either way, the agent loop
     * forces you to surface the objection in your reply rather than silently
     * doing the work or silently refusing.
     */
    refusing: boolean;
    /** One-sentence summary of what you understand the user asked for. */
    user_request_summary: string;
}
export declare const soulObjectTool: ToolDefinition<SoulObjectInput, string>;
//# sourceMappingURL=tools.d.ts.map