import type { State, TopLevelDataSchema } from '../../core/context/StateContext/types';
import type { AddressSearchRequest, AddressSearchResponse, LoqateAddress } from '../../core/models/api/address-search';
import type { CapabilityName } from '../../core/models/api/capability';
import type { CompanyDatasetRequest, CompanyDatasetResponse, CompanySearchRequest, CompanySearchResponse, TinVerificationRequest, TinVerificationResponse } from '../../core/models/api/company-search';
import type { DownloadPci, PciQuestionnaireIds, PciQuestionnaires, PciStatus, PciStatusRequest, PciTemplateRequest, PciTemplateResponse, ServiceAgreementAcceptanceInfos, ServiceAgreementAcceptedDocumentResponse, ServiceAgreementRequest, ServiceAgreementResponse, ServiceAgreementSignRequest, ServiceAgreementSignResponse, ServiceAgreementStatus, ServiceAgreementUnacceptedDocumentRequest, ServiceAgreementUnacceptedDocumentResponse, SignedBy } from '../../core/models/api/contracts';
import type { Document, ExistingDocument } from '../../core/models/api/document';
import type { BankVerificationVendorsResponse } from '../../core/models/api/get-bankVerification-providers';
import type { InstantIdVerificationStartCheckRequest, InstantIdVerificationStartCheckResponse, InstantIdVerificationTokenRequest, InstantIdVerificationTokenResponse } from '../../core/models/api/instant-id-verification';
import type { ExistingLegalEntity, LegalEntity, PatchLegalEntity } from '../../core/models/api/legal-entity';
import type { ReviewCompletion } from '../../core/models/api/review';
import type { ExistingTransferInstrument, TransferInstrument } from '../../core/models/api/transfer-instrument';
import type { BankVerificationErrorResponse, CreateTrustedTransferInstrumentResponse } from '../../core/models/api/trusted-transferInstrument';
import type { OnboardingLinkConfig, OnboardingLinkResponse } from '../../core/models/api/view-verification-status';
import type { CountryCode } from '../../core/models/country-code';
import type { Language } from '../../language/Language';
import type { TranslationKey } from '../../language/types';
import type { TaskTypes } from '../../stores/globalStore/taskTypes';
export interface SingpassLinkResponseItem {
    authUrl: string;
    success: boolean;
}
export interface SingpassLinkResponse {
    item: SingpassLinkResponseItem;
}
export interface DropinComposerProps extends Required<Pick<DropinAPIHandlers, 'handleGetLegalEntity' | 'handleUpdateLegalEntity' | 'handleCreateLegalEntity' | 'handleGetPciStatus' | 'handleGetPciQuestionnaires' | 'handleGetServiceAgreementStatus' | 'handleGetServiceAgreementAcceptanceInfos' | 'handleGetTransferInstrument' | 'handleDeleteTransferInstrument' | 'handleCreateTransferInstrument' | 'handleUpdateTransferInstrument' | 'handleGetDocument' | 'handleUpdateDocument' | 'handleCreateDocument' | 'handleDeleteDocument' | 'handleCompanyIndexSearch' | 'handleCompanyDeepSearch' | 'handleGetCompanyDataset' | 'handleRefreshCompanyDataset' | 'handleVerifyTin' | 'handleClearCompanyData' | 'handleGetBankVerificationVendors' | 'handleSignPci' | 'handleGetPciTemplate' | 'handleDownloadPci' | 'handleGetServiceAgreement' | 'handleViewAcceptedTermsOfServiceDocument' | 'handleDownloadAcceptedTermsOfServiceDocument' | 'handleDownloadUnacceptedTermsOfServiceDocument' | 'handleSignServiceAgreement' | 'handleReviewConfirm'>>, Pick<DropinAPIHandlers, 'handleCreateTrustedTransferInstrument' | 'handleBankVerificationError' | 'handleGetIdVerificationStartCheck' | 'handleGetIdVerificationToken' | 'handleAddressSearch' | 'handleFindAddress' | 'handleOpenSingpassAuthorizationLink' | 'handleCompanyRegistrationNumberIndexSearch' | 'handleCompanyRegistrationNumberDeepSearch'> {
    capabilities?: CapabilityName[];
    legalEntityResponse: ExistingLegalEntity;
    onChange?: (state: State<TopLevelDataSchema>) => void;
    onSubmit?: (data: unknown) => void;
    onLoad?: () => void;
    onNavigate?: (task: TaskTypes) => void;
}
export interface DropinAPIHandlers {
    handleReviewConfirm?(legalEntityId: string): Promise<ReviewCompletion>;
    handleGetLegalEntity?(legalEntityId: string): Promise<ExistingLegalEntity>;
    handleCreateLegalEntity?(data: LegalEntity): Promise<ExistingLegalEntity>;
    handleUpdateLegalEntity?(data: PatchLegalEntity, legalEntityId: string): Promise<ExistingLegalEntity>;
    handleCreateDocument?(data: Document, legalEntityId: string): Promise<ExistingDocument>;
    handleUpdateDocument?(data: Document, documentId: string, legalEntityId: string): Promise<ExistingDocument>;
    handleDeleteDocument?(documentId: string, legalEntityId: string): Promise<ExistingDocument>;
    handleGetDocument?(documentId: string, legalEntityId: string): Promise<ExistingDocument>;
    handleGetBankVerificationVendors?(country: CountryCode, openBankingPartnerConfigId?: string, locale?: Language['locale']): Promise<BankVerificationVendorsResponse>;
    handleGetTransferInstrument?(transferInstrumentId: string): Promise<ExistingTransferInstrument>;
    handleUpdateTransferInstrument?(data: TransferInstrument, transferInstrumentId: string): Promise<ExistingTransferInstrument>;
    handleDeleteTransferInstrument?(transferInstrumentId: string): Promise<TransferInstrument>;
    handleCreateTransferInstrument?(data: TransferInstrument): Promise<ExistingTransferInstrument>;
    handleBankVerificationError?(errorCode: string, errorMessage: string, state: string, metadata?: Map<string, string>): Promise<BankVerificationErrorResponse>;
    handleGetPciTemplate?(legalEntityId: string, data: PciTemplateRequest): Promise<PciTemplateResponse>;
    handleGetPciQuestionnaires?(legalEntityId: string): Promise<PciQuestionnaires>;
    handleSignPci?(legalEntityId: string, data: SignedBy): Promise<PciQuestionnaireIds>;
    handleDownloadPci?(legalEntityId: string, pciReference: string): Promise<DownloadPci>;
    handleGetPciStatus?(legalEntityId: string, data: PciStatusRequest): Promise<PciStatus>;
    handleGetServiceAgreement?(legalEntityId: string, data: ServiceAgreementRequest): Promise<ServiceAgreementResponse>;
    handleSignServiceAgreement?(legalEntityId: string, termsOfServiceDocumentId: string, data: ServiceAgreementSignRequest): Promise<ServiceAgreementSignResponse>;
    handleGetServiceAgreementStatus?(legalEntityId: string): Promise<ServiceAgreementStatus>;
    handleViewAcceptedTermsOfServiceDocument?(legalEntityId: string, termsOfServiceAcceptanceReference: string): Promise<ServiceAgreementAcceptedDocumentResponse>;
    handleDownloadAcceptedTermsOfServiceDocument?(legalEntityId: string, termsOfServiceAcceptanceReference: string): Promise<ServiceAgreementAcceptedDocumentResponse>;
    handleDownloadUnacceptedTermsOfServiceDocument?(legalEntityId: string, data: ServiceAgreementUnacceptedDocumentRequest): Promise<ServiceAgreementUnacceptedDocumentResponse>;
    handleGetServiceAgreementAcceptanceInfos?(legalEntityId: string): Promise<ServiceAgreementAcceptanceInfos>;
    handleAddressSearch?(data: AddressSearchRequest, legalEntityId: string): Promise<AddressSearchResponse>;
    handleFindAddress?(addressId: string): Promise<LoqateAddress>;
    handleGetIdVerificationToken?(legalEntityId: string, data: InstantIdVerificationTokenRequest): Promise<InstantIdVerificationTokenResponse>;
    handleGetIdVerificationStartCheck?(legalEntityId: string, data: InstantIdVerificationStartCheckRequest): Promise<InstantIdVerificationStartCheckResponse>;
    handleCompanyIndexSearch?(data: CompanySearchRequest): Promise<CompanySearchResponse>;
    handleCompanyDeepSearch?(data: CompanySearchRequest): Promise<CompanySearchResponse>;
    handleCompanyRegistrationNumberIndexSearch?(data: CompanySearchRequest): Promise<CompanySearchResponse>;
    handleCompanyRegistrationNumberDeepSearch?(data: CompanySearchRequest): Promise<CompanySearchResponse>;
    handleGetCompanyDataset?(data: CompanyDatasetRequest): Promise<CompanyDatasetResponse>;
    handleRefreshCompanyDataset?(data: CompanyDatasetRequest): Promise<CompanyDatasetResponse>;
    handleVerifyTin?(data: TinVerificationRequest): Promise<TinVerificationResponse>;
    handleClearCompanyData?(): Promise<void>;
    handleGenerateOnboardingLink?(config: OnboardingLinkConfig): Promise<OnboardingLinkResponse>;
    handleOpenSingpassAuthorizationLink?(): Promise<SingpassLinkResponse>;
    handleCreateTrustedTransferInstrument?(code: string, state: string): Promise<CreateTrustedTransferInstrumentResponse>;
}
export interface DropinProps {
    legalEntityResponse?: ExistingLegalEntity;
    handleHomeClick?(): void;
    handleBackClick?(): void;
    handleCloseClick?(): void;
    hideSidebar?: boolean;
    taskType?: TaskTypes;
    taskName?: TranslationKey;
}
