import { RPCResponse, UserDto } from "../interfaces";
interface RabbitAddress<Keys extends Record<string, {
    dto?: any;
    message?: any;
}>> {
    exchange: string;
    type: "topic" | "direct" | "fanout";
    routingkeys: {
        [K in keyof Keys]: {
            key: string;
            dto?: Keys[K]["dto"];
            message?: Keys[K]["message"];
        };
    };
}
type AuthRoutingKeys = {
    default: {};
    syncUsers: {
        dto: {
            timestamp?: number;
        };
        message: RPCResponse<UserDto[]>;
    };
    getToken: {};
    revokeToken: {};
    revokeUser: {};
    checkCredentials: {};
    getTwofa: {};
};
export declare const AuthenticationRabbitAPI: RabbitAddress<AuthRoutingKeys>;
export interface GetEwanoIdDto {
    userId: string;
}
export interface EwanoGetIdResponse {
    token: string;
    userId: string;
    telnum: string;
}
export interface IRevokeToken {
    jti: string;
}
export interface IRevokeUser {
    userid: string;
    ttl: number;
}
export declare class UserService {
    private readonly rabbit;
    getUserProfile(userId: string): Promise<RPCResponse<EwanoGetIdResponse>>;
    syncUsers(timestamp: number): Promise<RPCResponse<UserDto[]>>;
    revokeToken(jti: string): Promise<void>;
    revokeUser(userid: string, ttl: number): Promise<void>;
    check2faCredentials(userid: string, passwd?: string, token?: string): Promise<RPCResponse<{
        valid: boolean;
    }>>;
    getUserTwofa(userid: string): Promise<RPCResponse<{
        isActive: boolean;
    }>>;
}
export declare const UserRabbitModule: import("@nestjs/common").DynamicModule;
export {};
