import APIRepository, { APIRepositoryProps } from '../../../../../core/modules/_shared/infrastructure/api/api-repository';
import { SharedProtectionPlanRepository } from '../../domain/repositories/shared-protection-plan-repository';
import SharedProtectionPlan from '../../domain/models/shared-protection-plan';
import { SharedPlanView } from '../../domain/models/shared-plan-view';
import { SharedPlanShare } from '../../domain/models/shared-plan-share';
import { FindSharedPlansCriteria } from '../../application/listing/find-shared-protection-plans-by-criteria-use-case';
import { PaginationOptions, SortOptions } from "../../../../../core/modules/_shared/index";
import { ResourceCount } from '../../../../../core/modules/_shared/domain/models/resource-count';
export declare class AppSharedProtectionPlanRepository extends APIRepository implements SharedProtectionPlanRepository {
    constructor(props: APIRepositoryProps);
    findById(id: string): Promise<SharedProtectionPlan | null>;
    findAll(): Promise<SharedPlanView[]>;
    findByCriteria(criteria: FindSharedPlansCriteria, pagination?: PaginationOptions, sort?: SortOptions): Promise<SharedPlanView[]>;
    count(criteria: FindSharedPlansCriteria): Promise<ResourceCount>;
    save(plan: SharedProtectionPlan): Promise<void>;
    delete(id: string): Promise<void>;
    configure(planId: string, dataShards: SharedPlanShare[], backupShards: SharedPlanShare[], keyShards: SharedPlanShare[], encryptedKey?: string, assetsMetadata?: any, custodianPair?: {
        keyShard: {
            id: string;
            data: string;
        };
        dataShard: {
            id: string;
            data: string;
        };
    }): Promise<void>;
    reconfigure(planId: string, mergeProcessId: string, dataShards: SharedPlanShare[], backupShards: SharedPlanShare[], keyShards: SharedPlanShare[], encryptedKey?: string, assetsMetadata?: any, custodianPair?: {
        keyShard: {
            id: string;
            data: string;
        };
        dataShard: {
            id: string;
            data: string;
        };
    }): Promise<void>;
}
