import { OnApplicationBootstrap } from '@nestjs/common';
import { DeepPartial, Repository } from 'typeorm';
import { BaseMemberEntity } from '../models/base-member.entity';
import type { AuthTokenPayloadBase } from '../typings/auth-token-payload';
import { MemberLoginLogEntity } from '../models/member-login-log.entity';
import { TokenPairDto } from '../dto/token-pair.dto';
import { MemberBaseModuleOptionsDTO } from '../typings/member-base-module-options.dto';
import { PasswordValidatorService } from './password-validator.service';
import { MemberPasswordHistoryEntity } from '../models/member-password-history.entity';
export declare class MemberBaseService<MemberEntity extends BaseMemberEntity = BaseMemberEntity> implements OnApplicationBootstrap {
    private readonly originalProvidedOptions;
    private readonly baseMemberRepo;
    private readonly memberLoginLogRepo;
    private readonly loginFailedBanThreshold;
    private readonly resetPasswordTokenExpiration;
    private readonly resetPasswordTokenSecret;
    private readonly accessTokenSecret;
    private readonly accessTokenExpiration;
    private readonly refreshTokenSecret;
    private readonly refreshTokenExpiration;
    private readonly onlyResetRefreshTokenExpirationByPassword;
    private readonly memberPasswordHistoryRepo;
    private readonly passwordAgeLimitInDays;
    private readonly forceRejectLoginOnPasswordExpired;
    private readonly passwordValidatorService;
    private readonly customizedJwtPayload;
    private readonly loginFailedAutoUnlockSeconds;
    constructor(originalProvidedOptions: MemberBaseModuleOptionsDTO | undefined, baseMemberRepo: Repository<BaseMemberEntity>, memberLoginLogRepo: Repository<MemberLoginLogEntity>, loginFailedBanThreshold: number, resetPasswordTokenExpiration: number, resetPasswordTokenSecret: string, accessTokenSecret: string, accessTokenExpiration: number, refreshTokenSecret: string, refreshTokenExpiration: number, onlyResetRefreshTokenExpirationByPassword: boolean, memberPasswordHistoryRepo: Repository<MemberPasswordHistoryEntity>, passwordAgeLimitInDays: number | undefined, forceRejectLoginOnPasswordExpired: boolean, passwordValidatorService: PasswordValidatorService, customizedJwtPayload: (member: MemberEntity) => AuthTokenPayloadBase, loginFailedAutoUnlockSeconds: number | null);
    private readonly logger;
    onApplicationBootstrap(): void;
    signRefreshToken(member: MemberEntity, domain?: string): string;
    signAccessToken(member: MemberEntity, domain?: string): string;
    getResetPasswordToken(account: string): Promise<string>;
    changePassword<T extends MemberEntity = MemberEntity>(id: string, originPassword: string, newPassword: string): Promise<T>;
    changePasswordWithToken<T extends MemberEntity = MemberEntity>(token: string, newPassword: string): Promise<T>;
    register<T extends MemberEntity = MemberEntity>(account: string, password: string, memberOptions?: DeepPartial<Omit<T, 'account' | 'password'>>): Promise<T>;
    registerWithoutPassword<T extends MemberEntity = MemberEntity>(account: string, memberOptions?: DeepPartial<Omit<T, 'account' | 'password'>>): Promise<[T, string]>;
    refreshToken(refreshToken: string, options?: {
        domain?: string;
    }): Promise<TokenPairDto>;
    login(account: string, password: string, ip?: string): Promise<TokenPairDto>;
    login(account: string, password: string, options?: {
        domain?: string;
        ip?: string;
    }): Promise<TokenPairDto>;
    resetLoginFailedCounter<T extends MemberEntity = MemberEntity>(id: string): Promise<T>;
    private validateExpiration;
}
