export interface AuthenticatedUser {
    userId: string;
    apiKeyId: string;
    keyPrefix: string;
    permissions: string[];
    user: {
        email: string;
        name: string;
        balance: {
            currentAmount: number;
            currency: string;
        };
    };
}
export declare class AuthenticationService {
    private static instance;
    private UserApiKeyModel;
    private UserModel;
    private constructor();
    static getInstance(): AuthenticationService;
    initialize(): Promise<void>;
    authenticateApiKey(apiKey: string): Promise<AuthenticatedUser | null>;
    hasPermission(user: AuthenticatedUser, requiredPermission: string): Promise<boolean>;
    validatePermissions(user: AuthenticatedUser, requiredPermissions: string[]): Promise<boolean>;
    getUserBalance(userId: string): Promise<number>;
    hasSufficientBalance(userId: string, requiredAmount: number): Promise<boolean>;
}
export declare const authenticationService: AuthenticationService;
//# sourceMappingURL=AuthenticationService.d.ts.map