import type { ComponentChildren } from 'preact';
import type { CountryCode } from '../../types/datasets/country-code';
/**
 * Settings are features that can be switched on or off by external users.
 * This list is defined in the BE.
 */
export declare const SettingNames: {
    readonly AcceptedCountries: "acceptedCountries";
    readonly AllowBankAccountFormatSelection: "allowBankAccountFormatSelection";
    readonly AllowDebugUi: "allowDebugUi";
    readonly AllowIntraRegionCrossBorderPayout: "allowIntraRegionCrossBorderPayout";
    readonly AllowLegalEntityTypeChange: "changeLegalEntityType";
    readonly AllowPrefilledCountryEdit: "editPrefilledCountry";
    readonly RequirePciSignEcommerce: "requirePciSignEcommerce";
    readonly RequirePciSignPos: "requirePciSignPos";
    readonly RequirePciSignEcomMoto: "requirePciSignEcomMoto";
    readonly RequirePciSignPosMoto: "requirePciSignPosMoto";
    readonly HideOnboardingIntroductionIndividual: "hideOnboardingIntroductionIndividual";
    readonly HideOnboardingIntroductionOrganization: "hideOnboardingIntroductionOrganization";
    readonly HideOnboardingIntroductionTrust: "hideOnboardingIntroductionTrust";
    readonly HideOnboardingIntroductionSoleProprietor: "hideOnboardingIntroductionSoleProprietor";
    readonly TransferInstrumentLimit: "transferInstrumentLimit";
    readonly ViewOnboardingGuidance: "viewOnboardingGuidance";
    readonly InstantBankVerification: "instantBankVerification";
    readonly ShowServiceAgreementsFirst: "showServiceAgreementsFirst";
    readonly ShowBusinessFinancingFirst: "showBusinessFinancingFirst";
    readonly EnforceLegalAge: "enforceLegalAge";
    readonly MerchantType: "merchantType";
    readonly AllowBusinessLines: "allowBusinessLines";
    readonly AllowCrossBorderPayout: "allowCrossBorderPayout";
};
export type SettingName = (typeof SettingNames)[keyof typeof SettingNames];
export interface Settings {
    acceptedCountries: CountryCode[] | undefined;
    allowBankAccountFormatSelection: boolean;
    allowDebugUi: boolean;
    allowIntraRegionCrossBorderPayout: boolean;
    changeLegalEntityType: boolean;
    editPrefilledCountry: boolean;
    requirePciSignEcommerce: boolean;
    requirePciSignPos: boolean;
    requirePciSignEcomMoto: boolean;
    requirePciSignPosMoto: boolean;
    hideOnboardingIntroductionIndividual: boolean;
    hideOnboardingIntroductionOrganization: boolean;
    hideOnboardingIntroductionTrust: boolean;
    hideOnboardingIntroductionSoleProprietor: boolean;
    viewOnboardingGuidance: boolean;
    transferInstrumentLimit: number;
    instantBankVerification: boolean;
    showServiceAgreementsFirst: boolean;
    showBusinessFinancingFirst: boolean;
    enforceLegalAge: boolean;
    merchantType: string | undefined;
    allowBusinessLines: boolean;
    allowCrossBorderPayout: boolean;
}
export type ProvidedSettings = Partial<Settings>;
export type BooleanSettingName = {
    [S in keyof Settings]: Settings[S] extends boolean ? S : never;
}[keyof Settings];
export interface SettingsProps {
    children?: ComponentChildren;
    settings: ProvidedSettings;
}
export interface SettingsContextValue {
    isSettingEnabled(key: BooleanSettingName): boolean;
    getSetting<S extends SettingName>(settingName: S): Settings[S];
    settings: Readonly<Settings>;
}
