import type { ComponentChildren } from 'preact';
/**
 * Experiments are features that can only be switched on or off internally.
 * This list is defined in the BE.
 */
export declare enum ExperimentNames {
    AllowMoreRolesForMainRootTrustee = "AllowMoreRolesForMainRootTrustee",
    /**
     *
     */
    ShowUnsupportedEntityType = "ShowUnsupportedEntityType",
    /**
     *
     */
    ShowExtraTaxExemptionReasons = "ShowExtraTaxExemptionReasons",
    /**
     *
     */
    EnableEInvoicingCodeField = "EnableEInvoicingCodeField",
    /**
     * Allows users to specify a 'Country of Governing Law' for UK companies
     * within Business Details Task
     */
    EnableCountryOfGoverningLawForUKCompanies = "EnableCountryOfGoverningLawForUKCompanies",
    /**
     *
     */
    HidePayoutAccountTask = "HidePayoutAccountTask",
    /**
     *
     */
    HidePciTask = "HidePciTask",
    /**
     *
     */
    EnableAgeVerification = "EnableAgeVerification",
    /**
     *
     */
    EnableNationalitySGHK = "EnableNationalitySGHK",
    /**
     *
     */
    EnablePreferInstantVerificationFlow = "EnablePreferInstantVerificationFlow",
    /**
     *
     */
    EnableFinancialInformationComponentV4 = "EnableFinancialInformationComponentV4",
    /**
     *
     */
    StrictNameAndAddressValidationV4 = "StrictNameAndAddressValidationV4",
    /**
     *
     */
    EnableDoingBusinessAsNameV4 = "EnableDoingBusinessAsNameV4",
    /**
     *
     */
    EnablePhoneFieldScenario = "EnablePhoneFieldScenario",
    /**
     *
     */
    ShowCustomerSupportV4 = "ShowCustomerSupportV4",
    /**
     *
     */
    EnableRegistrationAndTaxAbsentStatesV4 = "EnableRegistrationAndTaxAbsentStatesV4",
    /**
     * Enables a manual verification process for Company Tax Identification Numbers (TINs)
     * within Business Details Task
     */
    EnableManualCompanyTinVerification = "EnableManualCompanyTinVerification",
    /**
     *
     */
    EnableAutofillFlowForPureIndividualsInKeyMarkets = "EnableAutofillFlowForPureIndividualsInKeyMarkets",
    /**
     *
     */
    EnableAutofillFlowForPureIndividualsInAdditionalMarkets = "EnableAutofillFlowForPureIndividualsInAdditionalMarkets",
    /**
     *
     */
    EnableAutofillFlowForDecisionMakersInKeyMarkets = "EnableAutofillFlowForDecisionMakersInKeyMarkets",
    /**
     *
     */
    EnableAutofillFlowForDecisionMakersInAdditionalMarkets = "EnableAutofillFlowForDecisionMakersInAdditionalMarkets",
    /**
     * Implements a restriction within Business Details Task to prevent the use of P.O. Box addresses where physical
     * addresses are required
     */
    EnablePreventPoBoxAddress = "EnablePreventPoBoxAddress",
    /**
     * SOE-5373: Do not show all countries for business accounts customer
     */
    EnableLimitCountryBusinessAccountCustomers = "EnableLimitCountryBusinessAccountCustomers",
    /**
     * Enables Unincorporated Partnerships to be selected within Business Type Selection Task to be onboarded in HO
     */
    EnableUnincorporatedPartnershipInHO = "EnableUnincorporatedPartnershipInHO",
    /**
     *
     */
    UseOnboardingComponentsForSingpass = "UseOnboardingComponentsForSingpass",
    /**
     *
     */
    EnableCheckOnCreateBankAccount = "EnableCheckOnCreateBankAccount",
    /**
     * SOE-5342: Make TaxID mandatory when onboarding companies for business accounts
     */
    EnableTaxIdRequiredForBusinessAccountsScenarios = "EnableTaxIdRequiredForBusinessAccountsScenarios",
    /**
     * Enables ja-JP locale for HO
     */
    EnableJaJPLocale = "EnableJaJPLocale",
    /**
     *
     */
    CredentialBankingWeightage_EmphasizeCredentialBankingFlow = "CredentialBankingWeightage_EmphasizeCredentialBankingFlow"
}
export type ExperimentName = `${ExperimentNames}`;
export type Experiments = {
    [key in ExperimentName]?: boolean;
};
export interface ExperimentsProps {
    children?: ComponentChildren;
    experiments: Experiments;
    refreshExperiments?: () => void;
}
export interface ExperimentsContextValue {
    isExperimentEnabled(key: ExperimentName): boolean;
    enableVersionExperiment(key: ExperimentName): void;
    refreshExperiments?: () => void;
    experiments: Experiments;
}
