import User from "../entities/user.js";
import TClearUserTokens from "../interfaces/clear-user-tokens.js";
import UserRepository from "../repositories/user.js";
import { ConfirmBy } from "./confirm/factory.js";
type ChangePasswordParams = {
    userId?: string;
    login?: string;
    confirmBy?: ConfirmBy;
    repository: UserRepository;
    isConfirmed?: (user: User) => Promise<boolean> | boolean | undefined;
    currentToken?: string;
    clearTokensType?: TClearUserTokens;
};
/**
 * Change user password
 */
declare class ChangePassword {
    /**
     * @protected
     */
    protected readonly userId?: string;
    /**
     * @protected
     */
    protected readonly login?: string;
    /**
     * @protected
     */
    protected readonly currentToken?: string;
    /**
     * @protected
     */
    protected readonly clearTokensType?: TClearUserTokens;
    /**
     * @protected
     */
    protected readonly confirmBy?: ConfirmBy;
    /**
     * @protected
     */
    protected readonly isConfirmed?: ChangePasswordParams['isConfirmed'];
    /**
     * @protected
     */
    protected readonly repository: ChangePasswordParams['repository'];
    /**
     * @constructor
     */
    /**
     * @constructor
     */
    protected constructor({ userId, login, confirmBy, repository, isConfirmed, currentToken, clearTokensType, }: ChangePasswordParams);
    /**
     * Init service
     */
    /**
     * Init service
     */
    static init(params: ChangePasswordParams): ChangePassword;
    /**
     * Change password
     */
    /**
     * Change password
     */
    change(newPassword: string, oldPassword?: string): Promise<User>;
    /**
     * Handle clear user tokens
     */
    /**
     * Handle clear user tokens
     */
    private handleClearUserTokens;
}
export { ChangePassword as default, ChangePasswordParams };
