import type { AccountHolderOption } from '../core/types/AccountHolder.types';
import { TaskTypes } from '../components/TaskList/types';
import type { ExistingLegalEntity, LegalEntity } from '../core/models/api/legal-entity';
import type { LegalEntityAssociation, NomineeType } from '../core/models/api/legal-entity-association';
import { LegalEntityType } from '../core/models/api/legal-entity-type';
import { CountryCodes } from '../core/models/country-code';
import type { CapabilityProblems } from '../core/models/errors/capability-problems';
import type { EntityProblems } from '../core/models/errors/entity-problems';
import type { PersonalDetailsSchema } from '../components/Individual/forms/Individual/PersonalDetails/types';
/**
 * Returns the entity associations from the root LE which have a {@link LegalEntityAssociation.associatorId} matching the given `legalEntityId`.
 * Can be used to find members of a trust, or decision makers of a trustee company.
 *
 * @param rootLE the root legal entity which holds all the entity associations
 * @param legalEntityId the ID of the legal entity whose associations we wish to find
 */
export declare const getDirectEntityAssociations: (rootLE: ExistingLegalEntity, legalEntityId: string) => LegalEntityAssociation[];
export declare const getOwnEntityAssociations: (legalEntity: ExistingLegalEntity) => LegalEntityAssociation[];
export declare const getOwnSoleProprietorshipIdArray: (legalEntity: ExistingLegalEntity) => string[];
export declare const hasSolePropInLegalEntity: (rootLegalEntity: ExistingLegalEntity) => boolean;
export declare const getOwnSolePropProblems: (rootLegalEntity: ExistingLegalEntity, capabilityProblems: CapabilityProblems) => EntityProblems | undefined;
export declare const hasOwnEntityAssociationOfType: (type: LegalEntityType, entityAssociations: LegalEntityAssociation[] | undefined, legalEntityId: string | undefined) => boolean;
export declare const removeEntityAssociationByType: (type: LegalEntityType, entityAssociations: LegalEntityAssociation[], legalEntityId: string | undefined) => LegalEntityAssociation[];
export declare const isRootLegalEntity: (legalEntity: LegalEntity, taskType: TaskTypes) => boolean;
export declare const filterOutUnwantedAssociationsIfRootLE: (taskType: TaskTypes, legalEntity: ExistingLegalEntity | undefined, accountHolder: AccountHolderOption | undefined) => LegalEntityAssociation[] | undefined;
export declare const getLegalRepresentative: (legalEntityResponse: ExistingLegalEntity) => LegalEntityAssociation;
export declare const allowedCountriesForNominee: CountryCodes[];
export declare const attachNomineeToRole: (existingEntityAssociation: LegalEntityAssociation, country: CountryCodes, nominee?: NomineeType) => LegalEntityAssociation;
export declare const getNomineeFromAssociation: (entityAssociations: LegalEntityAssociation[], personalDetails?: PersonalDetailsSchema) => PersonalDetailsSchema | undefined;
export declare const hasNomineesChanged: (personalDetails?: PersonalDetailsSchema, nomineesSubmitted?: NomineeType) => boolean;
