import { Agent, QueryStringifiable } from './fetch';
import { AnyRecord } from './shared.types';
import type * as t from "./api.types";
/**
 * Ошибка, которую выбрасывает API при ошибочном ответе от сервера
 */
export declare class YMApiError extends Error {
    response: AnyRecord;
    code: string;
    /**
     * Объект ответа
     * @param {AnyRecord} response
     */
    constructor(response: AnyRecord);
}
/**
 * Ошибка, если API возвращает пустую строку ответе
 * Скорее всего это связано с отсутствием прав токена
 *
 * @see https://github.com/AlexXanderGrib/yoomoney-sdk/issues/4
 */
export declare class YMApiVoidResponseError extends Error {
    constructor();
}
/**
 * Имплементирует [основное API YooMoney](https://yoomoney.ru/docs/wallet)
 *
 * @see {@link https://yoomoney.ru/docs/wallet|Описание}
 * @class API
 */
export declare class API {
    token: string;
    endpoint: string;
    agent?: Agent | undefined;
    /**
     * Creates an instance of API.
     * @param {string} token Токен авторизации пользователя
     * @param {string=} [endpoint="https://yoomoney.ru/api"] По умолчанию `https://yoomoney.ru/api`
     * @param {Agent=} [agent]
     */
    constructor(token: string, endpoint?: string, agent?: Agent | undefined);
    /**
     * Позволяет совершить вызов произвольного метода API
     *
     * @template T
     * @param {string} method Название метода
     * @param {QueryStringifiable} parameters Параметры метода
     *
     * @throws {YMApiError}
     * @throws {YMApiVoidResponseError}
     *
     * @return {Promise<T>}
     */
    call<T = any>(method: string, parameters: QueryStringifiable): Promise<T>;
    /**
     * Получение информации о состоянии счета пользователя.
     *
     * Требуемые права токена: `account-info`.
     *
     * @throws {YMApiError}
     * @throws {YMApiVoidResponseError}
     *
     * @return {t.AccountInfoResponse}
     */
    accountInfo(): Promise<t.AccountInfoResponse>;
    /**
     * Метод позволяет просматривать историю операций (полностью или частично) в постраничном режиме. Записи истории выдаются в обратном хронологическом порядке: от последних к более ранним.
     *
     * Требуемые права токена: `operation-history`.
     *
     * @throws {YMApiError}
     * @throws {YMApiVoidResponseError}
     *
     * @param {t.OperationHistoryParameters=} [parameters={}] Параметры вызова
     * @return {Promise<t.OperationHistoryResponse>}
     */
    operationHistory(parameters?: t.OperationHistoryParameters): Promise<t.OperationHistoryResponse>;
    /**
     * Позволяет получить детальную информацию об операции из истории.
     *
     * Требуемые права токена: `operation-details`.
     *
     * @throws {YMApiError}
     * @throws {YMApiVoidResponseError}
     *
     * @param {t.OperationDetailsParameters} parameters Параметры вызова
     * @return {Promise<t.Operation>}
     */
    operationDetails(parameters: t.OperationDetailsParameters): Promise<t.Operation>;
    /**
     * Создание платежа, проверка параметров и возможности приема
     * платежа магазином или перевода средств на счет пользователя
     * ЮMoney.
     *
     * Требуемые права токена:
     * - для платежа в магазин: `payment.to-pattern`
     * («шаблон платежа») или `payment-shop`.
     *
     * - для перевода средств на счета других пользователей:
     *  `payment.to-account` («идентификатор получателя»,
     * «тип идентификатора») или `payment-p2p`.
     *
     * @throws {YMApiError}
     * @throws {YMApiVoidResponseError}
     *
     * @param {t.RequestPaymentParameters} parameters Параметры вызова
     * @return {Promise<t.RequestPaymentResponse>}
     */
    requestPayment(parameters: t.RequestPaymentParameters): Promise<t.RequestPaymentResponse>;
    /**
     * Подтверждение платежа, ранее созданного методом
     * [request-payment](https://yoomoney.ru/docs/wallet/process-payments/request-payment).
     * Указание метода проведения платежа.
     *
     * @throws {YMApiError}
     * @throws {YMApiVoidResponseError}
     *
     * @param {t.ProcessPaymentParameters} parameters Параметры вызова
     * @return {Promise<t.ProcessPaymentResponse>}
     */
    processPayment(parameters: t.ProcessPaymentParameters): Promise<t.ProcessPaymentResponse>;
    /**
     * Прием входящих переводов, защищенных кодом протекции, и
     * переводов до востребования.
     *
     * Количество попыток приема входящего перевода с кодом протекции
     * ограничено. При исчерпании количества попыток, перевод
     * автоматически отвергается (перевод возвращается отправителю).
     *
     * Требуемые права токена: `incoming-transfers`
     *
     * @throws {YMApiError}
     * @throws {YMApiVoidResponseError}
     *
     * @param {t.IncomingTransferAcceptParameters} parameters Параметры вызова
     * @return {Promise<t.IncomingTransferAcceptResponse>}
     */
    incomingTransferAccept(parameters: t.IncomingTransferAcceptParameters): Promise<t.IncomingTransferAcceptResponse>;
    /**
     * Отмена входящих переводов, защищенных кодом протекции, и
     * переводов до востребования. При отмене перевода он возвращается
     * отправителю.
     *
     * Требуемые права токена: `incoming-transfers`
     *
     * @throws {YMApiError}
     * @throws {YMApiVoidResponseError}
     *
     * @param {t.IncomingTransferRejectParameters} parameters Параметры вызова
     * @return {Promise<t.IncomingTransferRejectResponse>}
     */
    incomingTransferReject(parameters: t.IncomingTransferRejectParameters): Promise<t.IncomingTransferRejectResponse>;
}
