/**
 * OpenClaw native plugin entry point for Neotoma.
 *
 * Registers all Neotoma MCP tools as OpenClaw agent tools so that
 * `openclaw plugins install neotoma` makes Neotoma's structured memory
 * available in any OpenClaw session.
 *
 * The plugin declares `kind: "memory"` in its manifest, meaning users
 * can assign it to the memory slot via `plugins.slots.memory = "neotoma"`.
 */
interface NeotomaPluginConfig {
    dataDir?: string;
    environment?: string;
    openaiApiKey?: string;
    encryptionEnabled?: boolean;
}
interface SessionStartEvent {
    sessionId: string;
    sessionKey?: string;
    resumedFrom?: string;
}
interface SessionContext {
    agentId?: string;
    sessionId?: string;
    sessionKey?: string;
}
/** Context passed to message lifecycle hooks (extends session fields per OpenClaw docs). */
interface MessageHookContext extends SessionContext {
    runId?: string;
    messageId?: string;
    senderId?: string;
    traceId?: string;
    spanId?: string;
}
interface SessionEndEvent {
    sessionId: string;
    sessionKey?: string;
    messageCount: number;
    durationMs?: number;
    reason?: string;
    sessionFile?: string;
    transcriptArchived?: boolean;
    nextSessionId?: string;
    nextSessionKey?: string;
}
interface AfterToolCallEvent {
    toolName: string;
    params: Record<string, unknown>;
    runId?: string;
    toolCallId?: string;
    result?: unknown;
    error?: string;
    durationMs?: number;
}
interface ToolContext {
    agentId?: string;
    sessionId?: string;
    sessionKey?: string;
    runId?: string;
    toolCallId?: string;
    toolName?: string;
}
interface PluginApi {
    config?: NeotomaPluginConfig;
    registerTool(def: {
        name: string;
        description: string;
        parameters: Record<string, unknown>;
        execute(id: string, params: Record<string, unknown>): Promise<{
            content: Array<{
                type: string;
                text: string;
            }>;
        }>;
    }): void;
    on?<K extends "session_start" | "session_end" | "after_tool_call" | "message_received" | "message_sent">(hookName: K, handler: (event: K extends "session_start" ? SessionStartEvent : K extends "session_end" ? SessionEndEvent : K extends "after_tool_call" ? AfterToolCallEvent : Record<string, unknown>, ctx: K extends "after_tool_call" ? ToolContext : K extends "message_received" | "message_sent" ? MessageHookContext : SessionContext) => Promise<void> | void, opts?: {
        priority?: number;
    }): void;
    logger?: {
        warn(message: string): void;
    };
}
/**
 * Plugin entry object conforming to the OpenClaw plugin interface.
 *
 * When loaded by OpenClaw, the host wraps this with `definePluginEntry`
 * from `openclaw/plugin-sdk/plugin-entry`. The export shape (id, name,
 * description, register) satisfies the native plugin contract.
 */
declare const neotomaPlugin: {
    id: string;
    name: string;
    description: string;
    register(api: PluginApi): void;
};
export default neotomaPlugin;
//# sourceMappingURL=openclaw_entry.d.ts.map