constructor(options) {
        if (!options || !options.transporter || !options.tokenProvider || !options.getSigninURL) {
            throw new IncorrectUsageError({message: 'Missing options. Expects {transporter, tokenProvider, getSigninURL}'});
        }
        this.transporter = options.transporter;
        this.tokenProvider = options.tokenProvider;
        this.getSigninURL = options.getSigninURL;
        this.getText = options.getText || defaultGetText;
        this.getHTML = options.getHTML || defaultGetHTML;
        this.getSubject = options.getSubject || defaultGetSubject;
        this.sentry = options.sentry || undefined;
    }
@param {object} options
@param {MailTransporter} options.transporter
@param {TokenProvider<Token, TokenData>} options.tokenProvider
@param {(token: Token, type: string, referrer?: string) => URL} options.getSigninURL
@param {typeof defaultGetText} [options.getText]
@param {typeof defaultGetHTML} [options.getHTML]
@param {typeof defaultGetSubject} [options.getSubject]
@param {object} [options.sentry]