///
import * as Money from 'js-money';
import IRequest from './IRequest';
import IResponse from './IResponse';
import IClient from '../http/IClient';
import CreditCard from '../CreditCard';
import ItemBag from './../ItemBag';
import { IObject } from '../interfaces';
export default abstract class AbstractRequest implements IRequest {
[key: string]: any;
readonly abstract data: any;
protected _parameters: IObject;
protected _client: IClient;
protected _response: IResponse;
protected _zeroAmountAllowed: boolean;
protected _negativeAmountAllowed: boolean;
readonly parameters: IObject;
/**
* Required fields for given request
*/
abstract requiredFields: string[];
readonly response: IResponse;
protected readonly throwIfCantSet: any;
testMode: boolean;
card: CreditCard | IObject;
token: string;
cardReference: string;
readonly currencies: string[];
readonly money: Money;
amount: string;
readonly amountInteger: number;
description: string;
currency: string;
transactionId: number;
transactionReference: string;
items: ItemBag | IObject[];
clientIp: any;
returnUrl: any;
cancelUrl: any;
notifyUrl: any;
constructor(client: IClient);
initialize(parameters?: IObject): this;
validate(...keys: string[]): true;
abstract send(): Promise;
}