import type { VcMeetingRef } from './types.js'; import type { VcMeetingConsumerAgentConfig } from '../bot-registry.js'; import type { VcMeetingConsumerProfileConfig } from '../types.js'; export type VcMeetingConfirmCardStatus = 'pending' | 'started' | 'declined' | 'expired' | 'failed'; export type VcMeetingConsumerCardStatus = 'pending' | 'processing' | 'listenOnly' | 'agent' | 'expired' | 'failed'; export type VcMeetingConsumerRecoveryCardStatus = 'pending' | 'recovered' | 'abandoned' | 'failed'; export type VcMeetingListenerRejoinCardStatus = 'pending' | 'rejoined' | 'expired' | 'failed'; export type VcMeetingOutputReviewCardStatus = 'pending' | 'processing' | 'sentText' | 'sentVoice' | 'rejected' | 'expired' | 'superseded' | 'failed'; export type VcMeetingOutputChannel = 'text' | 'voice'; export interface VcMeetingConfirmCardInput { status: VcMeetingConfirmCardStatus; meeting: VcMeetingRef; targetOpenId: string; nonce: string; listenerChatId?: string; error?: string; } interface VcMeetingConsumerCardBaseInput { status: VcMeetingConsumerCardStatus; meeting: VcMeetingRef; nonce: string; syncIntervalMs?: number; stagedIntervalMs?: number; error?: string; } export interface VcMeetingLegacyConsumerCardInput extends VcMeetingConsumerCardBaseInput { /** Omitted by existing callers; the absent discriminator is the legacy branch. */ selectionMode?: 'legacy'; candidates: VcMeetingConsumerAgentConfig[]; defaultMode: 'listenOnly' | 'agent'; defaultAgentAppId?: string; selectedAgentAppId?: string; selectedAgentLabel?: string; stagedMode?: 'agent' | 'listenOnly'; stagedAgentAppId?: string; stagedAgentLabel?: string; } export type VcMeetingConsumerProfileActivationStatus = 'activating' | 'active' | 'failed'; export interface VcMeetingConsumerProfileCardItem extends VcMeetingConsumerProfileConfig { activationStatus?: VcMeetingConsumerProfileActivationStatus; activationError?: string; /** 绑定 agent 的展示名(bot 真名),缺省回退 agentAppId。 */ agentLabel?: string; } export interface VcMeetingProfileConsumerCardInput extends VcMeetingConsumerCardBaseInput { selectionMode: 'profiles'; profiles: VcMeetingConsumerProfileCardItem[]; defaultMode: 'listenOnly' | 'agents'; defaultConsumerIds?: string[]; /** Current committed selection, used when reopening a profile card. */ selectedProfileIds?: string[]; /** undefined = no staged edit; [] = explicitly staged listen-only. */ stagedSelectedProfileIds?: string[]; } export type VcMeetingConsumerCardInput = VcMeetingLegacyConsumerCardInput | VcMeetingProfileConsumerCardInput; export interface VcMeetingOutputReviewCardInput { status: VcMeetingOutputReviewCardStatus; meeting: VcMeetingRef; channel: VcMeetingOutputChannel; requestId: string; nonce: string; agentLabel?: string; content: string; contentItems?: string[]; reason?: string; fallbackText?: string; fallbackTextItems?: string[]; textOutputAvailable?: boolean; error?: string; } export interface VcMeetingConsumerRecoveryCardInput { status: VcMeetingConsumerRecoveryCardStatus; meeting: VcMeetingRef; nonce: string; memberEpoch: number; /** P1 profile stream identity. Legacy single-consumer cards omit it. */ memberId?: string; memberLabel?: string; missingItemVersionKey?: string; error?: string; } export interface VcMeetingListenerRejoinCardInput { status: VcMeetingListenerRejoinCardStatus; meeting: VcMeetingRef; nonce: string; error?: string; } export declare function buildVcMeetingConfirmCard(input: VcMeetingConfirmCardInput): string; export declare function buildVcMeetingConsumerRecoveryCard(input: VcMeetingConsumerRecoveryCardInput): string; export declare function buildVcMeetingListenerRejoinCard(input: VcMeetingListenerRejoinCardInput): string; export declare function buildVcMeetingConsumerCard(input: VcMeetingConsumerCardInput): string; export declare function buildVcMeetingOutputReviewCard(input: VcMeetingOutputReviewCardInput): string; export {}; //# sourceMappingURL=cards.d.ts.map