export {
  CompanionRuntimeClient,
  GatewayRpcError,
  COMPANION_EVENT_NAMES,
} from './runtimeClient.js';
export {
  MacOSCompanionClient,
  IOSCompanionClient,
  AndroidCompanionClient,
} from './platformClients.js';
export { CompanionHeartbeatLoop } from './heartbeatLoop.js';

export type {
  CompanionRuntimeClientOptions,
  WaitForIdleOptions,
  PendingWorkSnapshot,
  EventSurfaceSnapshot,
  ConnectionSnapshot,
  ClearEventSubscriptionsResult,
  CompanionEventHandler,
  CompanionTypedEventHandler,
  CompanionEventName,
  CompanionEventPredicate,
  CompanionEventEnvelope,
  RegisterNodeInput,
  ListNodesInput,
  SetNodeStatusInput,
  SetNodeLocationInput,
  SetNodePushTokenInput,
  PutCanvasArtifactInput,
  GetCanvasArtifactInput,
  DeleteCanvasArtifactInput,
  NodeRegisterResult,
  NodeBootstrapResult,
  NodeCapabilitiesResult,
  NodeStatusSetResult,
  NodeLocationSetResult,
  NodeLocationGetResult,
  NodePushTokenSetResult,
  SystemCapabilitiesResult,
  SystemNodesResult,
  SystemNodeEntry,
  NodeLocation,
  NodeStatus,
  NodePushSummary,
  CanvasArtifact,
  CanvasPutResult,
  CanvasGetResult,
  CanvasListResult,
  CanvasDeleteResult,
  CanvasClearResult,
} from './runtimeClient.js';
export type {
  PlatformClientOptions,
  RegisterPushTokenInput,
  SharedStatusInput,
  HeartbeatStatusInput,
  PlatformBootstrapResult,
  PlatformBootstrapOptions,
  PlatformPutCanvasArtifactInput,
  PlatformGetCanvasArtifactInput,
  PlatformDeleteCanvasArtifactInput,
} from './platformClients.js';
export type {
  HeartbeatPublisher,
  CompanionHeartbeatLoopOptions,
  CompanionHeartbeatLoopState,
} from './heartbeatLoop.js';
