import { RequestTypes } from '../Constants';
import { IParameter, IRequest, ServiceList, ServiceParameter } from '../Models';
import { DataRequestData, PaymentMethodInstance } from '../index';
import { Request, TransactionData } from '../Request';
import { ServiceCode } from '../Utils';
export default abstract class PaymentMethod {
    protected _serviceCode?: ServiceCode;
    protected _serviceVersion: number;
    protected _payloadClass: typeof TransactionData;
    protected _payload: TransactionData;
    protected _requiredFields: Array<keyof IRequest>;
    constructor(serviceCode?: ServiceCode);
    set payloadClass(value: typeof TransactionData);
    protected createDefaultPayload(): TransactionData;
    get serviceVersion(): number;
    set serviceVersion(value: number);
    get serviceCode(): ServiceCode;
    abstract defaultServiceCode(): ServiceCode;
    setServiceCode(value: ServiceCode): this;
    setPayload(payload?: IRequest): void;
    setServiceVersion(value: number): this;
    getPayload(): Record<string, any>;
    getServiceList(): ServiceList | undefined;
    combine<Name extends ServiceCode>(data: Name): PaymentMethodInstance<Name>;
    combine<Payload extends TransactionData>(data: Payload): this;
    combine<Method extends PaymentMethod>(method: Method): this;
    specification(type?: RequestTypes.Transaction | RequestTypes.Data, serviceVersion?: number): Request<typeof import("../Models").SpecificationRequestResponse, undefined>;
    protected setRequiredFields(requiredFields?: Array<keyof IRequest>): this;
    protected setServiceList(action: string, serviceParameters?: IParameter[] | ServiceParameter, serviceCode?: "ideal" | "idealprocessing" | "afterpay" | "afterpaydigiaccept" | "applepay" | "bancontactmrcash" | "transfer" | "belfius" | "billink" | "blik" | "buckaroovoucher" | "BuckarooWalletCollecting" | "CreditCard" | "creditcard" | "mastercard" | "visa" | "amex" | "vpay" | "maestro" | "visaelectron" | "cartebleuevisa" | "cartebancaire" | "dankort" | "nexi" | "postepay" | "CreditManagement3" | "emandate" | "eps" | "giftcard" | "westlandbon" | "babygiftcard" | "babyparkgiftcard" | "beautywellness" | "boekenbon" | "boekenvoordeel" | "designshopsgiftcard" | "fashioncheque" | "fashionucadeaukaart" | "fijncadeau" | "koffiecadeau" | "kokenzo" | "kookcadeau" | "nationaleentertainmentcard" | "naturesgift" | "podiumcadeaukaart" | "shoesaccessories" | "webshopgiftcard" | "wijncadeau" | "wonenzo" | "yourgift" | "vvvgiftcard" | "parfumcadeaukaart" | "customgiftcard" | "customgiftcard2" | "customgiftcard3" | "idealqr" | "idin" | "capayable" | "KBCPaymentButton" | "klarna" | "klarnakp" | "knaken" | "marketplaces" | "MBWay" | "multibanco" | "payconiq" | "PayByBank" | "paypal" | "payperemail" | "pim" | "pospayment" | "przelewy24" | "sepadirectdebit" | "subscriptions" | "surepay" | "thunes" | "alipay" | "trustly" | "wechatpay" | "In3" | "noservice" | "externalpayment", serviceVersion?: number): this;
    protected transactionRequest(payload?: IRequest): Request<typeof import("../Models").TransactionResponse, TransactionData>;
    protected dataRequest(payload?: IRequest): Request<typeof import("../Models").TransactionResponse, DataRequestData>;
}
