import { ImagePayload, CreateTaskResponse, RecaptchaPayload, OtherPayload, TakeResultResponse } from './constants/type.cjs';
import './constants/enum.cjs';

declare class Solver {
    private api;
    private apiKey;
    private cPath;
    private tPath;
    private bPath;
    /**
     * @param {string} apiKey Your API key
     * @example import Solver from 'aow3xm/acp-node'
     *
     * const solver = new Solver('8hyse3ytrrxz29cfwkhpnunc39sv1k00')
     */
    constructor(apiKey: string);
    /**
     * @param {ImagePayload} payload Image payload
     * @example
     * const imageTask = await solver.createImageTask({
     *    version: 'default',
     *    body: 'iVBORw0KGgoAAAANSUhEUgAAAPAA...'
     * })
     * @returns {CreateTaskResponse}
     */
    createImageTask(payload: ImagePayload): Promise<CreateTaskResponse>;
    /**
     * @param {RecaptchaPayload} payload Recaptcha payload
     * @example
     * const recaptchaTask = await solver.createImageTask({
     *    version: 'v2',
     *    pageurl: 'https://www.google.com/recaptcha/api2/demo',
     *    sitekey: '6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-'
     * })
     * @returns {CreateTaskResponse}
     */
    createRecaptchaTask(payload: RecaptchaPayload): Promise<CreateTaskResponse>;
    /**
     * @param {OtherPayload} payload Turnstile payload
     * @example
     * const turnstileTask = await solver.createTurnstileTask({
     *    pageurl: 'https://demo.turnstile.workers.dev',
     *    sitekey: '1x00000000000000000000AA'
     * })
     * @returns {CreateTaskResponse}
     */
    createTurnstileTask(payload: OtherPayload): Promise<CreateTaskResponse>;
    /**
     * @param {OtherPayload} payload Hcaptcha payload
     * @example
     * const hcaptchaTask = await solver.createHcaptchaTask({
     *    pageurl: 'https://accounts.hcaptcha.com/demo',
     *    sitekey: 'a5f74b19-9e45-40e0-b45d-47ff91b7a6c2'
     * })
     * @returns {CreateTaskResponse}
     */
    createHcaptchaTask(payload: RecaptchaPayload): Promise<CreateTaskResponse>;
    /**
     * @param {string} taskId Task id from created task
     * @example
     * const solution = await solver.takeResult('d99b3f1d-ed5a-4e57-a9f0-3345ccdada15')
     * @returns {TakeResultResponse}
     */
    takeResult(taskId: string): Promise<TakeResultResponse>;
    /**
     * @example
     * const balance = await solver.getBalance()
     * @returns {number}
     */
    getBalance(): Promise<number>;
}

export { Solver };
