import type { HTMLAttributes } from 'react';
import type { ApprovalBlockVariant, AssistantType, ApprovalBatchSegment } from './types';
export interface ApprovalBatchMessageProps extends HTMLAttributes {
data: ApprovalBatchSegment['data'];
status?: ApprovalBatchSegment['status'];
onApprove?: (requestId?: string) => void | boolean | Promise;
onReject?: (requestId?: string) => void | boolean | Promise;
/**
* Cap the tool-call list height so it scrolls internally while the footer
* (explanations + Approve/Reject) stays pinned below. Omit for the default
* chat behaviour where the whole batch grows with its content.
*/
maxBodyHeight?: number | string;
/** Display name of the user who resolved the request; shown as "by {name}" beside the status tag. */
resolvedByName?: string | null;
/**
* Per-tool execution status icon (queued dots → check/cross). On in dialog messages where tool
* execution is tracked live; turn off for notifications, which have no execution state and would
* otherwise show the dots spinner forever after approval. Defaults to on.
*/
showExecutionStatus?: boolean;
/**
* Chat identity. Kept for prop parity with the message renderers; does NOT
* drive the styling anymore — use `variant` instead. An admin can be
* looking at a Fae dialog (tickets dialog client tab) and must still see
* the full admin block.
*/
assistantType?: AssistantType;
/**
* Viewer variant. `'admin'` (default) = full block with command preview,
* expandable args/result and tool icon. `'client'` = end-client (Fae
* desktop app) card that shows ONLY the BE-generated title(s) plus the
* Approve/Reject buttons or the full-text resolved pill ("Approved by
* {name}") — commands and scripts are never rendered.
*/
variant?: ApprovalBlockVariant;
/**
* Render the footer Approve/Reject buttons (or the resolved-status tag).
* Turn off when the host owns the actions row — e.g. the approval
* notification tile. Explanation bullets still render.
*/
showFooterActions?: boolean;
}
export interface ApprovalStatusTagProps {
status: ApprovalBatchSegment['status'];
resolvedByName?: string | null;
inlineResolver?: boolean;
}
/**
* Terminal-status badge for a resolved approval batch (approved / rejected /
* cancelled); renders nothing while pending. With `inlineResolver` the
* resolver's name is baked into the tag as a single full-text pill
* ("Approved by {name}"); otherwise callers render "by {name}" as a separate
* muted span. Also used by the approval notification tile, which hosts the
* actions row itself (`showFooterActions={false}`).
*/
export declare function ApprovalStatusTag({ status, resolvedByName, inlineResolver }: ApprovalStatusTagProps): import("react").JSX.Element | null;
declare const ApprovalBatchMessage: import("react").ForwardRefExoticComponent>;
export { ApprovalBatchMessage };
//# sourceMappingURL=approval-batch-message.d.ts.map