import { IContactDataStorage } from "../../../storage/contactDataStorage/contactDataStorage";
import { AddAssetContactForm } from "../../../types/contacts/addAssetContactForm";
import { AddSubAccountContactForm } from "../../../types/contacts/addSubAccountContactForm";
import { AssetContactModel } from "../../../types/contacts/assetContactModel";
import { ContactModel } from "../../../types/contacts/contactModel";
import { EditSubAccountContactForm } from "../../../types/contacts/editSubAccountContactForm";
import { RemoveAssetContactForm } from "../../../types/contacts/removeAssetContactForm";
import { RemoveSubAccountContactForm } from "../../../types/contacts/removeSubAccountContactForm";
import "reflect-metadata";
export declare class ContactRepository {
    private contactDataStorage;
    constructor(contactDataStorage: IContactDataStorage);
    getContacts(): Promise<ContactModel[]>;
    addContact(contact: ContactModel): Promise<void>;
    updateContactName(principal: string, newName: string): Promise<ContactModel>;
    removeContact(principal: string): Promise<void>;
    addAssetContact(form: AddAssetContactForm): Promise<ContactModel>;
    removeAssetContact(form: RemoveAssetContactForm): Promise<ContactModel>;
    addSubAccountContact(form: AddSubAccountContactForm): Promise<ContactModel>;
    updateSubAccountContact(form: EditSubAccountContactForm): Promise<ContactModel>;
    removeSubAccountContact(form: RemoveSubAccountContactForm): Promise<ContactModel>;
    removeAssetFromAllContacts(ledgerAddress: string): Promise<void>;
    isContactExist(contactId: string): Promise<boolean>;
    getContactByPrincipal(principal: string): Promise<ContactModel>;
    getContactAssetOrDefault(contact: ContactModel, ledgerAddress: string): AssetContactModel | undefined;
    getContactAsset(contact: ContactModel, ledgerAddress: string): AssetContactModel;
}
