import { Document, Session } from "../session";
import { WebService } from "./WebService";
import { WebServiceType } from "./WebServiceType";
import { Parameter } from "../generated-sources";
export declare abstract class AbstractWebService<T_SESSION extends Session, T_OPERATION_DATA extends Parameter, T_OPERATION_PARAMETER, T_DOCUMENT extends Document, T_BILLING, T_PASSWORD, T_SETTINGS> implements WebService<T_SESSION, T_OPERATION_PARAMETER, T_DOCUMENT, T_BILLING, T_PASSWORD, T_SETTINGS> {
    private readonly webServiceType;
    private readonly headers;
    private readonly session;
    private readonly operationData;
    private readonly additionalParameter;
    constructor(webServiceType: WebServiceType, session: T_SESSION);
    getSession(): T_SESSION;
    protected getOperationData(): T_OPERATION_DATA;
    protected getWebServiceType(): WebServiceType;
    protected getHeaders(): Headers;
    protected abstract initOperation(): T_OPERATION_DATA;
    getAdditionalParameter(): URLSearchParams;
    abstract process(sourceDocument?: T_DOCUMENT): Promise<T_DOCUMENT | undefined>;
    abstract getPassword(): T_PASSWORD | undefined;
    abstract setPassword(password: T_PASSWORD | undefined): void;
    abstract getBilling(): T_BILLING | undefined;
    abstract setBilling(billing: T_BILLING | undefined): void;
    abstract getSettings(): T_SETTINGS | undefined;
    abstract setSettings(settings: T_SETTINGS | undefined): void;
    abstract getOperationParameters(): T_OPERATION_PARAMETER;
    abstract setOperationParameters(operation: T_OPERATION_PARAMETER | undefined): void;
}
