import { Room } from 'livekit-client';
import { RetellWebClient } from 'retell-client-js-sdk';
export interface GeneralConnectionDetails {
    provider: 'livekit' | 'retell';
    payload: any;
}
export interface LiveKitConnectionDetails {
    serverUrl: string;
    participantToken: string;
    provider: 'livekit';
}
export interface RetellConnectionDetails {
    access_token: string;
    provider: 'retell';
    sample_rate?: number;
    capture_device_id?: string;
    emit_raw_audio_samples?: boolean;
}
export type ConnectionDetails = LiveKitConnectionDetails | RetellConnectionDetails;
export interface VoiceAssistantConfig {
    onDeviceFailure?: (error: Error) => void;
    onCallStarted?: () => void;
    onCallEnded?: () => void;
    onAgentStartTalking?: () => void;
    onAgentStopTalking?: () => void;
    onError?: (error: Error) => void;
}
export interface LiveKitVoiceAssistant {
    room: Room;
    connect: (connectionDetails: LiveKitConnectionDetails) => Promise<void>;
    disconnect: () => void;
}
export interface RetellVoiceAssistant {
    client: RetellWebClient;
    connect: (connectionDetails: RetellConnectionDetails) => Promise<void>;
    disconnect: () => void;
    isCallActive: boolean;
    agentStatus: 'idle' | 'connecting' | 'listening' | 'speaking';
}
export type VoiceAssistant = LiveKitVoiceAssistant | RetellVoiceAssistant;
