import * as vue from 'vue';

interface Job {
    id: string;
    key: string;
    status: JobStatus;
    message: string;
    data?: any;
    params?: any;
}
type JobStatus = 'init' | 'success' | 'fail';

declare const _default$2: vue.DefineComponent<{}, {}, {
    jobMap: Map<string, Job>;
}, {}, {
    /**
     * 创建id
     *
     * @returns
     */
    createId: () => string;
    /**
     * 分配任务
     *
     * @param jobs
     */
    dispatchJob(jobs: Job[]): void;
    /**
     * 处理任务
     *
     * @param jobs
     * @returns
     */
    handleJob(job: Job): Promise<void>;
    /**
     * 触发任务更新
     *
     * @param this
     * @param job
     * @returns
     */
    emitJob(job: Job): void;
    /**
     * 触发事件
     *
     * @param data
     * @returns
     */
    emitEvent(data_0: string, ...data_1: any[]): void;
    /**
     * 触发数据更新
     *
     * @param data
     * @returns
     */
    emitData(data_0: string, data_1: any): void;
    /**
     * 触发方法
     *
     * @param data
     * @returns
     */
    emitMethod(data_0: string, ...data_1: any[]): void;
}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{}>>, {}, {}>;

declare const _default$1: vue.DefineComponent<{}, {}, {
    jobs: Job[];
}, {}, {
    /**
     * 创建id
     *
     * @returns
     */
    createId: () => string;
    /**
     * 创建任务
     *
     * @param key
     * @returns
     */
    createJob(key: string, params?: any): vue.Ref<{
        id: string;
        key: string;
        status: JobStatus;
        message: string;
        data?: any;
        params?: any;
    }>;
    /**
     * 删除任务
     *
     * @param id
     * @returns
     */
    removeJob(id: string): void;
    /**
     * 添加任务
     *
     * @param key
     * @returns
     */
    addJob<T = any, K = any>(key: string, params?: K): Promise<T>;
    /**
     * 接收任务
     *
     * @param job
     */
    receiveJob(job: Job): void;
    /**
     * 接收事件
     *
     * @param data
     */
    receiveEvent(data: [string, ...any[]]): void;
    /**
     * 接收数据
     *
     * @param data
     */
    receiveData(data: [string, any]): void;
    /**
     * 接收方法
     *
     * @param data
     */
    receiveMethod(data: [string, ...any[]]): void;
}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{}>>, {}, {}>;

declare const _default: {
    logicMixin: vue.DefineComponent<{}, {}, {
        jobMap: Map<string, Job>;
    }, {}, {
        createId: () => string;
        dispatchJob(jobs: Job[]): void;
        handleJob(job: Job): Promise<void>;
        emitJob(job: Job): void;
        emitEvent(data_0: string, ...data_1: any[]): void;
        emitData(data_0: string, data_1: any): void;
        emitMethod(data_0: string, ...data_1: any[]): void;
    }, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{}>>, {}, {}>;
    renderMixin: vue.DefineComponent<{}, {}, {
        jobs: Job[];
    }, {}, {
        createId: () => string;
        createJob(key: string, params?: any): vue.Ref<{
            id: string;
            key: string;
            status: JobStatus;
            message: string;
            data?: any;
            params?: any;
        }>;
        removeJob(id: string): void;
        addJob<T = any, K = any>(key: string, params?: K | undefined): Promise<T>;
        receiveJob(job: Job): void;
        receiveEvent(data: [string, ...any[]]): void;
        receiveData(data: [string, any]): void;
        receiveMethod(data: [string, ...any[]]): void;
    }, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{}>>, {}, {}>;
};

export { _default as default, _default$2 as logicMixin, _default$1 as renderMixin };
