import type { TypeORMAdapterOptions } from 'typeorm-adapter';
import type { BaseMemberEntity } from '../models/base-member.entity';
import type { ReflectableDecorator } from '@nestjs/core';
import type { Enforcer } from 'casbin';
import type { OAuth2Provider } from './oauth2-provider.interface';
export interface MemberBaseModuleOptionsDto<MemberEntity extends BaseMemberEntity = BaseMemberEntity, TokenPayload extends Record<string, any> = Pick<MemberEntity, 'id' | 'account'>> {
    loginFailedBanThreshold?: number;
    resetPasswordTokenExpiration?: number;
    resetPasswordTokenSecret?: string;
    cookieMode?: boolean;
    loginFailedAutoUnlockSeconds?: number;
    accessTokenSecret?: string;
    accessTokenExpiration?: number;
    refreshTokenSecret?: string;
    refreshTokenExpiration?: number;
    onlyResetRefreshTokenExpirationByPassword?: boolean;
    enableGlobalGuard?: boolean;
    casbinAdapterOptions?: TypeORMAdapterOptions;
    casbinModelString?: string;
    casbinPermissionDecorator?: ReflectableDecorator<any[]>;
    casbinPermissionChecker?: ({ enforcer, payload, actions, }: {
        enforcer: Enforcer;
        payload: TokenPayload;
        actions: any[];
    }) => Promise<boolean>;
    memberEntity?: new () => MemberEntity;
    passwordShouldIncludeUppercase?: boolean;
    passwordShouldIncludeLowercase?: boolean;
    passwordShouldIncludeDigit?: boolean;
    passwordShouldIncludeSpecialCharacters?: boolean;
    passwordMinLength?: number;
    passwordPolicyRegExp?: RegExp;
    passwordHistoryLimit?: number;
    passwordAgeLimitInDays?: number;
    forceRejectLoginOnPasswordExpired?: boolean;
    customizedJwtPayload?: (member: MemberEntity) => TokenPayload;
    oauth2Providers?: OAuth2Provider[];
    oauth2ClientDestUrl?: string;
}
