import { AxiosResponse } from "axios";
import LoginResult from "./classes/login-result.js";
import { Result } from "./classes/result.js";
import { GenericAxiosError, UnexpectedResponseContentType } from "./classes/errors.js";
import Credentials from "./classes/credentials.js";
/**
 * Gets the HTML code of a page.
 */
export declare function fetchHTML(
  url: string
): Promise<Result<GenericAxiosError | UnexpectedResponseContentType, string>>;
/**
 * It authenticates to the platform using the credentials
 * and token obtained previously. Save cookies on your
 * device after authentication.
 * @param {Credentials} credentials Platform access credentials
 * @param {Boolean} force Specifies whether the request should be forced, ignoring any saved cookies
 * @returns {Promise<LoginResult>} Result of the operation
 */
export declare function authenticate(
  credentials: Credentials,
  force?: boolean
): Promise<LoginResult>;
/**
 * Send an OTP code if the login procedure requires it.
 * @param code OTP code.
 * @param token Unique token for the session associated with the credentials in use.
 * @param trustedDevice If the device in use is trusted, 2FA authentication is not required for 30 days.
 */
export declare function send2faCode(
  code: number,
  token: string,
  trustedDevice?: boolean
): Promise<Result<GenericAxiosError, LoginResult>>;
/**
 * Obtain the token used to authenticate the user to the platform.
 */
export declare function getF95Token(): Promise<string>;
/**
 * Performs a GET request to a specific URL and returns the response.
 */
export declare function fetchGETResponse(
  url: string
): Promise<Result<GenericAxiosError, AxiosResponse<any>>>;
/**
 * Performs a POST request through axios.
 * @param url URL to request
 * @param params List of value pairs to send with the request
 * @param force If `true`, the request ignores the sending of cookies already present on the device.
 */
export declare function fetchPOSTResponse(
  url: string,
  params: {
    [s: string]: string;
  },
  force?: boolean
): Promise<Result<GenericAxiosError, AxiosResponse<any>>>;
/**
 * Enforces the scheme of the URL is https and returns the new URL.
 */
export declare function enforceHttpsUrl(url: string): string;
/**
 * Check if the url belongs to the domain of the F95 platform.
 */
export declare function isF95URL(url: string): boolean;
/**
 * Checks if the string passed by parameter has a
 * properly formatted and valid path to a URL (HTTP/HTTPS).
 */
export declare function isStringAValidURL(url: string): boolean;
/**
 * Check if a particular URL is valid and reachable on the web.
 * @param {string} url URL to check
 * @param {boolean} [checkRedirect]
 * If true, the function will consider redirects a violation and return false.
 * Default: false
 * @returns {Promise<Boolean>} true if the URL exists, false otherwise
 */
export declare function urlExists(url: string, checkRedirect?: boolean): Promise<boolean>;
/**
 * Check if the URL has a redirect to another page.
 * @param {String} url URL to check for redirect
 * @returns {Promise<String>} Redirect URL or the passed URL
 */
export declare function getUrlRedirect(url: string): Promise<string>;