import { n as AvatarFaceState, t as AvatarAssetsOverrides } from "./IFaceAvatarCapability-BrL19G0s.js"; //#region src/internal/avatar/createFaceAvatar.d.ts /** * Shared face-avatar dispatch — the single code path BOTH the selfie module * (`faceCapture` runAvatar actor) and the public `@incodetech/core/avatar` facade * use, so every camera module mounts avatars the same way. Lives in `internal/` * (not `modules/`) because `internal/` may not import from `modules/`; the public * `modules/avatar` entry is a thin re-export of this. See * docs/features/FACE_AVATAR.md. * * Public catalog of shippable face avatars. Each id maps to a lazily-loaded * provider, so a module only pays the bundle cost of the avatar it picks: * - `avatar-3d` → 3D VRM character, MediaPipe-tracked (premium look). * - `avatar-2d` → stylized 2D "satin" face, MediaPipe-tracked. Also the * personhood avatar. * - `privacy-lens` → WebGL frosted-glass lens over the real video (no tracking). * * (The Incode-data 2D avatar is parked — kept in infra, not in the public * catalog. See docs/features/FACE_AVATAR.md → Parked: the Incode-data avatar.) */ type AvatarId = 'avatar-3d' | 'avatar-2d' | 'privacy-lens'; interface FaceAvatarOptions { /** Which avatar to render. */ variant: AvatarId; /** The already-acquired camera stream (the host module owns it). */ stream: MediaStream; /** Runtime asset overrides (MediaPipe wasm/model, VRM); defaults to the CDN layout. */ assets?: AvatarAssetsOverrides; /** Upper bound on the avatar's internal detect/render loop (default 30). */ maxFps?: number; /** Initial verdict cue; defaults to `detecting`. */ initialState?: AvatarFaceState; } interface FaceAvatarHandle { /** The canvas to mount in place of the live video. */ readonly canvas: HTMLCanvasElement; /** Push a verdict cue (no-op for avatars without a verdict visual). */ setState(state: AvatarFaceState): void; /** Tear down the loop, model and hidden decode video. */ stop(): void; } /** * Mounts a cosmetic face avatar: lazy-loads the chosen provider, starts it on the * given stream, and returns a handle to mount the canvas + push verdict cues. The * avatar is **cosmetic-only** — it never feeds the authoritative * detection/quality/liveness/upload pipeline. */ declare function createFaceAvatar(options: FaceAvatarOptions): Promise; //#endregion export { createFaceAvatar as i, FaceAvatarHandle as n, FaceAvatarOptions as r, AvatarId as t };