import type { Application, IApplicationOptions } from "pixi.js";
import type { Live2DModel as Live2DModelType } from "pixi-live2d-display";
import { HitokotoOptions, Hitokoto } from "@tomiaa/hitokoto";
import live2d from "pixi-live2d-display";
import type * as PIXI from "pixi.js";
import { ModelOption } from "./modelList";
export interface Live2dOptions {
    el: any;
    jsBaseURL?: string;
    live2d_2_ModelBaseURL?: string;
    live2d_3_ModelBaseURL?: string;
    loadLive2d_2?: boolean;
    loadLive2d_3?: boolean;
    playLoadingAnimation?: boolean;
    showLoading?: boolean;
    showControl?: boolean;
    iApplicationOptions?: IApplicationOptions;
    maxWidth?: number;
    minWidth?: number;
    aspectRatio?: [number, number];
    beforeInit?: (data: {
        options: Live2dOptions;
        modelList: ModelOption[];
    }) => void;
    afterInit?: (data: {
        options: Live2dOptions;
        modelList: ModelOption[];
        currentModelOption: ModelOption;
        Live2DModel: typeof Live2DModelType;
        app: Application;
    }) => void;
    randomPeople?: boolean;
    allowDrag?: boolean;
    hitokoto?: boolean;
    hitokotoOptions?: HitokotoOptions;
}
declare global {
    interface Window {
        PIXI: typeof PIXI & {
            live2d: typeof live2d;
        };
        LIVE2DCUBISMFRAMEWORK: any;
        Live2DCubismCore: any;
        LIVE2DCUBISMPIXI: any;
    }
}
export declare class Live2d {
    options: Live2dOptions;
    el: any;
    canvas: any;
    Live2DModel?: typeof Live2DModelType;
    app?: Application;
    loading: boolean;
    model?: InstanceType<typeof Live2DModelType> & {
        [prop: string]: any;
    };
    modelList: ModelOption[];
    currentModelOption?: ModelOption;
    personIndex: number;
    clothingIndex: number;
    elLoading: any;
    elControl: any;
    elSwitchPerson: any;
    elSwitchClothing: any;
    elHitokoto?: any;
    hitokoto?: Hitokoto;
    constructor(options: Live2dOptions);
    get getJsBaseURL(): string;
    get getLive2d_2_ModelBaseURL(): string;
    get getLive2d_3_ModelBaseURL(): string;
    init(): Promise<void>;
    loadJS(): Promise<void>;
    createPIXI(): void;
    loadModelList(): Promise<undefined>;
    addLoadingSvg(): void;
    addControls(): void;
    loadModel(): Promise<void>;
    setPersonIndex(): void;
    onresize(): void;
    animation(e?: MouseEvent | string): void;
    switchPerson(): void;
    switchClothing(): void;
    createHitokoto(): void;
    destroy(): void;
}
export default Live2d;
