import { Service } from "root-ts"; import { MongodbService } from "root-ts"; import { TTLSessionStorage } from "root-ts"; export declare type AccountDefinition = Type.Account.AccountService.AccountDefinition; export declare type AuthenticationData = Type.Account.AuthenticationService.AuthenticationData; export declare class AuthenticationService extends Service { readonly name = "AuthenticationService"; protected collectionName: string; readonly dependencies: string[]; constructor(settings: Type.Account.AuthenticationService.Settings); services: { MongodbService: MongodbService; TTLSessionStorage: TTLSessionStorage; }; authenticationCollection: any; createToken(option: { account: TAccount; ttl?: number; }, callback: Callback): void; deleteToken(option: { token: string; }, callback: Callback): void; getTokenInfo(option: { token: string; }, callback: Callback<{ account: TAccount; createAt: Date; }>): void; initialize(done: any): void; definitions: { [type: string]: AuthenticationDefinition; }; define(definition: AuthenticationDefinition): void; create(option: { authentication: AuthenticationData; }, callback: Callback): void; authenticate(option: { authentication: Partial>; }, callback: Callback>): void; get(option: { authentication: Partial>; }, callback: Callback>): void; update(option: { authentication: AuthenticationData; }, callback: Callback>): void; findByAccountId(accountId: string, callback: Callback): void; private sanitizeAndGetDefinition; getDefinition(type: string): AuthenticationDefinition; } export declare abstract class AuthenticationDefinition { abstract type: T["type"]; abstract sanitize(meta: T["meta"]): T["meta"]; abstract queryCriteria(meta: T["meta"]): any; abstract authenticateCriteria(meta: T["meta"]): any; abstract clearSensitiveInformation(meta: T["meta"]): T["meta"]; abstract guid(meta: T["meta"]): string; abstract about(meta: T["meta"], field: string): any; abstract unique(): { [key: string]: number; }[]; meta: T["meta"]; abstract props(meta: T["meta"]): any; abouts(meta: T["meta"], fields: string[]): {}; } export declare class CommonAuthenticationDefinition extends AuthenticationDefinition { option: { salt?: string; maxNameLength?: number; minNameLength?: number; maxEmailLength?: number; minEmailLength?: number; minPasswordLength?: number; maxPasswordLength?: number; emailValidator?: RegExp; nameValidator?: RegExp; passwordChecker?: (string: any) => boolean; requireActivation?: boolean; }; constructor(option?: { salt?: string; maxNameLength?: number; minNameLength?: number; maxEmailLength?: number; minEmailLength?: number; minPasswordLength?: number; maxPasswordLength?: number; emailValidator?: RegExp; nameValidator?: RegExp; passwordChecker?: (string: any) => boolean; requireActivation?: boolean; }); readonly type = "common"; sanitize(meta: this["meta"]): this["meta"]; queryCriteria(meta: this["meta"]): any; authenticateCriteria(meta: this["meta"]): any; props(meta: this["meta"]): { email: string; name: string; }; clearSensitiveInformation(meta: this["meta"]): this["meta"]; guid(meta: this["meta"]): string; unique(): ({ "meta.email": number; "meta.name"?: undefined; } | { "meta.name": number; "meta.email"?: undefined; })[]; about(meta: this["meta"], field: string): any; private hash; }