import { SfCommand } from '@salesforce/sf-plugins-core';
import { AnyJson } from '@salesforce/ts-types';
import { Connection } from '@salesforce/core';
type FieldUsageRow = {
    sObjectName: string;
    fieldApiName: string;
    fieldLabel: string;
    fieldCreatedDate: string;
    totalRecords: number;
    populatedRecords: number;
    populatedPercentageNumeric: number;
    populatedPercentage: string;
};
type SkippedFieldInfo = {
    sObjectName: string;
    fieldName: string;
    reason: string;
};
type FieldDistributionResult = {
    outputString: string;
    result: any[];
    reportFiles: any[];
    totalRecords: number;
};
export default class HardisDocObjectFieldUsage extends SfCommand<any> {
    static description: string;
    static examples: string[];
    static flags: any;
    protected identifierRegex: RegExp;
    protected compositeBatchSize: number;
    protected toolingCustomFieldBatchSize: number;
    protected objectsPromptSentinel: string;
    protected formatDateOnly(value: any): string;
    protected fetchFieldCreatedDates(connection: Connection, sObjectName: string, fieldApiNames: string[]): Promise<Record<string, string>>;
    protected validateIdentifier(identifier: string, label: string): void;
    protected extractCount(result: any): number;
    protected countRecords(connection: Connection, sObjectName: string, useTooling: boolean, fieldName?: string): Promise<number>;
    protected countFieldsWithComposite(connection: Connection, sObjectName: string, fields: any[], useTooling: boolean, skippedFields: SkippedFieldInfo[], batchSize?: number): Promise<Record<string, number>>;
    protected queryFieldDistribution(connection: Connection, sObjectName: string, fieldName: string, useTooling: boolean): Promise<any>;
    protected isInvalidTypeError(error: any): boolean;
    protected describeTarget(connection: Connection, sObjectName: string): Promise<{
        describeResult: any;
        useTooling: boolean;
    }>;
    protected processSingleFieldAnalysis(connection: Connection, sObjectName: string, fieldDescribe: any, useTooling: boolean): Promise<FieldDistributionResult>;
    protected processObjectFieldUsage(connection: Connection, sObjectName: string, eligibleFields: any[], useTooling: boolean): Promise<{
        rows: FieldUsageRow[];
        totalRecords: number;
        skippedFields: SkippedFieldInfo[];
    }>;
    protected generateFieldUsageCsvReport(rows: FieldUsageRow[], reportName: string, fileTitle: string): Promise<string>;
    protected filterDescribeFields(fields: any[]): any[];
    protected estimateApiCalls(contexts: Array<{
        sObjectName: string;
        eligibleFields: any[];
    }>, fieldFilters?: string[]): number;
    protected confirmApiUsage(plannedCalls: number, objectNames: string[]): Promise<boolean>;
    protected injectObjectsPromptSentinel(): void;
    run(): Promise<AnyJson>;
}
export {};
