import { DemoExperienceConfig, DemoExperience } from '../types/demo'; /** * Create a demo experience instance * * Creates an investor demo experience with greeter mode, handoff, and presentation. * The demo automatically shows a gating form for lead capture, then orchestrates * the full demo flow. * * @param containerOrId - DOM container element or element ID * @param config - Demo configuration options * @returns DemoExperience instance with control methods * * @throws {Error} If container element is not found * @throws {Error} If required config fields are missing * * @example * ```typescript * // Create and start demo with defaults * const demo = createDemoExperience('container', { * customerName: 'Jane Smith', * customerEmail: 'jane@acme.com', * onStart: () => console.log('Demo started'), * onHandoff: () => console.log('Handoff to presentation'), * onEnd: () => console.log('Demo ended') * }); * * await demo.start(); * ``` * * @example * ```typescript * // With custom overrides * const demo = createDemoExperience('container', { * customerName: 'Jane Smith', * customerEmail: 'jane@acme.com', * customerCompany: 'Acme Corp', * deckUrl: 'https://example.com/custom-deck', * avatarImage: 'https://example.com/avatar.png', * timelineConfig: 'investor_demo_quick', // 20s handoff for testing * }); * * await demo.start(); * ``` */ export declare function createDemoExperience(containerOrId: string | HTMLElement, config: DemoExperienceConfig): DemoExperience; /** * End an active demo by session ID * * Disconnects from the LiveKit room and cleans up all resources * for the specified session. * * @param sessionId - Session ID of demo to end * * @example * ```typescript * const demo = createDemoExperience('container', config); * const sessionId = demo.sessionId; * * // Later... * await endDemoExperience(sessionId); * ``` */ export declare function endDemoExperience(sessionId: string): Promise;