import { LoggerService } from "@nestjs/common";
import { LogtoM2MConfig } from "./config";
import { LogtoTokenVerifier } from "../token";
import { LogtoPersonalAccessTokenResponse, LogtoRole, LogtoRoleResponse, LogtoUser, LogtoUserResponse } from "./types";
import { p3Values } from "point3-common-tool";
export declare const LogtoM2MClientToken: unique symbol;
export declare class LogtoM2MClient {
    private readonly config;
    private readonly tokenVerifier;
    private readonly logger;
    private logtoConfig;
    private accessToken?;
    private readonly authRestTemplate;
    private readonly apiRestTemplate;
    constructor(config: LogtoM2MConfig, tokenVerifier: LogtoTokenVerifier, logger: LoggerService);
    fetchAccessToken(): Promise<void>;
    fetchAccessTokenByPAT(pat: string): Promise<{
        accessToken: string;
    }>;
    private getAccessToken;
    getRoles(): Promise<LogtoRoleResponse[]>;
    getRoleByName(name: string): Promise<LogtoRoleResponse>;
    createRole(role: LogtoRole): Promise<LogtoRoleResponse>;
    assignRoleToUser(userId: string, roleId: string): Promise<void>;
    createUser(user: LogtoUser): Promise<string>;
    updateUserClientInfo(userId: string, clientId?: string): Promise<void>;
    getUser(id: string): Promise<LogtoUserResponse>;
    getUserByUsername(username: string): Promise<LogtoUserResponse>;
    suspendUser(userId: string): Promise<LogtoUserResponse>;
    deleteUser(userId: string): Promise<void>;
    deleteUserRole(userId: string, roleId: string): Promise<void>;
    unsuspendUser(userId: string): Promise<LogtoUserResponse>;
    sendVerificationCode(identifier: p3Values.PhoneNumber | p3Values.Email): Promise<void>;
    verifyCode(identifier: p3Values.PhoneNumber | p3Values.Email, code: string): Promise<void>;
    updateUserPassword(userId: string, password: string): Promise<LogtoUserResponse>;
    addPersonalAccessToken(userId: string, name: string, expiresIn?: number): Promise<LogtoPersonalAccessTokenResponse>;
    deletePersonalAccessToken(userId: string, name: string): Promise<void>;
    getPersonalAccessTokens(userId: string): Promise<LogtoPersonalAccessTokenResponse[]>;
}
export declare function generatePhoneNumberWithCountryCode(countryCode: string, phoneNumber: string): string;
