import { SchemeRepository } from '../repositories/scheme.repository';
export type HardDeleteScope = {
    userId?: string;
    roleName?: string;
    districtId?: string | null;
    bypassDistrictScope?: boolean;
    isDistrictScoped?: boolean;
};
export type HardDeleteLookupResult = {
    id: string;
    schemeId: string;
    name: string;
    isDeleted: boolean;
};
export type HardDeleteDbCounts = {
    invoiceGenerationLog: number;
    invoices: number;
    schemeVillage: number;
    schemeStaff: number;
    schemeYearlyDetails: number;
    schemeImportPenalties: number;
    schemeInvoiceJobs: number;
    notifications: number;
    schemes: number;
};
export type HardDeleteExecutionResult = {
    mode: 'sync' | 'async';
    jobId?: string;
    schemeUuid: string;
    humanSchemeId: string;
    schemeName: string;
    deletedBy: string;
    deletedAt: string;
    dbCounts?: HardDeleteDbCounts;
    s3DeletedCount?: number;
    s3FailedKeys?: string[];
    s3Warning?: string;
};
export declare class SchemeHardDeleteService {
    private schemeRepository;
    constructor(schemeRepository?: SchemeRepository);
    lookupByHumanSchemeId(humanSchemeId: string, scope?: HardDeleteScope): Promise<HardDeleteLookupResult>;
    validateConfirmName(actualName: string, confirmName: string): void;
    requestHardDelete(params: {
        humanSchemeId: string;
        confirmName: string;
        scope: HardDeleteScope;
    }): Promise<HardDeleteExecutionResult>;
    executeHardDelete(params: {
        schemeUuid: string;
        humanSchemeId: string;
        schemeName: string;
        deletedBy: string;
    }): Promise<HardDeleteExecutionResult>;
}
export declare function runSchemeHardDeleteWorker(params: {
    schemeUuid: string;
    humanSchemeId: string;
    schemeName: string;
    deletedBy: string;
}): Promise<HardDeleteExecutionResult>;
export declare function resolveHardDeleteJobIdForScheme(schemeUuid: string): string;
//# sourceMappingURL=schemeHardDelete.service.d.ts.map