import { SfCommand } from "@salesforce/sf-plugins-core";
import { Connection } from "@salesforce/core";
import { AnyJson } from "@salesforce/ts-types";
declare const IMPLEMENTATION_OUTCOME: {
    readonly ADDED: "added";
    readonly SKIPPED: "skipped";
    readonly IGNORED: "ignored";
    readonly FAILED: "failed";
};
type ImplementationOutcome = typeof IMPLEMENTATION_OUTCOME[keyof typeof IMPLEMENTATION_OUTCOME];
type BypassImplementationReportItem = {
    sObject?: string | null;
    name?: string | null;
    automation?: "ValidationRule" | "Trigger" | "Flow";
    outcome: ImplementationOutcome;
    comment?: string;
};
export default class HardisProjectGenerateBypass extends SfCommand<any> {
    private skipCredits;
    private retrieveFromOrg;
    private outputFile;
    private reports;
    static flags: any;
    static description: string;
    static examples: string[];
    run(): Promise<AnyJson>;
    generateReports(): Promise<void>;
    queryTriggers(connection: Connection): Promise<any>;
    filterTriggerResults(triggerResults: any, sObjects: any): any;
    queryValidationRules(connection: Connection, sObjects: {
        [key: string]: string;
    }): Promise<any>;
    queryFlows(connection: Connection): Promise<any>;
    filterFlowResults(flowResults: any, sObjects: any): any;
    generateXML(type: "customPermission" | "permissionSet", sObject: string, automation: string): string;
    private generateXMLFiles;
    generateFiles(targetSObjects: {
        [key: string]: string;
    }, targetAutomations: string[]): void;
    retrieveMetadataFiles(records: any[], metadataType: "ValidationRule" | "ApexTrigger" | "Flow"): Promise<any[]>;
    chunkArray<T>(array: T[], chunkSize?: number): T[][];
    handleValidationRuleFile(filePath: string, sObject: string, name: string): Promise<BypassImplementationReportItem>;
    applyBypassToValidationRules(connection: Connection, sObjects: {
        [key: string]: string;
    }): Promise<void>;
    handleTriggerFile(filePath: string, name: string): Promise<BypassImplementationReportItem>;
    applyBypassToTriggers(connection: Connection, sObjects: {
        [key: string]: string;
    }): Promise<void>;
    handleFlowFile(filePath: string, name: string): Promise<BypassImplementationReportItem>;
    applyBypassToFlows(connection: Connection, sObjects: {
        [key: string]: string;
    }): Promise<void>;
}
export {};
/**
 * Command TODO:
 * - Add option to determine sobjects directly from current project instead of calling API
 * - While generating, check if the metadata file already exists, if yes, warning
 * - Before implementing, check if the permission set file exists, if not, warning
 */ 
