import type { IUnleashConfig } from '../../types/option';
import type { IUnleashStores } from '../../types/stores';
import type VersionService from '../../services/version-service';
import type { GetActiveUsers } from './getActiveUsers';
import type { ProjectModeCount } from '../project/project-store';
import type { GetProductionChanges } from './getProductionChanges';
export type TimeRange = 'allTime' | '30d' | '7d';
export interface InstanceStats {
    instanceId: string;
    timestamp: Date;
    versionOSS: string;
    versionEnterprise?: string;
    users: number;
    serviceAccounts: number;
    apiTokens: Map<string, number>;
    featureToggles: number;
    archivedFeatureToggles: number;
    projects: ProjectModeCount[];
    contextFields: number;
    roles: number;
    customRootRoles: number;
    customRootRolesInUse: number;
    featureExports: number;
    featureImports: number;
    groups: number;
    environments: number;
    segments: number;
    strategies: number;
    SAMLenabled: boolean;
    OIDCenabled: boolean;
    clientApps: {
        range: TimeRange;
        count: number;
    }[];
    activeUsers: Awaited<ReturnType<GetActiveUsers>>;
    productionChanges: Awaited<ReturnType<GetProductionChanges>>;
    previousDayMetricsBucketsCount: {
        enabledCount: number;
        variantCount: number;
    };
}
export type InstanceStatsSigned = Omit<InstanceStats, 'projects'> & {
    projects: number;
    sum: string;
};
export declare class InstanceStatsService {
    private logger;
    private strategyStore;
    private userStore;
    private featureToggleStore;
    private contextFieldStore;
    private projectStore;
    private groupStore;
    private environmentStore;
    private segmentStore;
    private roleStore;
    private eventStore;
    private apiTokenStore;
    private versionService;
    private settingStore;
    private clientInstanceStore;
    private clientMetricsStore;
    private appCount?;
    private getActiveUsers;
    private getProductionChanges;
    constructor({ featureToggleStore, userStore, projectStore, environmentStore, strategyStore, contextFieldStore, groupStore, segmentStore, roleStore, settingStore, clientInstanceStore, eventStore, apiTokenStore, clientMetricsStoreV2, }: Pick<IUnleashStores, 'featureToggleStore' | 'userStore' | 'projectStore' | 'environmentStore' | 'strategyStore' | 'contextFieldStore' | 'groupStore' | 'segmentStore' | 'roleStore' | 'settingStore' | 'clientInstanceStore' | 'eventStore' | 'apiTokenStore' | 'clientMetricsStoreV2'>, { getLogger }: Pick<IUnleashConfig, 'getLogger'>, versionService: VersionService, getActiveUsers: GetActiveUsers, getProductionChanges: GetProductionChanges);
    refreshAppCountSnapshot(): Promise<Partial<{
        [key in TimeRange]: number;
    }>>;
    getProjectModeCount(): Promise<ProjectModeCount[]>;
    getToggleCount(): Promise<number>;
    getArchivedToggleCount(): Promise<number>;
    hasOIDC(): Promise<boolean>;
    hasSAML(): Promise<boolean>;
    /**
     * use getStatsSnapshot for low latency, sacrificing data-freshness
     */
    getStats(): Promise<InstanceStats>;
    getLabeledAppCounts(): Promise<Partial<{
        [key in TimeRange]: number;
    }>>;
    getAppCountSnapshot(range: TimeRange): number | undefined;
    getSignedStats(): Promise<InstanceStatsSigned>;
}
//# sourceMappingURL=instance-stats-service.d.ts.map