import { EncryptedEntityWithType } from '../utils/EntityWithDelegationTypeName'; import { SecureDelegation } from '../../icc-api/model/SecureDelegation'; import AccessLevelEnum = SecureDelegation.AccessLevelEnum; import { ExtendedApisUtils } from './ExtendedApisUtils'; import { CryptoPrimitives } from './CryptoPrimitives'; import { AuthenticationProvider } from '../auth/AuthenticationProvider'; import { AccessControlKeysHeadersProvider } from './AccessControlKeysHeadersProvider'; import { AccessControlSecretUtils } from './AccessControlSecretUtils'; import { IccDataOwnerXApi } from '../icc-data-owner-x-api'; import { SecurityMetadataDecryptor } from './SecurityMetadataDecryptor'; export declare class DelegationsDeAnonymization { private readonly dataOwnerApi; private readonly securityMetadataDecryptor; private readonly xapis; private readonly cryptoPrimitives; private readonly accessControlSecretUtils; private readonly accessControlKeysHeadersProvider; private readonly delegationKeyMapFieldsToEncrypt; private readonly delegationKeyMapApi; constructor(dataOwnerApi: IccDataOwnerXApi, securityMetadataDecryptor: SecurityMetadataDecryptor, xapis: ExtendedApisUtils, cryptoPrimitives: CryptoPrimitives, accessControlSecretUtils: AccessControlSecretUtils, host: string, headers: { [key: string]: string; }, authenticationProvider: AuthenticationProvider | undefined, fetchImpl: ((input: RequestInfo, init?: RequestInit) => Promise) | undefined, accessControlKeysHeadersProvider: AccessControlKeysHeadersProvider); /** * Creates / updates information to allow the data owners in {@link shareWithDataOwners} to de-anonymize the delegations contained within * {@link entity}. * Note that the delegation de-anonymization information may be used also with other entities of the same type. */ createOrUpdateDeAnonymizationInfo(entityWithType: EncryptedEntityWithType, shareWithDataOwners: string[]): Promise; /** * Get the data owners which can access the entity. See {@link EncryptedEntityXApi.getDataOwnersWithAccessTo} for more details. * @param entityWithType an entity. */ getDataOwnersWithAccessTo(entityWithType: EncryptedEntityWithType): Promise<{ permissionsByDataOwnerId: { [dataOwnerId: string]: AccessLevelEnum; }; hasUnknownAnonymousDataOwners: boolean; }>; private getDataOwnersWithAccessToSecureDelegations; private mergePermissions; private getDecryptedSecureDelegationKeyMaps; private ensureDelegationKeyMapSharedWith; private createSecureDelegationKeyMap; }