import { Type, Entity, EntityState, Repository, ViewModel } from '@farris/devkit-vue';
import { BefSessionService } from './session/index';
import { BefProxy } from './bef-proxy';
/**
 * Bef实体仓库
 * @description
 */
declare abstract class BefRepository<T extends Entity> extends Repository<T> {
    /**
     * Bef代理
     */
    abstract apiProxyType: Type<BefProxy>;
    /**
     * 注入器
     */
    private injector;
    /**
     * Bef会话管理
     */
    sessionService: BefSessionService;
    /**
     * API代理
     */
    apiProxy: BefProxy;
    /**
     * 实体状态
     */
    entityState: EntityState<T>;
    /**
     * 分页信息
     */
    paginationInfo: any;
    /**
     * 构造函数
     */
    constructor(viewModel: ViewModel);
    /**
     * 初始化
     */
    init(): void;
    /**
     * 初始化实体状态
     */
    private initEntityState;
    /**
     * 初始化Proxy
     */
    private initApiProxy;
    /**
     * 初始化SessionService
     */
    private initSessionService;
    /**
     * 初始化分页信息
     */
    private initPaginationInfo;
    /**
     * 查询实体
     */
    getEntities(filters: any[], sorts: any[], pageSize?: number, pageIndex?: number): Promise<T[]>;
    /**
     * 获取实体
     */
    getEntityById(id: string): Promise<T>;
    /**
     * 加锁编辑数据
     * @param id 数据id
     * @returns
     */
    editEntityById(id: string): Promise<T | null>;
    /**
     * 创建新实体
     */
    createEntity(defaultValue?: any): Promise<T>;
    /**
     * 批量创建实体
     * @param defaultValues 实体字段默认值，keyvalue格式
     * @returns 实体数组
     */
    createEntities(defaultValues: Array<any>): Promise<T[]>;
    /**
     * 创建从表或从从表实体
     * @param path 实体路径
     * @param defaultValues 默认值，keyvalue格式
     * @returns
     */
    createEntityByPath(path: string, defaultValues?: Array<any>): Promise<T>;
    /**
     * 批量创建从表或从从表实体
     * @param path 实体路径，如/1/educations
     * @param defaultValues 默认值，keyvalue格式
     * @returns 实体数组
     */
    createEntitiesByPath(path: string, defaultValues: Array<any>): Promise<T[]>;
    /**
     * 删除实体
     */
    removeEntityById(id: string): Promise<boolean>;
    /**
     * 批量删除仓库数据
     * @param ids 实体id数组
     * @returns
     */
    removeEntitiesByIds(ids: string[]): Promise<boolean>;
    /**
     * 删除从表或从从表实体
     * @param fpath 实体路径
     * @param id 实体id
     * @returns
     */
    removeEntityByPath(fpath: string, id: string): Promise<boolean>;
    /**
     * 批量删除从表或从从表数据
     * @param fPath 实体路径
     * @param ids 实体id数组
     * @returns
     */
    removeEntitiesByPath(fPath: string, ids: string[]): Promise<boolean>;
    /**
     * 删除实体
     */
    removeAndSaveEntityById(id: string): Promise<boolean>;
    /**
     * 保存实体变更
     */
    saveEntityChanges(): Promise<boolean>;
    /**
     * 撤销实体变更
     */
    cancelEntityChanges(): Promise<boolean>;
    /**
     * 是否有未保存的变更
     * @returns
     */
    hasChanges(): Promise<any>;
    /**
     * 构造EntityFilter
     */
    private buildEntityFilter;
}
export { BefRepository };
