import { IEntityIdentifier } from './base';
import { Policy } from './policies';
export interface LabelledStatistic {
    name?: string;
    description?: string;
    priority?: number;
}
export interface LabelledStatisticList<TStatistic extends LabelledStatistic> {
    [key: string]: TStatistic;
}
export interface StatisticValue {
    bytes?: number;
    files?: number;
    folders?: number;
    versions?: number;
    storage?: number;
}
export interface LocationStatistic extends LabelledStatistic, StatisticValue {
}
export declare enum RemediationStatus {
    NotRemediated = "not_remediated",
    Remediated = "remediated",
    Mitigated = "mitigated"
}
export declare enum PolicyAssignmentStatus {
    Pending = "pending",
    ActionNeeded = "action-needed",
    Failed = "failed",
    Processing = "processing",
    Complete = "complete"
}
export interface PolicyStatistic extends LabelledStatistic, StatisticValue {
    not_remediated?: StatisticValue;
    remediated?: StatisticValue;
    policy?: Policy;
}
export declare type PolicyStatisticsTimeline = {
    timestamp?: number;
    stats?: LabelledStatisticList<PolicyStatistic>;
}[];
export interface PolicyStatistics extends IEntityIdentifier<string> {
    count?: number;
    executions?: number;
    risk_timeline?: PolicyStatisticsTimeline;
    by_status?: LabelledStatisticList<LocationStatistic>;
    by_content_category?: LabelledStatisticList<LocationStatistic>;
    by_ext?: LabelledStatisticList<LocationStatistic>;
    by_depth?: LabelledStatisticList<LocationStatistic>;
    by_size?: LabelledStatisticList<LocationStatistic>;
    by_age?: LabelledStatisticList<LocationStatistic>;
    by_versions?: LabelledStatisticList<LocationStatistic>;
    by_risk?: LabelledStatisticList<PolicyStatistic>;
    by_assignment_status?: LabelledStatisticList<PolicyStatistic>;
    by_group?: LabelledStatisticList<PolicyStatistic>;
    by_audit_category?: LabelledStatisticList<LocationStatistic>;
}
export interface PoliciesStatisticsSummary {
    policies_by_risk?: PolicyStatistic[];
}
