export {
  ACCENTS,
  BODY_SHAPES,
  HAIR_COLORS,
  LOCAL_PROFILE_VERSION,
  OUTFITS,
  SKIN_TONES,
  actorKindForPresence,
  createDefaultLocalProfile,
  decodeLocalProfile,
  encodeLocalProfile,
  isHumanoidAppearance,
  isLocalProfile,
  migrateLocalProfileV1,
  resolveHumanoidAppearance,
  type AccentChoice,
  type BodyShapeChoice,
  type HairColorChoice,
  type HumanoidAppearanceChoices,
  type LocalProfile,
  type LocalProfileV1,
  type LocalProfileV2,
  type OutfitChoice,
  type PresenceActorKind,
  type PresenceContext,
  type ProfileDecodeResult,
  type ResolvedHumanoidAppearance,
  type SkinToneChoice,
} from "./model.ts";

export {
  clearLocalProfile,
  loadLocalProfile,
  saveLocalProfile,
  type ProfileClearResult,
  type ProfileLoadResult,
  type ProfileSaveResult,
  type ProfileStorageAdapter,
} from "./persistence.ts";

export {
  createWebcamFaceConsent,
  initialWebcamFaceConsent,
  transitionWebcamFaceConsent,
  type WebcamFaceConsentController,
  type WebcamFaceConsentEvent,
  type WebcamFaceConsentRejection,
  type WebcamFaceConsentState,
  type WebcamFaceConsentStatus,
  type WebcamFaceConsentTransition,
} from "./webcamConsent.ts";

export {
  createProfileEditor,
  type ProfileEditor,
  type ProfileEditorOptions,
  type ProfileEditorState,
} from "./editor.ts";

export {
  createWebcamFaceTexture,
  type WebcamFaceTextureAdapter,
  type WebcamFaceTextureBinding,
  type WebcamFaceTextureOptions,
  type WebcamFaceTextureState,
  type WebcamFaceTextureStatus,
} from "./webcamFaceTexture.ts";

export {
  createWebcamFacePanel,
  type WebcamFacePanel,
  type WebcamFacePanelOptions,
  type WebcamFacePanelState,
  type WebcamFacePanelStatus,
} from "./webcamPanel.ts";

export {
  createWebcamCapture,
  type WebcamCaptureBinding,
  type WebcamCaptureController,
  type WebcamCaptureOptions,
  type WebcamCaptureStatus,
} from "./webcamCapture.ts";
