import { ID } from '../../commonStateTypes/common'; import { ZeniAPIResponse } from '../../responsePayload'; export interface TableVisualizationPayload { columns: string[]; values: Array>; } export interface YFormatPayload { scale: string; type: string; unit: string; symbol?: string; } export interface ChartVisualizationPayload { values: Array>; x: string; y: string | string[]; lines?: string[] | null; y_format?: YFormatPayload; } export interface SuggestedCardPayload { avg_spend: number; card_name: string; card_name_id: string; card_type: 'vendor' | 'department' | 'category'; credit_limit: number; is_suggested: boolean; owner_id: string | null; } export interface CardsCreationInitialDataPayload { mode: 'review' | 'create'; suggested_cards: SuggestedCardPayload[]; } export interface DraftPolicyEntityPayload { category_codes: string[]; merchant_names: string[]; } export interface DraftPolicySpendLimitsPayload { transaction: number; [cadence: string]: number | undefined; } export interface DraftPolicyPayload { allowed_entity: DraftPolicyEntityPayload; apply_to_cards: string[]; blocked_entity: DraftPolicyEntityPayload; description: string; mode: string; name: string; required_receipt_threshold: number; spend_limits: DraftPolicySpendLimitsPayload; } export interface CardPolicyStep5ReviewPayload { draft_policies: DraftPolicyPayload[]; prompt: string; grouping_source?: string; } export interface CardPolicyWizardPlanPayload { step_5_review: CardPolicyStep5ReviewPayload; } export interface CardPolicyUploadSourcePayload { confidence_score: number; file_name: string; low_confidence_fields: string[]; } export type CardPolicyInitialDataPayload = { mode: 'auto'; wizard_plan: CardPolicyWizardPlanPayload; } | { mode: 'guided'; wizard_plan: CardPolicyWizardPlanPayload; } | { mode: 'upload'; source?: CardPolicyUploadSourcePayload; wizard_plan?: CardPolicyWizardPlanPayload; }; export type InteractiveFormVisualizationPayload = { form_type: 'cards_creation'; payload: CardsCreationInitialDataPayload; } | { form_type: 'card_policy'; payload: CardPolicyInitialDataPayload; }; export interface AiCfoVisualizationPayload { data: TableVisualizationPayload | ChartVisualizationPayload | InteractiveFormVisualizationPayload | null; type: string | null; } export interface AiCfoAnswerPayload { assumptions: string | null; insights: string | null; metadata: { agent_id: string; chat_session_id: string; message_id: string; timestamp: string; chain_of_thought_action_steps?: string[]; [key: string]: string | string[] | undefined; }; state: string; summarized_title: string | null; text: string; type: string; visualization: AiCfoVisualizationPayload | null; artifact?: string | null; artifact_host_url?: string | null; artifact_title?: string | null; capability_promo?: AiCfoCapabilityPromoPayload | null; exports?: AiCfoExportPayload[] | null; follow_up_questions?: string[]; skill_draft?: AiCfoSkillDraftPayload | null; suggested_reply?: string | null; table?: AiCfoVisualizationPayload | null; } export interface AiCfoSkillDraftPayload { instructions: string; name: string; description?: string | null; display_name?: string | null; parameter_hints?: { examples?: string[] | null; } | null; } export interface AiCfoCapabilityPromoPayload { copy: string; id: string; surface: string; cta?: AiCfoCapabilityPromoCtaPayload | null; } export interface AiCfoCapabilityPromoCtaPayload { label: string; prefill: string; } export interface AiCfoExportPayload { export_id: ID; name: string; size_bytes: number | null; } export interface ChatSessionPayload { chat_session_id: string; chat_session_summary: string | null; created_at: string; user_id: string; } export interface MessagePayload { chat_session_id: string; content: string; created_at: string; message_id: string; message_type: string; sender: string; user_id: string; } export interface FetchChatHistoryResponseData { messages: MessagePayload[]; next_page_token: string | null; } export type FetchChatHistoryResponse = ZeniAPIResponse;