import type { HeadbandTransport, HeadbandTransportStatus } from "@elata-biosciences/eeg-web"; import type { MuseDeviceOptions } from "@elata-biosciences/eeg-web-ble"; import { PpgProcessor, type PpgChannelPreference, type PpgDebugSnapshot, type PpgMetrics, type PpgProcessorOptions, type PpgSourcePreference, type PpgTraceSnapshot } from "./ppgProcessor.js"; export interface CreatePpgSessionOptions extends PpgProcessorOptions { transport: HeadbandTransport; autoStart?: boolean; onMetrics?: (metrics: PpgMetrics) => void; onDiagnostics?: (diagnostics: PpgSessionDiagnostics) => void; onStatus?: (status: HeadbandTransportStatus) => void; } export interface CreateMusePpgSessionOptions extends Omit { deviceOptions?: MuseDeviceOptions; sourceName?: string; } export interface PpgSessionDiagnostics { transportStatus: HeadbandTransportStatus | null; lastFrameAtMs: number | null; lastFrameAgeMs: number | null; lastSampleTimestampMs: number | null; lastSampleAgeMs: number | null; issues: PpgDebugSnapshot["issues"]; metrics: PpgMetrics; debug: PpgDebugSnapshot; } type SessionInternals = { onMetrics?: (metrics: PpgMetrics) => void; onDiagnostics?: (diagnostics: PpgSessionDiagnostics) => void; onStatus?: (status: HeadbandTransportStatus) => void; restoreHandlers: () => void; }; export declare class PpgSession { readonly transport: HeadbandTransport; readonly processor: PpgProcessor; private readonly internals; private lastStatus; constructor(transport: HeadbandTransport, processor: PpgProcessor, internals: SessionInternals); getMetrics(): PpgMetrics; getDebugSnapshot(): PpgDebugSnapshot; getTraceSnapshot(maxPoints?: number): PpgTraceSnapshot; getDiagnostics(nowMs?: number): PpgSessionDiagnostics; start(): Promise; stop(): Promise; disconnect(): Promise; dispose(): Promise; recordStatus(status: HeadbandTransportStatus): void; emitDiagnostics(): void; } export declare function createPpgSession(options: CreatePpgSessionOptions): Promise; export declare function createMusePpgSession(options?: CreateMusePpgSessionOptions): Promise; export type { PpgChannelPreference, PpgMetrics, PpgProcessorOptions, PpgSourcePreference, }; //# sourceMappingURL=ppgSession.d.ts.map