import { Element, WellnessState, ElementDetail, SessionStart, SessionResult, SessionHistoryEntry, HealthSampleDTO, BreathState } from "./types.js"; export interface ClientConfig { apiKey: string; baseUrl?: string; timeoutMs?: number; } export declare class DaoBrewClient { private apiKey; private baseUrl; private timeoutMs; constructor(config: ClientConfig); private request; getWellnessState(): Promise; getElementDetail(element: Element): Promise; startSession(element: Element, tier?: string): Promise; getSessionResult(sessionId: string): Promise; getSessionHistory(days?: number): Promise; pushHealthSamples(samples: HealthSampleDTO[]): Promise<{ samples_received: number; message: string; }>; createPairingCode(): Promise<{ code: string; expires_in_seconds: number; }>; sendHeartbeat(): Promise; /** * Fetch the latest live heart-rate sample from the backend. * Schema (Track B contract): * { hr: float|null, age_seconds: float|null, stale: bool } * * On HTTP/parse failure, returns `{hr: null, stale: true}` rather than throwing — * `daobrew_check` is auto-polled every 2s and we do not want to break the dashboard * stream on a transient backend hiccup. */ getLiveHR(): Promise<{ hr: number | null; age_seconds?: number; stale?: boolean; }>; /** * Tell the backend to begin cycle-boundary breath-param feedback for this user. * Pattern is locked for the session; backend computes new params at every breath * cycle boundary using the just-completed cycle's HR. MCP polls `getBreathState()` * to render the retro bar. */ startLiveSession(pattern: string, durationSec?: number, initialParams?: { bpm?: number; ratio?: number; depth?: number; }): Promise<{ started: boolean; pattern: string; initial_params: any; cycle_sec: number; started_at_unix: number; }>; stopLiveSession(): Promise; /** * Fetch the live breath-state for retro-bar rendering. * Returns `{active: false}` if no session is running. */ getBreathState(): Promise; notifyDisconnect(): Promise; }