import { TaxCountry } from "../data";
import { TaxForm } from "./sqm-user-info-form";
export declare type ValidationErrorFunction = (input: {
  control: any;
  key: string;
  value: any;
}) => string | undefined;
export declare type FormState = {
  firstName?: string;
  lastName?: string;
  email?: string;
  phoneCountry?: string;
  countryCode?: string;
  currency?: string;
  participantType?: string;
  allowBankingCollection?: boolean;
  errors?: any;
  error?: string;
};
export declare type ValidationErrors = {
  [key: string]: string;
};
export declare type InitialData = {
  [key: string]: string;
};
export declare function useUserInfoForm(props: TaxForm): {
  setStep: (value: string) => void;
  onSubmit: (event: any) => Promise<void>;
  text: TaxForm & {
    error: {
      fieldRequiredError: string;
      fieldInvalidError: string;
      generalTitle: string;
      generalDescription: string;
      loadingErrorAlertHeader: string;
      loadingErrorAlertDescription: string;
      invalidCharacterError: string;
    };
  };
  callbacks: {
    setCurrencySearch: (value: string | ((prev: string) => string)) => void;
    setCountrySearch: (value: string | ((prev: string) => string)) => void;
    setPhoneCountrySearch: (value: string | ((prev: string) => string)) => void;
    onFormChange: (field: string, e: CustomEvent) => void;
  };
  refs: {
    formRef: {
      current: HTMLFormElement;
    };
    currencyRef: {
      current: HTMLSelectElement;
    };
    phoneCountryRef: {
      current: HTMLSelectElement;
    };
  };
  data: {
    currencies: {
      displayName: string;
      currencyCode: string;
    }[];
    countries: TaxCountry[];
    phoneCountries: TaxCountry[];
    allCurrencies: {
      displayName: string;
      currencyCode: string;
    }[];
    allCountries: TaxCountry[];
    regionLabelEnum: "STATE" | "PROVINCE" | "REGION";
    regions: {
      label: string;
      value: string;
    }[];
    partnerData: import("../data").ImpactPublisher;
    userData: import("../data").ImpactUser;
  };
  states: {
    step: string;
    hideState: boolean;
    hideSteps: boolean;
    disabled: boolean;
    loadingError: boolean;
    loading: boolean;
    isPartner: boolean;
    isUser: boolean;
    formState: {
      errors: {};
      firstName: string;
      lastName: string;
      email: string;
      phoneNumberCountryCode: string;
      phoneNumber: string;
      countryCode: string;
      currency: string;
      address: string;
      city: string;
      state: string;
      postalCode: string;
    };
  };
};
export declare type UseUserInfoFormResult = ReturnType<typeof useUserInfoForm>;
