import type { IUnleashStores } from '../types/stores.js';
import type { IUnleashConfig } from '../types/option.js';
import { type IApiUser } from '../types/api-user.js';
import { type IApiToken, type IApiTokenCreate, type IAuditUser } from '../types/index.js';
import type EventService from '../features/events/event-service.js';
import type { ResourceLimitsService } from '../features/resource-limits/resource-limits-service.js';
export declare class ApiTokenService {
    private store;
    private environmentStore;
    private logger;
    private activeTokens;
    private queryAfter;
    private eventService;
    private lastSeenSecrets;
    private flagResolver;
    private timer;
    private resourceLimitsService;
    private eventBus;
    constructor({ apiTokenStore, environmentStore, }: Pick<IUnleashStores, 'apiTokenStore' | 'environmentStore'>, config: Pick<IUnleashConfig, 'getLogger' | 'authentication' | 'flagResolver' | 'eventBus'>, eventService: EventService, resourceLimitsService: ResourceLimitsService);
    /**
     * Called by a scheduler without jitter to refresh all active tokens
     */
    fetchActiveTokens(): Promise<void>;
    getToken(secret: string): Promise<IApiToken | undefined>;
    getTokenWithCache(secret: string): Promise<IApiToken | undefined>;
    updateLastSeen(): Promise<void>;
    getAllTokens(): Promise<IApiToken[]>;
    getUserDefinedTokens(): Promise<IApiToken[]>;
    initApiTokens(tokens: IApiTokenCreate[]): Promise<void>;
    getUserForToken(secret: string): Promise<IApiUser | undefined>;
    updateExpiry(secret: string, expiresAt: Date, auditUser: IAuditUser): Promise<IApiToken>;
    delete(secret: string, auditUser: IAuditUser): Promise<void>;
    /**
     * @param newToken
     * @param auditUser Used for event log and referencing who made the token
     */
    createApiTokenWithProjects(newToken: Omit<IApiTokenCreate, 'secret'>, auditUser?: IAuditUser): Promise<IApiToken>;
    private internalCreateApiTokenWithProjects;
    private validateApiTokenEnvironment;
    private validateApiTokenLimit;
    createMigratedProxyApiToken(newToken: Omit<IApiTokenCreate, 'secret'>): Promise<IApiToken>;
    private normalizeTokenType;
    private insertNewApiToken;
    private findInvalidProject;
    private generateSecretKey;
}
//# sourceMappingURL=api-token-service.d.ts.map