import { DataDomeEvent, LoginEvent, RegistrationEvent, StatusType, Response, ResponseError, ResponseAction } from './model';
import { IncomingMessage } from 'http';
export { DataDome, LoginEvent, RegistrationEvent, ResponseAction, StatusType, DataDomeOptions };
export * from './model';
interface LogInterface {
    debug(primaryMessage: string, ...supportingData: any[]): void;
    warn(primaryMessage: string, ...supportingData: any[]): void;
    error(primaryMessage: string, ...supportingData: any[]): void;
    info(primaryMessage: string, ...supportingData: any[]): void;
}
interface DataDomeOptions {
    logger?: LogInterface;
    timeout?: number;
    endpoint?: string;
}
/**
 * Main class that is used to get DataDome recommendations for fraud protection
 *
 * @example <caption>to get a `Response` on a Login request</caption>
 * use `await datadomeClient.validate(req, new LoginEvent(accountName))`
 *
 * @example <caption>to get a `Response` on a Registration request</caption>
 * use ```await datadomeClient.validate(req,
    new RegistrationEvent(
      req.body.email,
      { id: sessionId, createdAt: Date.now() }, // Session Information
      { // User Information
        id: userId,
        title: req.body.title,
        firstName: req.body.firstname
        lastName: req.body.lastname,
        createdAt: Date.now();
        phone: req.body.phone,
        email: req.body.email,
        address: {}
      },
      StatusType.SUCCEEDED
    )
  );```
 */
declare class DataDome {
    private options;
    private logger;
    private requestOptions;
    constructor(key: string, options?: DataDomeOptions);
    private buildPayload;
    private sendRequest;
    /**
     * Validate request
     * @async
     *
     * */
    validate(request: IncomingMessage, event: DataDomeEvent): Promise<Response | ResponseError>;
    collect(request: IncomingMessage, event: DataDomeEvent): Promise<Response | ResponseError>;
}
