import { Connection } from 'mongoose';
import * as factory from '../factory';
import ActionModel from './mongoose/model/action';
export declare type IAction<T extends factory.actionType> = factory.action.IAction<factory.action.IAttributes<T, any, any>>;
/**
 * アクションリポジトリー
 */
export declare class MongoRepository {
    readonly actionModel: typeof ActionModel;
    constructor(connection: Connection);
    /**
     * アクション開始
     */
    start<T extends factory.actionType>(attributes: factory.action.IAttributes<T, any, any>): Promise<IAction<T>>;
    /**
     * アクション完了
     */
    complete<T extends factory.actionType>(params: {
        typeOf: T;
        id: string;
        result: any;
    }): Promise<IAction<T>>;
    /**
     * アクション取消
     */
    cancel<T extends factory.actionType>(params: {
        typeOf: T;
        id: string;
    }): Promise<IAction<T>>;
    /**
     * アクション失敗
     */
    giveUp<T extends factory.actionType>(params: {
        typeOf: T;
        id: string;
        error: any;
    }): Promise<IAction<T>>;
    /**
     * IDで取得する
     */
    findById<T extends factory.actionType>(params: {
        typeOf: T;
        id: string;
    }): Promise<IAction<T>>;
}
