/**
 * Avatar / Lip-sync Generation Processing Utility
 *
 * Central registry + dispatch for avatar handlers across providers
 * (D-ID, HeyGen, Replicate-hosted MuseTalk / SadTalker / Wav2Lip).
 *
 * Mirrors the static-handler-registry pattern established by
 * `TTSProcessor` / `STTProcessor` / `VideoProcessor` / `MusicProcessor`.
 *
 * @module utils/avatarProcessor
 */
import { ErrorCategory, ErrorSeverity } from "../constants/enums.js";
import type { AvatarHandler, AvatarOptions, AvatarResult } from "../types/index.js";
import { NeuroLinkError } from "./errorHandling.js";
/**
 * Avatar-specific error codes.
 */
export declare const AVATAR_ERROR_CODES: {
    readonly PROVIDER_NOT_SUPPORTED: "AVATAR_PROVIDER_NOT_SUPPORTED";
    readonly PROVIDER_NOT_CONFIGURED: "AVATAR_PROVIDER_NOT_CONFIGURED";
    readonly GENERATION_FAILED: "AVATAR_GENERATION_FAILED";
    readonly POLL_TIMEOUT: "AVATAR_POLL_TIMEOUT";
    readonly INVALID_INPUT: "AVATAR_INVALID_INPUT";
    readonly AUDIO_REQUIRED: "AVATAR_AUDIO_REQUIRED";
    readonly IMAGE_REQUIRED: "AVATAR_IMAGE_REQUIRED";
    readonly AUDIO_TOO_LONG: "AVATAR_AUDIO_TOO_LONG";
};
/**
 * Typed error class for avatar-generation failures.
 */
export declare class AvatarError extends NeuroLinkError {
    constructor(options: {
        code: string;
        message: string;
        category?: ErrorCategory;
        severity?: ErrorSeverity;
        retriable?: boolean;
        context?: Record<string, unknown>;
        originalError?: Error;
    });
}
/**
 * Static processor managing the avatar handler registry.
 */
export declare class AvatarProcessor {
    private static readonly handlers;
    /**
     * Register an avatar handler for a specific provider.
     */
    static registerHandler(providerName: string, handler: AvatarHandler): void;
    /**
     * Check if a provider has a registered avatar handler.
     */
    static supports(providerName: string): boolean;
    /**
     * List the names of all registered providers.
     */
    static listProviders(): string[];
    /**
     * Get a registered avatar handler by provider name.
     *
     * Exposed publicly so module-level auto-registration code can reuse an
     * already-registered primary handler when backfilling its aliases.
     */
    static getHandler(providerName: string): AvatarHandler | undefined;
    private static buildSpanAttributes;
    /**
     * Generate an avatar video via the registered handler.
     *
     * @throws AvatarError on registry miss, handler-not-configured, or
     *         generation failure.
     */
    static generate(provider: string, options: AvatarOptions): Promise<AvatarResult>;
}
