import type { Dispatch, StateUpdater } from 'preact/hooks';
import type { Scenario } from '../api/configurations/configurations.types';
import type { BankVerificationVendor } from '../api/transferInstruments/transferInstruments.types';
import type { LoadingStatus } from '../components/ui/atoms/LoaderWrapper/constants';
import type { TopLevelDataSchema } from '../context/StateContext/types';
import type { AccountFormatRequirements, PayoutAccountFormats } from '../datasets/generators/getAccountFormatForCountry';
import type { LegalEntityType } from '../core/models/api/legal-entity-type';
import type { TaskType } from '../stores/globalStore/taskTypes';
import type { CountryCode } from '../types/datasets/country-code';
import type { FormConfiguration } from '../types/form-configuration';
import type { BankAccountFormatType } from '../components/BankAccount/fields/BankAccountFormat/types';
export type ParseConfiguration<TLDS extends TopLevelDataSchema> = (configuration: {
    scenarios: Scenario[];
    taskList?: TaskType[];
    provider?: BankVerificationVendor;
    bankVerificationProviders?: Partial<Record<CountryCode, string>>;
    requiredFields: AccountFormatRequirements | undefined;
    bankVerificationAvailable?: boolean;
    country: CountryCode;
}) => FormConfiguration<TLDS, string>;
interface UseScenarioConfigurationOptions<TLDS extends TopLevelDataSchema> {
    parseConfiguration: ParseConfiguration<TLDS>;
    country: CountryCode;
    legalEntityType: LegalEntityType;
    setLoadingStatus: Dispatch<StateUpdater<LoadingStatus>>;
    getPayoutAccountFormatData?: () => Promise<PayoutAccountFormats>;
    instantVerificationAvailable?: boolean;
    existingBankAccountFormat?: BankAccountFormatType;
}
interface ScenarioConfiguration<TLDS extends TopLevelDataSchema> {
    fieldConfigurations: FormConfiguration<TLDS, string> | undefined;
    requiredFields: AccountFormatRequirements | undefined;
}
export declare const useScenarioConfiguration: <TLDS extends TopLevelDataSchema>({ getPayoutAccountFormatData, parseConfiguration, country, legalEntityType, instantVerificationAvailable, setLoadingStatus, existingBankAccountFormat, }: UseScenarioConfigurationOptions<TLDS>) => ScenarioConfiguration<TLDS>;
export {};
