import type { Dispatch, StateUpdater } from 'preact/hooks';
import type { BankVerificationVendor, CreateTrustedTransferInstrumentResponse } from '../../../../api/transferInstruments/transferInstruments.types';
import type { ExistingLegalEntity } from '../../../../core/models/api/legal-entity';
import type { BaseOuterFormProps } from '../../../../hooks/useForm/types';
import type { TaskType } from '../../../../stores/globalStore/taskTypes';
import type { CountryCode } from '../../../../types/datasets/country-code';
import type { FormModel } from '../../../../types/form';
import type { DropinProps } from '../../../EmbeddedDropins/OnboardingDropinComponent/DropinComposer/types';
import type { BankDocumentSchema } from '../BankDocument/types';
import type { AccountVerificationSchema } from '../BankVerification/types';
import type { PayoutAccountSchema } from '../PayoutAccount/types';
import type { PayoutCountryDetailsSchema } from '../PayoutCountryDetails/types';
import type { PayoutVerificationMethodSchema } from '../PayoutVerificationMethod/types';
export interface PayoutDetailsSchema {
    payoutCountryDetails?: PayoutCountryDetailsSchema;
    payoutVerificationMethod?: PayoutVerificationMethodSchema;
    payoutAccountDetails?: PayoutAccountSchema;
    payoutAccountDocuments?: BankDocumentSchema;
    payoutAccountVerification?: AccountVerificationSchema;
}
export interface PayoutDetailsProps extends BaseOuterFormProps<PayoutDetailsSchema> {
    accountDetailsFromInput?: PayoutAccountSchema;
    activeForm?: FormModel;
    legalEntityResponse: ExistingLegalEntity;
    taskType?: TaskType;
    onBack?: () => void;
    onNext?: () => void;
    asModal?: boolean;
    accountHolder: string;
    provider: BankVerificationVendor | undefined;
    bankVendorsLoadingStatus: 'pending' | 'error' | 'success';
    instantVerificationAvailable: boolean;
    createTrustedTransferInstrument?: (code: string, state: string) => Promise<CreateTrustedTransferInstrumentResponse | undefined>;
    country: CountryCode;
    trustedTransferInstrumentId?: string;
    setHasAsyncValidationError?: Dispatch<StateUpdater<boolean>>;
}
export interface PayoutDetailsDropinProps extends Omit<PayoutDetailsProps, 'country' | 'accountHolder' | 'handleNextClick' | 'bankVendorsLoadingStatus' | 'instantVerificationAvailable' | 'provider'>, DropinProps {
    openBankingPartnerConfigId?: string;
    currentTransferInstrumentId: string | undefined;
    setCurrentTransferInstrumentId(transferInstrumentId: string): void;
    navigateBackToTaskList?(): void;
    onSubmit?: (data: PayoutDetailsSchema & {
        id: string;
    }) => void;
}
