import type { IUnleashConfig } from '../../types/option.js';
import type { IUnleashStores } from '../../types/stores.js';
import type VersionService from '../../services/version-service.js';
import type { GetActiveUsers } from './getActiveUsers.js';
import type { ProjectModeCount } from '../project/project-store.js';
import type { GetProductionChanges } from './getProductionChanges.js';
import type { GetLicensedUsers } from './getLicensedUsers.js';
import type { GetReadOnlyUsers } from './getReadOnlyUsers.js';
import type { IFeatureUsageInfo } from '../../services/version-service.js';
import type { GetEdgeInstances } from './getEdgeInstances.js';
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;
    passwordAuthEnabled: boolean;
    SCIMenabled: boolean;
    clientApps: {
        range: TimeRange;
        count: number;
    }[];
    activeUsers: Awaited<ReturnType<GetActiveUsers>>;
    licensedUsers: Awaited<ReturnType<GetLicensedUsers>>;
    productionChanges: Awaited<ReturnType<GetProductionChanges>>;
    previousDayMetricsBucketsCount: {
        enabledCount: number;
        variantCount: number;
    };
    maxEnvironmentStrategies: number;
    maxConstraints: number;
    maxConstraintValues: number;
    releaseTemplates: number;
    releasePlans: number;
    edgeInstanceUsage: Awaited<ReturnType<GetEdgeInstances>>;
    readOnlyUsers?: number;
}
export type InstanceStatsSigned = Omit<InstanceStats, 'projects'> & {
    projects: number;
    sum: string;
};
export declare class InstanceStatsService {
    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 flagResolver;
    private appCount?;
    getActiveUsers: GetActiveUsers;
    getLicencedUsers: GetLicensedUsers;
    getReadOnlyUsers: GetReadOnlyUsers;
    getProductionChanges: GetProductionChanges;
    getEdgeInstances: GetEdgeInstances;
    private featureStrategiesReadModel;
    private featureStrategiesStore;
    private trafficDataUsageStore;
    private releasePlanTemplateStore;
    private releasePlanStore;
    constructor({ featureToggleStore, userStore, projectStore, environmentStore, strategyStore, contextFieldStore, groupStore, segmentStore, roleStore, settingStore, clientInstanceStore, eventStore, apiTokenStore, clientMetricsStoreV2, featureStrategiesReadModel, featureStrategiesStore, trafficDataUsageStore, releasePlanTemplateStore, releasePlanStore, }: Pick<IUnleashStores, 'featureToggleStore' | 'userStore' | 'projectStore' | 'environmentStore' | 'strategyStore' | 'contextFieldStore' | 'groupStore' | 'segmentStore' | 'roleStore' | 'settingStore' | 'clientInstanceStore' | 'eventStore' | 'apiTokenStore' | 'clientMetricsStoreV2' | 'featureStrategiesReadModel' | 'featureStrategiesStore' | 'trafficDataUsageStore' | 'releasePlanTemplateStore' | 'releasePlanStore'>, { flagResolver }: Pick<IUnleashConfig, 'flagResolver'>, versionService: VersionService, getActiveUsers: GetActiveUsers, getProductionChanges: GetProductionChanges, getLicencedUsers: GetLicensedUsers, getReadOnlyUsers: GetReadOnlyUsers, getEdgeInstances: GetEdgeInstances);
    memory: Map<string, () => Promise<any>>;
    memorize<T>(key: string, fn: () => Promise<T>): Promise<T>;
    getProjectModeCount(): Promise<ProjectModeCount[]>;
    getToggleCount(): Promise<number>;
    getArchivedToggleCount(): Promise<number>;
    hasOIDC(): Promise<boolean>;
    hasSAML(): Promise<boolean>;
    hasPasswordAuth(): Promise<boolean>;
    hasSCIM(): Promise<boolean>;
    getReleaseTemplates(): Promise<number>;
    getReleasePlans(): Promise<number>;
    getStats(): Promise<InstanceStats>;
    getFeatureUsageInfo(): Promise<IFeatureUsageInfo>;
    getHostedBy(): string;
    getLicenseType(): string;
    featuresExported(): Promise<number>;
    featuresImported(): Promise<number>;
    customStrategiesCount(): Promise<number>;
    customStrategiesInUseCount(): Promise<number>;
    postgresVersion(): Promise<string>;
    groupCount(): Promise<number>;
    roleCount(): Promise<number>;
    customRolesCount(): Promise<number>;
    customRolesCountInUse(): Promise<number>;
    segmentCount(): Promise<number>;
    contextFieldCount(): Promise<number>;
    projectContextFieldCount(): Promise<number>;
    strategiesCount(): Promise<number>;
    environmentCount(): Promise<number>;
    countPreviousDayHourlyMetricsBuckets(): Promise<{
        enabledCount: number;
        variantCount: number;
    }>;
    countApiTokensByType(): Promise<Map<string, number>>;
    getRegisteredUsers(): Promise<number>;
    countServiceAccounts(): Promise<number>;
    getCurrentTrafficData(): Promise<number>;
    getLabeledAppCounts(): Promise<Partial<{
        [key in TimeRange]: number;
    }>>;
    getAppCountSnapshot(range: TimeRange): number | undefined;
    getSignedStats(): Promise<InstanceStatsSigned>;
}
//# sourceMappingURL=instance-stats-service.d.ts.map