import type { IconName } from '../../../ui/atoms/Icon/Icon';
import type { CapabilityName } from '../../../../core/models/api/capability';
import { type CompanyTypesValue } from '../../../../core/models/api/company-types-value';
import type { ExistingLegalEntity } from '../../../../core/models/api/legal-entity';
import { type LegalEntityType } from '../../../../core/models/api/legal-entity-type';
import type { AccountHolderOption, LegalArrangementOption } from '../../../../types/accountHolder';
import type { CountryCode } from '../../../../types/datasets/country-code';
import type { BusinessType, BusinessTypeMetadata, BusinessTypeModel, LegalArrangementModel, TrusteeType } from './types';
/**
 * this is messy business logic
 * we determine the legal entity type by the account holder
 * however we have partnershipIncorporated;
 * which shares the same account holder type as company (a subtype of company)
 * we have to force the result of this function to 'legalArrangement' should organization.type is partnershipIncorporated
 * could possibly be more of such cases in the future.
 *
 * @param businessTypeItems - list of BusinessTypeModel
 * @param accountHolder - the entity we payout to
 * @param legalEntityType - the type of legal entity
 * @param companyTypesValue - the subtype of an organization see CompanyValuesType
 */
export declare const organizationTypesToSkipCompanyStructureForm: string[];
export declare const getBusinessType: (businessTypeItems: Partial<BusinessTypeMetadata>, country: CountryCode, accountHolder: AccountHolderOption | undefined, legalEntityType?: LegalEntityType, companyTypesValue?: CompanyTypesValue | "", capabilities?: CapabilityName[]) => BusinessTypeModel | undefined;
export declare const businessTypeIcons: Record<BusinessType, IconName>;
export declare const legalArrangementMetadata: Record<LegalArrangementOption, LegalArrangementModel>;
export declare const useSelectionOptions: (legalEntityResponse: ExistingLegalEntity) => {
    adjustedBusinessTypeMetadata: {
        legalArrangement?: BusinessTypeModel | undefined;
        company?: BusinessTypeModel | undefined;
        individual?: BusinessTypeModel | undefined;
        soleProprietorship?: BusinessTypeModel | undefined;
    };
    legalArrangementOptions: LegalArrangementOption[];
};
export declare const determineOrganizationTypeToUpdate: (targetLegalArrangement?: LegalArrangementOption, currentCompanyTypeValue?: CompanyTypesValue) => CompanyTypesValue | undefined;
export declare const getDefaultLegalArrangementOrSuborganizationType: (legalEntityResponse: ExistingLegalEntity | undefined, accountHolder: AccountHolderOption | undefined) => LegalArrangementOption | undefined;
export declare const getTargetLegalEntityType: (businessType: BusinessType | undefined, legalArrangement: LegalArrangementOption | undefined, trusteeType: TrusteeType | undefined, currentLegalEntityType: LegalEntityType | undefined) => LegalEntityType | undefined;
