import type { Appearance } from '../core/contract.js';
import { avatarPreview } from '../three/preview.js';
import { type CharacterPack, type CharacterRecipe } from './contract.js';
import './style.css';
export type CharacterCreatorOptions = {
    pack: CharacterPack;
    appearance: Appearance;
    recipe?: CharacterRecipe;
    /** Save through the central browser session; worlds must redirect there for writes. */
    save: (recipe: CharacterRecipe, expectedRevision: number) => Promise<Appearance>;
    onSaved?: (appearance: Appearance) => void;
    preview?: ReturnType<typeof avatarPreview>;
};
/** Framework-independent, disposable creator. All drafts remain local until save(). */
export declare function mountCharacterCreator(container: HTMLElement, options: CharacterCreatorOptions): {
    getRecipe: () => {
        version: 1;
        packRevision: string;
        rig: string;
        parts: {
            head?: string | null | undefined;
            hair?: string | null | undefined;
            headwear?: string | null | undefined;
            top?: string | null | undefined;
            outerwear?: string | null | undefined;
            arms?: string | null | undefined;
            armwear?: string | null | undefined;
            legs?: string | null | undefined;
            feet?: string | null | undefined;
            belt?: string | null | undefined;
            shoulders?: string | null | undefined;
            neck?: string | null | undefined;
            back?: string | null | undefined;
            weapon?: string | null | undefined;
        };
        colors: {
            skin: string;
            hair: string;
            cloth: string;
        };
        colorMode?: "original" | "custom" | undefined;
        partColorModes?: {
            head?: "original" | "custom" | undefined;
            hair?: "original" | "custom" | undefined;
            headwear?: "original" | "custom" | undefined;
            top?: "original" | "custom" | undefined;
            outerwear?: "original" | "custom" | undefined;
            arms?: "original" | "custom" | undefined;
            armwear?: "original" | "custom" | undefined;
            legs?: "original" | "custom" | undefined;
            feet?: "original" | "custom" | undefined;
            belt?: "original" | "custom" | undefined;
            shoulders?: "original" | "custom" | undefined;
            neck?: "original" | "custom" | undefined;
            back?: "original" | "custom" | undefined;
            weapon?: "original" | "custom" | undefined;
        } | undefined;
    };
    dispose(): void;
};
