import type { AgentTool } from "@kenkaiiii/gg-agent";
export declare const JIWA_SOFT_LIMIT = 60;
export declare const JIWA_HARD_LIMIT = 90;
export declare const JIWA_TEXT_LIMIT = 600;
export declare const JIWA_CATEGORIES: readonly ["identity", "voice", "interaction", "boundaries", "workflow", "other"];
export type JiwaCategory = (typeof JIWA_CATEGORIES)[number];
export interface JiwaEntry {
    id: string;
    text: string;
    category: JiwaCategory;
    importance: number;
    createdAt: string;
    updatedAt: string;
}
export interface JiwaSnapshot {
    jiwa: JiwaEntry[];
    softLimit: number;
    hardLimit: number;
}
export interface JiwaMutationResult {
    entry?: JiwaEntry;
    jiwa: JiwaEntry[];
    duplicateOf?: JiwaEntry;
    deleted?: boolean;
    forgotten?: number;
}
export interface JiwaStoreOptions {
    filePath?: string;
    onChange?: (snapshot: JiwaSnapshot) => void | Promise<void>;
    now?: () => Date;
}
export declare class JiwaStore {
    readonly filePath: string;
    private readonly onChange?;
    private readonly now;
    constructor(options?: JiwaStoreOptions);
    list(): Promise<JiwaEntry[]>;
    snapshot(): Promise<JiwaSnapshot>;
    set(content: string, category?: JiwaCategory, importance?: number): Promise<JiwaMutationResult>;
    update(id: string, content: string, category?: JiwaCategory, importance?: number, forgetIds?: string[]): Promise<JiwaMutationResult>;
    forget(id: string): Promise<JiwaMutationResult>;
    renderForPrompt(): string;
    private mutate;
    private normalizeText;
    private normalizeImportance;
    private toSnapshot;
    private parse;
    private readFile;
    private readFileSync;
    private writeFile;
}
export declare function buildJiwaTools(store: JiwaStore): AgentTool[];
//# sourceMappingURL=jiwa.d.ts.map