import { Type } from '@zetapush/core'; import { AccountStatus, AccountStatusProvider } from '../../standard-user-workflow/api'; import { UuidGenerator, Uuid, Variables, Location, Token, TokenGenerator, TokenRepository } from '../api'; import { AxiosInstance } from 'axios'; import { UserRepository } from '../api/User'; import { ConfirmationUrlProvider, AccountConfirmationContext } from '../../standard-user-workflow/api/Confirmation'; import { Provider } from '@zetapush/core'; import { ResetPasswordUrlProvider, ResetPasswordContext } from '../../standard-user-workflow/api/LostPassword'; export interface And
{
/**
* Continue chaining to go back to parent configurer.
*
* @returns the parent configurer
*/
and(): P;
}
export interface Alternative extends And {
generator(func: () => Promise ;
generator(provider: Provider): UuidConfigurer ;
generator(instance: UuidGenerator): UuidConfigurer ;
generator(generatorClass: Type ;
}
export interface EmailConfigurer extends And {
from(email: string): EmailConfigurer ;
subject(subject: string): EmailConfigurer ;
smtp(): SmtpEmailConfigurer extends And , Alternative ;
port(smtpPort: number): SmtpEmailConfigurer ;
username(smtpUsername: string): SmtpEmailConfigurer ;
password(smtpPassword: string): SmtpEmailConfigurer ;
ssl(enableSsl: boolean): SmtpEmailConfigurer ;
starttls(enableTls: boolean): SmtpEmailConfigurer ;
}
export interface OvhEmailConfigurer extends And , Alternative ;
username(ovhUsername: string): OvhEmailConfigurer ;
password(ovhPassword: string): OvhEmailConfigurer ;
}
export interface MailjetEmailConfigurer extends And , Alternative ;
apiKeyPublic(mailjetApiKeyPublic: string): MailjetEmailConfigurer ;
apiKeyPrivate(mailjetApiKeyPrivate: string): MailjetEmailConfigurer ;
httpClient(axios: AxiosInstance): MailjetEmailConfigurer ;
}
export interface TemplateConfigurer > extends And {
template(location: Location): S;
template(func: (variables: Variables) => string): S;
}
export interface TextTemplateConfigurer extends TemplateConfigurer > {
}
export interface EmailTemplateConfigurer extends TemplateConfigurer > {
inlineCss(): EmailTemplateConfigurer ;
inlineImages(): EmailTemplateConfigurer ;
}
export interface SmsConfigurer extends And {
template(): SmsConfigurer ;
}
export interface SuccessFailureRedirectionConfigurer extends And {
successUrl(url: string): SuccessFailureRedirectionConfigurer ;
failureUrl(url: string): SuccessFailureRedirectionConfigurer ;
}
export interface FieldsConfigurer extends And {
field(name: string): void;
scan(model: Type extends And {
annotations(): AnnotationsConfigurer extends And {
validation(): ValidationConfigurer extends And {
}
export interface FieldConfigurer extends And {
}
export interface TokenManagerConfigurer extends And {
validity(duration: number): TokenManagerConfigurer ;
generator(func: () => Promise ;
generator(instance: TokenGenerator): TokenManagerConfigurer ;
generator(generatorClass: Type ;
storage(tokenStorageClass: Type ;
storage(tokenStorageInstance: TokenRepository): TokenManagerConfigurer ;
}
export interface RegistrationConfigurer extends And {
enable(enable: boolean): S;
enable(enable: () => boolean | Promise