import type { TodoItem } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/todo_pb";
/** Props for {@link TodoCard}. */
export interface TodoCardProps {
    /**
     * The agent's todo map for one execution — the proto map shape
     * (`execution.status.todos`) passed through by reference so a settled
     * card skips re-renders while siblings stream (DD-009/010).
     */
    readonly todos: {
        readonly [key: string]: TodoItem;
    };
    /** Additional CSS class names for the root container. */
    readonly className?: string;
}
/**
 * The agent's plan, rendered inline in the message thread as a collapsible
 * card — the Cursor-style "what I'm going to do, and how far I've got"
 * surface. It is the in-thread home of the todo list that previously lived
 * in the right-side Plan tab.
 *
 * The card chrome matches the rest of the thread's tool cards (a single
 * neutral {@link https://tailwindcss.com `border-border-prominent`} line) and
 * wraps the chrome-less {@link TodoList} primitive — the same list the
 * sub-agent section renders bare, so there is exactly one todo renderer and no
 * card-in-a-card.
 *
 * Disclosure follows the thread's {@link useAutoDisclosure} convention: open
 * while the plan is active (any item in progress), settling closed once the
 * plan is fully resolved, with a user's manual toggle always winning. This
 * keeps an in-flight plan visible and a finished one tidy, mirroring
 * `ToolRunGroup`/{@link SubAgentSection}.
 *
 * `React.memo`'d on the by-reference `todos` map: structural sharing
 * (`shareTodos`) keeps the reference stable across stream frames, so the card
 * re-renders only when the plan actually changes — never per frame.
 *
 * All visual properties flow through `--stgm-*` tokens.
 *
 * @example
 * ```tsx
 * <TodoCard todos={execution.status?.todos ?? {}} />
 * ```
 */
export declare const TodoCard: import("react").NamedExoticComponent<TodoCardProps>;
/**
 * Shallow comparator for {@link TodoCardProps}. The `todos` map is kept
 * referentially stable by `shareTodos`, so an identity check is exactly the
 * right (and cheapest) "did the plan change?" test.
 *
 * @internal Exported for testing — not part of the public API.
 */
export declare function todoCardPropsEqual(prev: Readonly<TodoCardProps>, next: Readonly<TodoCardProps>): boolean;
//# sourceMappingURL=TodoCard.d.ts.map