import type { ComponentChild } from 'preact';
import type { CompanyTypesValue } from '../../../../core/models/api/company-types-value';
import type { DocumentType } from '../../../../core/models/api/document';
import type { BaseInnerFormProps } from '../../../../hooks/useForm/types';
import type { NsTranslationKey } from '../../../../../types';
import type { CountryCode } from '../../../../types/datasets/country-code';
import type { FileSchema } from '../../../../types/file';
export type DocumentUploadSchema<DocumentName extends string> = Partial<Record<DocumentName, FileSchema[] | undefined> & {
    description: string;
}>;
export interface DocumentUploadProps<DocumentName extends string> extends BaseInnerFormProps<DocumentUploadSchema<DocumentName>> {
    documentField: DocumentName;
    documentType: DocumentType;
    guidanceContent?: ComponentChild;
    guidanceHeader?: ComponentChild;
    documentTypeSelect?: {
        selectedType: string;
        setSelectedType: (value: string) => void;
        options: ReadonlyArray<{
            id: string;
            name: NsTranslationKey<'common'>;
        }>;
    };
    requiredFields?: (keyof DocumentUploadSchema<DocumentName>)[];
    companyType?: CompanyTypesValue;
    country?: CountryCode;
    supportsMultipleUploads?: boolean;
    maxNumberOfFiles?: number;
    label?: string;
    extraDropzoneDescription?: string;
    hidePageCount?: boolean;
}
