import { InvoiceDelegateOptions } from '../crypto/entities/InvoiceDelegateOptions.mjs'; import { InvoiceShareOptions } from '../crypto/entities/InvoiceShareOptions.mjs'; import { SecretIdUseOption } from '../crypto/entities/SecretIdUseOption.mjs'; import { EntityReferenceInGroup } from '../model/EntityReferenceInGroup.mjs'; import { GroupScoped } from '../model/GroupScoped.mjs'; import { DecryptedInvoice, EncryptedInvoice, Invoice } from '../model/Invoice.mjs'; import { Patient } from '../model/Patient.mjs'; import { StoredDocumentIdentifier } from '../model/StoredDocumentIdentifier.mjs'; import { User } from '../model/User.mjs'; import { AccessLevel } from '../model/embed/AccessLevel.mjs'; import { HexString } from '../model/specializations/HexString.mjs'; import { ArrayWithUniqueKeys } from '../utils/ArrayWithUniqueKeys.mjs'; import { InvoiceFlavouredInGroupApi } from './InvoiceFlavouredInGroupApi.mjs'; export interface InvoiceInGroupApi { encrypted: InvoiceFlavouredInGroupApi; tryAndRecover: InvoiceFlavouredInGroupApi; /** * * In-group version of [InvoiceApi.withEncryptionMetadata] */ withEncryptionMetadata(entityGroupId: string, base: DecryptedInvoice | undefined, patient: GroupScoped | undefined, options?: { user?: User | undefined; delegates?: ArrayWithUniqueKeys<{ delegate: EntityReferenceInGroup; accessLevel: AccessLevel; }, 'delegate'>; secretId?: SecretIdUseOption; alternateRootDelegateReference?: EntityReferenceInGroup | undefined; }): Promise>; /** * * In-group version of [InvoiceApi.withEncryptionMetadataAndDelegates] */ withEncryptionMetadataAndDelegates(entityGroupId: string, base: DecryptedInvoice | undefined, patient: GroupScoped | undefined, delegates: ArrayWithUniqueKeys<{ delegate: EntityReferenceInGroup; delegateOptions: InvoiceDelegateOptions; }, 'delegate'>, options?: { user?: User | undefined; secretId?: SecretIdUseOption; alternateRootDelegateReference?: EntityReferenceInGroup | undefined; }): Promise>; /** * * In-group version of [InvoiceApi.getEncryptionKeysOf] */ getEncryptionKeysOf(invoice: GroupScoped): Promise>; /** * * In-group version of [InvoiceApi.hasWriteAccess] */ hasWriteAccess(invoice: GroupScoped): Promise; /** * * In-group version of [InvoiceApi.decryptPatientIdOf] */ decryptPatientIdOf(invoice: GroupScoped): Promise>; /** * * In-group version of [InvoiceApi.createDelegationDeAnonymizationMetadata] */ createDelegationDeAnonymizationMetadata(entity: GroupScoped, delegates: Array): Promise; /** * * In-group version of [InvoiceApi.decrypt] */ decrypt(invoices: Array>): Promise>>; /** * * In-group version of [InvoiceApi.tryDecrypt] */ tryDecrypt(invoices: Array>): Promise>>; /** * * In-group version of [InvoiceBasicFlavourlessApi.deleteInvoiceById] */ deleteInvoiceById(entityId: GroupScoped): Promise>; /** * * In-group version of [InvoiceBasicFlavourlessApi.deleteInvoicesByIds] */ deleteInvoicesByIds(entityIds: Array>): Promise>>; /** * * In-group version of [InvoiceBasicFlavourlessApi.purgeInvoiceById] */ purgeInvoiceById(entityId: GroupScoped): Promise; /** * * In-group version of [InvoiceBasicFlavourlessApi.purgeInvoicesByIds] */ purgeInvoicesByIds(entityIds: Array>): Promise>>; /** * * In-group version of [InvoiceBasicFlavourlessApi.deleteInvoice] */ deleteInvoice(invoice: GroupScoped): Promise>; /** * * In-group version of [InvoiceBasicFlavourlessApi.deleteInvoices] */ deleteInvoices(invoices: Array>): Promise>>; /** * * In-group version of [InvoiceBasicFlavourlessApi.purgeInvoice] */ purgeInvoice(invoice: GroupScoped): Promise; /** * * In-group version of [InvoiceBasicFlavourlessApi.purgeInvoices] */ purgeInvoices(invoices: Array>): Promise>>; /** * * In-group version of [InvoiceFlavouredApi.shareWith] */ shareWith(delegate: EntityReferenceInGroup, invoice: GroupScoped, options?: { options?: InvoiceShareOptions | undefined; }): Promise>; /** * * In-group version of [InvoiceFlavouredApi.shareWithMany] */ shareWithMany(invoice: GroupScoped, delegates: ArrayWithUniqueKeys<{ delegate: EntityReferenceInGroup; shareOptions: InvoiceShareOptions; }, 'delegate'>): Promise>; /** * * In-group version of [InvoiceApi.createInvoice] */ createInvoice(entity: GroupScoped): Promise>; /** * * In-group version of [InvoiceApi.createInvoices] */ createInvoices(entities: Array>): Promise>>; /** * * In-group version of [InvoiceBasicFlavouredApi.undeleteInvoiceById] */ undeleteInvoiceById(entityId: GroupScoped): Promise>; /** * * In-group version of [InvoiceBasicFlavouredApi.undeleteInvoicesByIds] */ undeleteInvoicesByIds(entityIds: Array>): Promise>>; /** * * In-group version of [InvoiceBasicFlavouredApi.undeleteInvoice] */ undeleteInvoice(invoice: GroupScoped): Promise>; /** * * In-group version of [InvoiceBasicFlavouredApi.undeleteInvoices] */ undeleteInvoices(invoices: Array>): Promise>>; /** * * In-group version of [InvoiceBasicFlavouredApi.modifyInvoice] */ modifyInvoice(entity: GroupScoped): Promise>; /** * * In-group version of [InvoiceBasicFlavouredApi.modifyInvoices] */ modifyInvoices(entities: Array>): Promise>>; /** * * In-group version of [InvoiceBasicFlavouredApi.getInvoice] */ getInvoice(groupId: string, entityId: string): Promise | undefined>; /** * * In-group version of [InvoiceBasicFlavouredApi.getInvoices] */ getInvoices(groupId: string, entityIds: Array): Promise>>; }