import { type GoalRow } from './goals.js';
export interface GoalRpcCtx {
    platform: string;
    channelId: string;
    threadId: string;
    userId: string;
    /** Optional — included in the audit log + progress note attribution
     *  so we can tell native-set goals from sidecar-set ones. */
    callerAgent?: string;
}
export type GoalOp = 'long_task' | 'complete_goal';
export interface LongTaskPayload {
    goal?: unknown;
    summary?: unknown;
}
export interface CompleteGoalPayload {
    recap?: unknown;
    status?: unknown;
}
export type GoalRpcResult = {
    ok: true;
    result: Record<string, unknown>;
} | {
    ok: false;
    error: string;
};
export declare function handleGoalOp(op: GoalOp, payload: unknown, ctx: GoalRpcCtx): Promise<GoalRpcResult>;
/** Exposed so tests + ad-hoc inspectors can prune state. Not used in
 *  production code paths. */
export declare function _activeGoalSnapshot(ctx: GoalRpcCtx): GoalRow | null;
//# sourceMappingURL=goal-rpc.d.ts.map