import { Session, CreateSessionResponse, SessionOptions } from '../types/session'; import { BotStatus, SpawnBotResponse, BotState } from '../types/bot'; type MockRoomEvent = string; type MockConnectionState = string; /** * Mock LiveKit Room class */ export declare class MockRoom { state: MockConnectionState; name: string; numParticipants: number; private eventHandlers; connect: import('vitest').Mock<(...args: any[]) => any>; disconnect: import('vitest').Mock<(...args: any[]) => any>; on: import('vitest').Mock<(...args: any[]) => any>; off: import('vitest').Mock<(...args: any[]) => any>; /** * Trigger an event for testing */ triggerEvent(event: MockRoomEvent, ...args: unknown[]): void; /** * Simulate connection failure */ simulateConnectionFailure(error: Error): void; /** * Simulate reconnection attempt */ simulateReconnecting(): void; /** * Simulate connection quality change */ simulateConnectionQuality(quality: string, isLocal?: boolean): void; /** * Reset all mocks */ reset(): void; } /** * Create a mock fetch function */ export declare function createMockFetch(): import('vitest').Mock<(...args: any[]) => any>; /** * Session creation success response fixture */ export declare function createSessionSuccessResponse(): CreateSessionResponse; /** * Session object fixture */ export declare function createMockSession(overrides?: Partial): Session; /** * Session options fixture */ export declare function createSessionOptions(overrides?: Partial): SessionOptions; /** * Bot spawn success response fixture */ export declare function createSpawnBotResponse(botId?: string, status?: BotState): SpawnBotResponse; /** * Bot status fixture */ export declare function createBotStatus(botId?: string, status?: BotState, error?: string): BotStatus; /** * Create a mock Response object */ export declare function createMockResponse(data: unknown, options?: { ok?: boolean; status?: number; statusText?: string; }): Response; /** * Create an error response */ export declare function createErrorResponse(error: string, status?: number): Response; /** * Mock Logger class */ export declare class MockLogger { debug: import('vitest').Mock<(...args: any[]) => any>; info: import('vitest').Mock<(...args: any[]) => any>; warn: import('vitest').Mock<(...args: any[]) => any>; error: import('vitest').Mock<(...args: any[]) => any>; reset(): void; } /** * Mock Config class */ export declare class MockConfig { static getInstance: import('vitest').Mock<(...args: any[]) => any>; static reset(): void; } /** * Sleep helper for tests */ export declare function sleep(ms: number): Promise; /** * Wait for condition to be true (with timeout) */ export declare function waitFor(condition: () => boolean, timeout?: number, interval?: number): Promise; /** * Setup global fetch mock */ export declare function setupFetchMock(mockFetch: ReturnType): void; /** * Cleanup global fetch mock */ export declare function cleanupFetchMock(): void; /** * Create a mock DemoExperienceConfig * * Provides a complete demo configuration with all required fields * for testing the demo experience flow. * * @param overrides - Optional field overrides * @returns Mock demo configuration * * @example * ```typescript * const config = createMockDemoConfig({ * customerName: 'Custom Name', * timelineConfig: 'investor_demo_quick', * }); * ``` */ export declare function createMockDemoConfig(overrides?: Partial<{ customerName: string; customerEmail: string; customerCompany: string; supabaseUrl: string; supabaseKey: string; deckUrl: string; avatarImage: string; timelineConfig: 'investor_demo' | 'investor_demo_quick'; demoType: 'investor' | 'product' | 'custom'; apiUrl: string; debug: boolean; }>): { customerName: string; customerEmail: string; customerCompany: string; supabaseUrl: string; supabaseKey: string; deckUrl: string; avatarImage: string; timelineConfig: "investor_demo" | "investor_demo_quick"; demoType: "investor" | "product" | "custom"; apiUrl: string; debug: boolean; }; /** * Create a mock demo session response * * Simulates the response from creating a demo session, * including timeline-specific configuration. * * @param overrides - Optional field overrides * @returns Mock session response */ export declare function createMockDemoSession(overrides?: Partial<{ sessionId: string; roomName: string; customerToken: string; agentToken: string; screenshareToken: string; livekitUrl: string; deckUrl: string; timelineConfig: 'investor_demo' | 'investor_demo_quick'; }>): { sessionId: string; roomName: string; customerToken: string; agentToken: string; screenshareToken: string; livekitUrl: string; deckUrl: string; timelineConfig: "investor_demo" | "investor_demo_quick"; }; /** * Create a mock handoff event payload * * Simulates the presentation_handoff event that triggers * the transition from greeter to presentation agent. * * @param overrides - Optional field overrides * @returns Mock handoff event */ export declare function createMockHandoffEvent(overrides?: Partial<{ event: string; timestamp: number; source: string; context: Record; }>): { event: string; timestamp: number; source: string; context: Record; }; /** * Mock SessionManager for demo experience tests */ export declare class MockDemoSessionManager { createSession: import('vitest').Mock<(...args: any[]) => any>; joinRoom: import('vitest').Mock<(...args: any[]) => any>; getSession: import('vitest').Mock<(...args: any[]) => any>; disconnect: import('vitest').Mock<(...args: any[]) => any>; on: import('vitest').Mock<(...args: any[]) => any>; off: import('vitest').Mock<(...args: any[]) => any>; reset(): void; } /** * Mock SlideViewer component */ export declare class MockSlideViewer { destroy: import('vitest').Mock<(...args: any[]) => any>; setPosition: import('vitest').Mock<(...args: any[]) => any>; showLoading: import('vitest').Mock<(...args: any[]) => any>; hideLoading: import('vitest').Mock<(...args: any[]) => any>; reset(): void; } /** * Mock SlideControls component */ export declare class MockSlideControls { destroy: import('vitest').Mock<(...args: any[]) => any>; show: import('vitest').Mock<(...args: any[]) => any>; hide: import('vitest').Mock<(...args: any[]) => any>; reset(): void; } /** * Mock SlideCommander */ export declare class MockSlideCommander { destroy: import('vitest').Mock<(...args: any[]) => any>; sendCommand: import('vitest').Mock<(...args: any[]) => any>; reset(): void; } /** * Simulate handoff event in room * * Helper to trigger handoff event on a mock room for testing * the demo experience handoff flow. * * @param room - Mock room instance * @param eventData - Optional custom event data */ export declare function simulateHandoffEvent(room: MockRoom, eventData?: Record): void; /** * Simulate participant metadata change (alternate handoff method) * * @param room - Mock room instance * @param metadata - Metadata to trigger */ export declare function simulateMetadataHandoff(room: MockRoom, metadata?: Record): void; export {};