import { TransactionSelectMultipleCacheService } from '../cache/service/transaction-select-multiple-cache.service';
import { TransactionRelationConnectorService } from './transaction-relation-connector.service';
import { RelationKind } from '@colijnit/articleapi/build/enum/relation-kind.enum';
import { ValidationResult } from '@colijnit/ioneconnector/build/model/validation-result';
import { CustomerFullObject } from '@colijnit/relationapi/build/model/customer-full-object.bo';
import { RelationRequest } from '@colijnit/relationapi/build/model/relation-request';
import { RelationListObject } from '@colijnit/relationapi/build/model/relation-list-object.bo';
import { BranchLov } from '@colijnit/relationapi/build/model/branch-lov.bo';
import { SupplierFullObject } from '@colijnit/relationapi/build/model/supplier-full-object.bo';
import { TransactionSelectSingleCacheService } from '../cache/service/transaction-select-single-cache.service';
import { TransactionSelectMultipleParameterizedCacheService } from '../cache/service/transaction-select-multiple-parameterized-cache.service';
import { Relation } from '@colijnit/relationapi/build/model/relation.bo';
import { RelationAnyType } from '@colijnit/relationapi/build/model/relation-any-type';
import { Address } from '@colijnit/relationapi/build/model/address.bo';
import { Subject } from 'rxjs';
import { RelationSmallObject } from "@colijnit/relationapi/build/model/relation-small-object.bo";
import { SupplierLightObject } from "@colijnit/relationapi/build/model/supplier-light-object.bo";
import { TransactionSettingsService } from "./transaction-settings.service";
import { TransactionSelectSingleParameterizedCacheService } from '../cache/service/transaction-select-single-parameterized-cache.service';
import { ContactPerson } from "@colijnit/relationapi/build/model/contact-person.bo";
import { BranchFullObject } from "@colijnit/relationapi/build/model/branch-full-object.bo";
export declare class TransactionRelationService {
    private _adapterService;
    private _selectMultipleCacheService;
    private _selectSingleCacheService;
    private _selectMultipleParameterizedCacheService;
    private _selectSingleParameterizedCacheService;
    private _optionsService;
    relationSuggestionsRequestClear: Subject<void>;
    private _allowedRolesToInviteRelation;
    private readonly _lockMethods;
    private readonly _getMethods;
    private readonly _updateMethods;
    private readonly _insertMethods;
    relationLocked: boolean;
    private _boFactory;
    constructor(_adapterService: TransactionRelationConnectorService, _selectMultipleCacheService: TransactionSelectMultipleCacheService, _selectSingleCacheService: TransactionSelectSingleCacheService, _selectMultipleParameterizedCacheService: TransactionSelectMultipleParameterizedCacheService, _selectSingleParameterizedCacheService: TransactionSelectSingleParameterizedCacheService, _optionsService: TransactionSettingsService);
    connect(): void;
    getCustomerFullObject(relationNo: number): Promise<CustomerFullObject>;
    getFirstCustomerForContact(relationNo: number): Promise<CustomerFullObject>;
    getSupplierFullObject(relationNo: number): Promise<SupplierFullObject>;
    getBranchFullObject(relationNo: string): Promise<BranchFullObject>;
    getContactPerson(relationNo: number): Promise<ContactPerson>;
    getSupplierLightById(supplierId: number): Promise<SupplierLightObject>;
    insertAddress(address: Address): Promise<Address>;
    updateAddress(address: Address): Promise<Address>;
    insertCustomer(relation: CustomerFullObject): Promise<CustomerFullObject>;
    updateCustomer(relation: CustomerFullObject): Promise<CustomerFullObject>;
    insertSupplier(relation: SupplierFullObject): Promise<SupplierFullObject>;
    updateSupplier(relation: SupplierFullObject): Promise<SupplierFullObject>;
    getRelationListObjects(relationRequest: RelationRequest): Promise<RelationListObject[]>;
    getDirectSellSuppliers(): Promise<SupplierLightObject[]>;
    getRelationById(id: number): Promise<RelationListObject>;
    getRelationNumber(relationId: number): Promise<string>;
    getRelationSmallObject(relationId: number): Promise<RelationSmallObject>;
    getBranches(branchNr?: string): Promise<BranchLov[]>;
    insertRelation(relationKind: RelationKind, relation: Relation): Promise<Relation>;
    updateRelation(relationKind: RelationKind, relation: Relation): Promise<Relation>;
    lockRelation(relationKind: RelationKind, relationNr: number): Promise<ValidationResult>;
    getRelation(relationKind: RelationKind, relationNr: number): Promise<RelationAnyType>;
    cloneRelation(relation: RelationAnyType | Relation): RelationAnyType;
    commit(): Promise<boolean>;
    private _getSingleRelationFromRequest;
    private _lockCustomerFullObject;
    private _lockSupplierFullObject;
    private _lockEmployeeFullObject;
    private _lockBranchFullObject;
    private _lockCompanyFullObject;
    private _lockContactPerson;
}
