expo-edge-speech
Version:
Text-to-speech library for Expo using Microsoft Edge TTS service
177 lines • 5.36 kB
TypeScript
/**
* Provides centralized state management using all services and complete type definitions.
* Coordinates state between Network, Storage, Voice, and Audio services while maintaining
* expo-speech API compatibility and implementing thread-safe state updates.
*/
import { SpeechOptions, SpeechConfiguration, SpeechError } from "../types";
import { StorageService } from "../services/storageService";
import { NetworkService } from "../services/networkService";
import { VoiceService } from "../services/voiceService";
import { AudioService } from "../services/audioService";
/**
* Application state enumeration
*/
export declare enum ApplicationState {
Idle = "idle",
Initializing = "initializing",
Ready = "ready",
Synthesizing = "synthesizing",
Playing = "playing",
Paused = "paused",
Error = "error",
Cleaning = "cleaning"
}
/**
* Unified speech synthesis session interface
* Consolidates the session definitions from synthesizer.ts and state.ts
*/
export interface SynthesisSession {
/** Session ID */
id: string;
/** Connection ID used for this session */
connectionId: string;
/** Text being synthesized */
text: string;
/** Speech options for this session */
options: SpeechOptions;
/** Session state */
state: ApplicationState;
/** Creation timestamp */
createdAt: Date;
/** Last activity timestamp */
lastActivity: Date;
/** Error information if any */
error?: SpeechError;
/** Synthesized audio data (optional) */
audioData?: Uint8Array;
/** Audio URI for playback (optional) */
audioUri?: string;
}
/**
* State change event data
*/
interface StateChangeEvent {
/** Event type */
type: "application" | "connection" | "synthesis" | "audio" | "configuration";
/** Previous state value */
previousState: any;
/** New state value */
newState: any;
/** Timestamp of the change */
timestamp: Date;
/** Optional context data */
context?: any;
}
/**
* State change listener callback
*/
export type StateChangeListener = (event: StateChangeEvent) => void;
/**
* Centralized state management service for expo-edge-speech
* Coordinates state between all services and provides thread-safe state updates
*/
export declare class StateManager {
private storageService;
private networkService;
private voiceService;
private audioService;
private applicationState;
private configuration;
private activeSessions;
private stateChangeListeners;
private stateUpdateQueue;
private isProcessingStateUpdates;
constructor(storageService: StorageService, networkService: NetworkService, voiceService: VoiceService, audioService: AudioService, initialConfiguration?: Partial<SpeechConfiguration>);
/**
* Create default configuration using complete constants
*/
private createDefaultConfiguration;
/**
* Get current configuration
*/
getConfiguration(): SpeechConfiguration;
/**
* Update configuration with state change notification
*/
updateConfiguration(updates: Partial<SpeechConfiguration>): Promise<void>;
/**
* Get current application state
*/
getApplicationState(): ApplicationState;
/**
* Update application state with notifications
*/
private updateApplicationState;
/**
* Create new synthesis session using service integration
*/
createSynthesisSession(text: string, options: SpeechOptions): Promise<SynthesisSession>;
/**
* Update synthesis session state
*/
updateSynthesisSession(sessionId: string, updates: Partial<SynthesisSession>): Promise<void>;
/**
* Remove synthesis session and cleanup
*/
removeSynthesisSession(sessionId: string): Promise<void>;
/**
* Get active synthesis sessions
*/
getActiveSessions(): SynthesisSession[];
/**
* Get specific synthesis session
*/
getSynthesisSession(sessionId: string): SynthesisSession | undefined;
/**
* Initialize service integration with state tracking
*/
private initializeServiceIntegration;
/**
* Handle connection state changes from services
*/
private handleConnectionStateChange;
/**
* Handle audio state changes from audio service
*/
private handleAudioStateChange;
/**
* Enqueue state update for thread-safe processing
*/
private enqueueStateUpdate;
/**
* Process queued state updates
*/
private processStateUpdateQueue;
/**
* Add state change listener
*/
addStateChangeListener(listener: StateChangeListener): void;
/**
* Remove state change listener
*/
removeStateChangeListener(listener: StateChangeListener): void;
/**
* Notify all listeners of state change
*/
private notifyStateChange;
/**
* Get comprehensive state summary
*/
getStateSummary(): {
application: ApplicationState;
configuration: SpeechConfiguration;
activeSessions: number;
connections: number;
memoryUsage: any;
};
/**
* Initialize state manager
*/
initialize(): Promise<void>;
/**
* Cleanup state manager and all services
*/
cleanup(): Promise<void>;
}
export {};
//# sourceMappingURL=state.d.ts.map