import type { ComponentChildren } from 'preact';
/**
 * Experiments which are returned from a call made to onboardingcomponents for feature flags and experiments (see `useToggles`).
 * Experiments are used to toggle behavior for A/B testing purposes.
 * Defined using the Experimentation Platform in BO.
 *
 * Naming convention: `${ExperimentName}_${TreatmentGroupNameOrControl}` ex. `BankingVerificationExperiment_Treatment1` or `BusinessSearchExperiment_control`
 */
export declare const ExperimentNames: {
    /**
     * OXP-7319: Experiment with Forced Manual Payout Flow
     */
    readonly BankingPayoutFlow_ForcedManualVerification: "BankingPayoutFlow_ForcedManualVerification";
};
export declare const FeatureNames: {
    /**
     *
     */
    readonly EnableAgeVerification: "EnableAgeVerification";
    /**
     * Allows users to specify a 'Country of Governing Law' for UK companies
     * within Business Details Task
     */
    readonly EnableCountryOfGoverningLawForUKCompanies: "EnableCountryOfGoverningLawForUKCompanies";
    /**
     *
     */
    readonly EnableDoingBusinessAsNameV4: "EnableDoingBusinessAsNameV4";
    /**
     *
     */
    readonly EnableFinancialInformationComponentV4: "EnableFinancialInformationComponentV4";
    /**
     * Enables localization for Japan
     */
    readonly EnableJapanLocalization: "EnableJapanLocalization";
    /**
     *
     */
    readonly EnableNationalitySGHK: "EnableNationalitySGHK";
    /**
     *
     */
    readonly EnableRegistrationAndTaxAbsentStatesV4: "EnableRegistrationAndTaxAbsentStatesV4";
    /**
     *
     */
    readonly ShowCustomerSupportV4: "ShowCustomerSupportV4";
    /**
     *
     */
    readonly StrictNameAndAddressValidationV4: "StrictNameAndAddressValidationV4";
    /**
     * OXP-6596: Enable Bank Document Classification in HO
     */
    readonly EnableBankDocumentClassification: "EnableBankDocumentClassification";
    /**
     * OXP-6596: Enable Bank Document Classification in ShadowMode in HO
     */
    readonly EnableBankDocumentClassificationShadowMode: "EnableBankDocumentClassificationShadowMode";
    /**
     * OXP-7195: Enable business details rendering inside of a modal
     */
    readonly EnableBusinessDetailsModal: "EnableBusinessDetailsModal";
    /**
     * SOE-4062: Enable cross border payouts configuration for Bank Account task
     */
    readonly EnableCrossBorderPayouts: "EnableCrossBorderPayouts";
    /**
     * OXP-6032: Enable editing a single business line
     */
    readonly EnableDeleteBusinessLines: "EnableDeleteBusinessLines";
    /**
     * OXP-6799: Enable limit to a single business line
     */
    readonly EnableLimitToSingleBusinessLine: "EnableLimitToSingleBusinessLine";
    /**
     * Enable in-memory routing (wouter-preact memoryLocation) instead of state-based navigation.
     * When both EnableURLRouterForHostedOnboarding and EnableMemoryRouterForHostedOnboarding are on, memory router takes precedence.
     */
    readonly EnableMemoryRouterForHostedOnboarding: "EnableMemoryRouterForHostedOnboarding";
    /**
     * OXP-6032: Enable editing a single business line
     */
    readonly EnableModifyBusinessLines: "EnableModifyBusinessLines";
    /**
     * OXP-5392: UseMultiform in Soleprop and trust task
     */
    readonly EnableMultiFormInTrustFlow: "EnableMultiFormInTrustFlow";
    /**
     * OXP-5390: Enable payout details flow with multiform
     */
    readonly EnablePayoutDetailsMultiForm: "EnablePayoutDetailsMultiForm";
    /**
     * OXP-6357 Show revamped decision-maker task page
     */
    readonly EnableRevampedDecisionMakersTaskPage: "EnableRevampedDecisionMakersTaskPage";
    /**
     * Enable URL-based routing (wouter-preact) instead of state-based navigation
     */
    readonly EnableURLRouterForHostedOnboarding: "EnableURLRouterForHostedOnboarding";
    /**
     * Enable "Verify by Invite" flow for decision makers in Identity Verification
     */
    readonly EnableVerifyByInvite: "EnableVerifyByInvite";
    /**
     * Use the status calculated on the backend for the payout task.
     * If false, instead compute the status from capabilities and problems on the root LE.
     */
    readonly UseTaskStatusApiForPayout: "UseTaskStatusApiForPayout";
    /**
     * Enable validation change to allow 2 repeated characters string e.g. "aa", "iI"
     */
    readonly EnableAllowTwoRepeatedCharactersInName: "EnableAllowTwoRepeatedCharactersInName";
    /**
     OXP-6566: Create new payout intro screen
     */
    readonly EnableBankAccountDetailsLandingPage: "EnableBankAccountDetailsLandingPage";
    /**
     * OXP-7197: Enable unified company search
     */
    readonly EnableUnifiedCompanySearch: "EnableUnifiedCompanySearch";
    /**
     * Passed in from uo sdk, TODO: move to settings
     */
    readonly EnableEInvoicingCodeField: "EnableEInvoicingCodeField";
    readonly HidePayoutAccountTask: "HidePayoutAccountTask";
    readonly ShowExtraTaxExemptionReasons: "ShowExtraTaxExemptionReasons";
    /**
     * Old features
     */
    readonly AllowMoreRolesForMainRootTrustee: "AllowMoreRolesForMainRootTrustee";
    readonly EnablePhoneFieldScenario: "EnablePhoneFieldScenario";
    readonly ShowUnsupportedEntityType: "ShowUnsupportedEntityType";
    /**
     * OXP-6952: Consume new experiments endpoint inside SDK
     */
    readonly EnableOnboardingTogglesEndpoint: "EnableOnboardingTogglesEndpoint";
};
export type ExperimentName = (typeof ExperimentNames)[keyof typeof ExperimentNames];
export type Experiments = {
    [key in ExperimentName]?: boolean;
};
export type FeatureName = (typeof FeatureNames)[keyof typeof FeatureNames];
export type Features = {
    [key in FeatureName]?: boolean;
};
export interface ToggleProps {
    children?: ComponentChildren;
    features: Features;
    refreshExperiments?: () => void;
}
export interface ToggleContextValue {
    features: Features;
    isFeatureEnabled(key: FeatureName): boolean;
    experiments: Experiments;
    isExperimentEnabled(key: ExperimentName): boolean;
    refreshExperiments?: () => void;
}
