import { TransactionSettingsService } from './transaction-settings.service';
import { TransactionDialogService } from './transaction-dialog.service';
import { TransactionConnectorService } from './transaction-connector.service';
import { ArticleConnectorService } from './article-connector.service';
import { DictionaryService } from './dictionary.service';
import { TransactionEventService } from './transaction-event.service';
import { TransactionRelationService } from './transaction-relation.service';
import { TransactionInfoResponse } from '@colijnit/transactionapi/build/model/transaction-info-response.bo';
import { TransactionKind } from '@colijnit/transactionapi/build/enum/transaction-kind.enum';
import { Relation } from '@colijnit/relationapi/build/model/relation.bo';
import { BehaviorSubject, Subject } from 'rxjs';
import { PurchasePortalLine } from '@colijnit/transactionapi/build/model/purchase-portal-line.bo';
import { DocDeliveryBatch } from '@colijnit/transactionapi/build/model/doc-delivery-batch.bo';
import { TransactionInfoHistory } from '@colijnit/transactionapi/build/model/transaction-info-history.bo';
import { GetPurchasePortalLine } from '@colijnit/transactionapi/build/model/get-purchase-portal-line';
import { RefTransaction } from '@colijnit/transactionapi/build/model/ref-transaction.bo';
import { TransactionSearchViewRequest } from '@colijnit/transactionapi/build/model/transaction-search-view-request';
import { TransactionSearchResult } from '../model/transaction-search-result';
import { RelationKind } from '@colijnit/articleapi/build/enum/relation-kind.enum';
import { OnDestroy } from '@angular/core';
import { TransactionTypeCategory } from '../enum/transaction-type-category.enum';
import { Icon } from '../enum/icon.enum';
import { BaseModuleService } from '@colijnit/corecomponents_v12';
import { TransactionScreenConfigurationService } from './transaction-screen-configuration.service';
import { RelationService } from '@colijnit/relation';
import { SharedService } from "@colijnit/sharedcomponents";
import { TransactionMarginInfo } from "@colijnit/transactionapi/build/model/transaction-margin-info.bo";
import { InternalParam } from '@colijnit/mainapi/build/enum/internal-param.enum';
import { SupplierLightObject } from '@colijnit/relationapi/build/model/supplier-light-object.bo';
import { RelationListObject } from '@colijnit/relationapi/build/model/relation-list-object.bo';
import { PlanOrder } from '@colijnit/transactionapi/build/model/plan-order.bo';
import { InternalDefault } from "@colijnit/mainapi/build/enum/internal-default.enum";
export declare class TransactionBaseService extends BaseModuleService implements OnDestroy {
    optionsService: TransactionSettingsService;
    protected dialogService: TransactionDialogService;
    protected connector: TransactionConnectorService;
    protected articleConnector: ArticleConnectorService;
    protected dictionaryService: DictionaryService;
    protected transactionEventService: TransactionEventService;
    protected transactionRelationService: TransactionRelationService;
    protected screenConfigService: TransactionScreenConfigurationService;
    protected relationService: RelationService;
    protected sharedService: SharedService;
    private readonly _relationClassFromTransactionKind;
    private readonly _titleFromTransactionKind;
    private readonly _iconFromTransactionKind;
    private readonly _defaultActiveRubricFromTransactionKind;
    private readonly _checkoutPaymentStepTitleFromTransactionKind;
    logout: Subject<void>;
    transactionUpdated: BehaviorSubject<TransactionInfoResponse>;
    relationUpdated: BehaviorSubject<Relation>;
    transactionKindSet: BehaviorSubject<boolean>;
    transactionMargeViewClicked: Subject<boolean>;
    currentBranch: string;
    autoSave: boolean;
    manualSaveParam: boolean;
    applicationUser: boolean;
    invoiceAddressSameAsDelivery: boolean;
    afterSalesSystemParam: boolean;
    invalidTransaction: boolean;
    headerReadonly: boolean;
    get manualSaveActive(): boolean;
    set activeRubric(value: TransactionTypeCategory);
    get activeRubric(): TransactionTypeCategory;
    getRelationOnRememberCurrentTransaction: boolean;
    get titleForCheckout(): string;
    get iconForCheckout(): Icon;
    get paymentStepTitleForCheckout(): string;
    set transactionKind(value: TransactionKind);
    get transactionKind(): TransactionKind;
    currentTransaction: TransactionInfoResponse;
    currentPlanOrder: PlanOrder;
    hasTransactionLines: boolean;
    set purchaseOrdersCompleted(value: boolean);
    get purchaseOrdersCompleted(): boolean;
    set receiveGoodsCompleted(value: boolean);
    get receiveGoodsCompleted(): boolean;
    set allocateGoodsCompleted(value: boolean);
    set salesOrderPickingGoodsCompleted(value: boolean);
    set salesOrderPickedCompleted(value: boolean);
    set salesOrderToBePickedCompleted(value: boolean);
    get allocateGoodsCompleted(): boolean;
    set purchaseOrderConfirmationCompleted(value: boolean);
    get purchaseOrderConfirmationCompleted(): boolean;
    set deliveryCompleted(value: boolean);
    get deliveryCompleted(): boolean;
    set invoiceCompleted(value: boolean);
    set salesOrderConfirmationSent(value: boolean);
    get salesOrderConfirmationSent(): boolean;
    get invoiceCompleted(): boolean;
    set relation(value: Relation);
    get relation(): Relation;
    set transactionDirty(value: boolean);
    get transactionDirty(): boolean;
    set cashRegistersDirty(value: boolean);
    get cashRegistersDirty(): boolean;
    get cashRegisterGroupsDirty(): boolean;
    purchasePortalLine: PurchasePortalLine[];
    docDeliveryBatch: DocDeliveryBatch;
    internalParameterAllowsDropShipment: boolean;
    internalParameterReceiveGoodsWithDataTerminal: boolean;
    internalParameterPakBinnen: boolean;
    internalParameterMLocat: boolean;
    internalParameterJsPickingList: boolean;
    internalParameterSellDirectlyFromSupp: boolean;
    internalParameterStockMutBeforeDelivery: boolean;
    printColliStickerDefault: boolean;
    contactPersonId: number;
    articleAmountChange: BehaviorSubject<number>;
    get articleAmount(): number;
    set articleAmount(value: number);
    get transactionLocked(): boolean;
    protected transactionLineAdded: boolean;
    protected _readonly: boolean;
    private _activeRubric;
    private _transactionKind;
    private _relation;
    private _purchaseOrdersCompleted;
    private _receiveGoodsCompleted;
    private _allocateGoodsCompleted;
    private _pickingGoodsCompleted;
    private _pickedCompleted;
    private _toBePickedCompleted;
    private _purchaseOrderConfirmationCompleted;
    private _deliveryCompleted;
    private _invoiceCompleted;
    private _alreadyLocked;
    private _transactionDirty;
    private _cashRegistersDirty;
    private _salesOrderConfirmationSent;
    private _articleAmount;
    private _subs;
    private _transactionMarginInfo;
    constructor(optionsService: TransactionSettingsService, dialogService: TransactionDialogService, connector: TransactionConnectorService, articleConnector: ArticleConnectorService, dictionaryService: DictionaryService, transactionEventService: TransactionEventService, transactionRelationService: TransactionRelationService, screenConfigService: TransactionScreenConfigurationService, relationService: RelationService, sharedService: SharedService);
    init(options: any, resetCurrentTransaction?: boolean): Promise<void>;
    ngOnDestroy(): void;
    prepareMLocatInternalParam(): void;
    preparePakBinnenInternalParam(): void;
    prepareDirectSellInternalParam(): Promise<void>;
    prepareJsPickingListInternalParam(): Promise<void>;
    prepareManualSaveInternalParam(): void;
    prepareAfterSalesSystemParam(): Promise<void>;
    logisticsButtonVisible: () => Promise<boolean>;
    prepareDropShipmentInternalParam(): void;
    prepareReceiveGoodsWithDataTerminalInternalParam(): void;
    preparePrintColliStickerDefault(): void;
    getInternalParameter(param: InternalParam): Promise<boolean>;
    getInternalDefault(param: InternalDefault): Promise<string>;
    checkTransactionValidity(): Promise<boolean>;
    createNewRelation(): void;
    setRelationOnTransaction(relationNr: number, relationKind: RelationKind): Promise<void>;
    resetCurrentTransaction(): void;
    saveTransaction(rememberTransaction?: boolean): Promise<TransactionInfoResponse>;
    commit(): Promise<boolean>;
    rollback(refresh?: boolean, force?: boolean): Promise<boolean>;
    rollbackBeacon(): Promise<void>;
    searchTransactions(request: TransactionSearchViewRequest): Promise<TransactionSearchResult>;
    getTransactionById(transactionId: number): Promise<void>;
    getTransactionByNrAndKind(transactionNr: number, transactionKind: TransactionKind): Promise<TransactionInfoResponse>;
    getWebSessionSalesOrder(transactionUuid: string): Promise<boolean>;
    tryToLockTransaction(id?: number, version?: number, secondAttempt?: boolean): Promise<boolean>;
    getTransactionInfo(transId: number, lineId: number): Promise<TransactionInfoHistory[]>;
    getRefTransactions(transId: number): Promise<RefTransaction[]>;
    getPurchasePortalLines(request: GetPurchasePortalLine): Promise<PurchasePortalLine[]>;
    saveTransactionAndCommit(response?: TransactionInfoResponse, commitTransaction?: boolean): Promise<boolean>;
    rememberCurrentTransaction(value: TransactionInfoResponse): Promise<void>;
    checkRefTransaction(): Promise<void>;
    refreshCurrentTransaction(): Promise<void>;
    protected _checkHeaderStatus(): void;
    private makeRefTransactionList;
    updateHeaderTransactionDepositAmount(uuid: string, amount: number, saveTransaction: boolean): Promise<boolean>;
    updateHeaderTransactionDepositPercentage(uuid: string, amount: number, saveTransaction: boolean): Promise<boolean>;
    resetLockTransaction(): void;
    loadTransactionMargeInfoList(uuid: string): Promise<TransactionMarginInfo>;
    getSupplierLightById(supplierId: number): Promise<SupplierLightObject>;
    getRelationById(id: number): Promise<RelationListObject>;
    protected _handleBeforeRememberCurrentTransaction(transactionInfoResponse: TransactionInfoResponse): Promise<void>;
    protected _handleAfterRememberCurrentTransaction(): Promise<void>;
    initializeRelation(): void;
    setDefaultActiveRubricFromTransactionKind(): void;
    private _lockTransaction;
    private _getRelationClass;
    private _getRelation;
    private _setAmount;
    private _shouldCheckRefTransactions;
}
