/**
 * Spine 动画配置接口
 */
interface SpineAnimationConfig {
    id: string;
    atlas: string;
    skeleton: string;
    animation: string;
    scale?: string;
    'x-axis'?: string;
    'y-axis'?: string;
    fit?: string;
    skin?: string;
    'offset-x'?: string;
    'offset-y'?: string;
    drag?: boolean;
    clip?: boolean;
    extraData?: Record<string, any>;
}

/**
 * 拖拽角色配置接口
 */
interface DragWaifuConfig {
    /** 容器元素的 ID，默认 'drag-waifu' */
    id?: string;
    /** 容器宽度，默认 '200px' */
    width?: string;
    /** 容器高度，默认 '200px' */
    height?: string;
    /** 初始 top 位置 */
    top?: string;
    /** 初始 bottom 位置 */
    bottom?: string;
    /** 初始 left 位置 */
    left?: string;
    /** 初始 right 位置 */
    right?: string;
    /** Spine 动画配置数组 */
    spineConfig?: SpineAnimationConfig[];
}

/**
 * 拖拽角色实例接口
 */
interface DragWaifuInstance {
    /**
     * 销毁拖拽角色实例
     * 移除所有事件监听器和 DOM 元素
     */
    destroy(): void;
}

/**
 * 创建可拖动的 Spine 动画角色
 * @param config 配置对象
 * @returns 拖拽角色实例
 */
declare function createDraggableWaifu(config?: DragWaifuConfig): DragWaifuInstance;

// 导出给模块系统使用
declare module 'drag-waifu' {
    export = createDraggableWaifu;
}

// 导出给全局使用
declare global {
    interface Window {
        createDraggableWaifu: typeof createDraggableWaifu;
    }
}