import { ConfirmationTexts, CropperLabelsConfig, FileValidationErrors, ProfilePicturePickerData } from '@seniorsistemas/angular-components/profile-picture-picker';
import { FieldConfig } from './field';
/**
 * Configuração para campo de foto de perfil com recorte.
 *
 * Exibe uma área para upload e recorte de imagem de perfil.
 * Suporta pré-visualização, recorte interativo (cropper), validação de tipo e tamanho,
 * confirmação de remoção e labels customizadas para todas as ações.
 */
export interface ProfilePictureConfig extends FieldConfig {
    /** Tipo do campo: sempre `'profilePicture'`. */
    type: 'profilePicture';
    /**
     * Título exibido no modo simples (sem imagem carregada).
     * @example 'Foto de perfil'
     */
    simpleTitle: string;
    /**
     * Título exibido quando o painel de ações está ativo (com imagem carregada).
     * @example 'Alterar foto'
     */
    actionTitle: string;
    /**
     * Subtexto descritivo exibido abaixo do título.
     * @example 'Formato JPG ou PNG, máx 5MB'
     */
    subtitle: string;
    /**
     * Proporção de aspecto da área de recorte (largura / altura).
     * @example 1 para quadrado (1:1), 16/9 para paisagem
     */
    aspectRatio: number;
    /**
     * Labels dos botões exibidos no diálogo do cropper.
     * Importado de `@seniorsistemas/angular-components/profile-picture-picker`.
     */
    cropperLabelsConfig?: CropperLabelsConfig;
    /**
     * Label do botão de remover a imagem atual.
     * @example 'Remover foto'
     */
    removeButtonLabel?: string;
    /**
     * Label do botão de alterar a imagem atual.
     * @example 'Alterar foto'
     */
    changeButtonLabel?: string;
    /**
     * Textos de confirmação exibidos no diálogo de remoção da imagem.
     */
    confirmationTexts?: ConfirmationTexts;
    /**
     * Tamanho máximo do arquivo aceito em bytes.
     * @example 5242880 para 5MB
     */
    maxFileSize?: number;
    /**
     * Tipos MIME aceitos.
     * @example 'image/jpeg,image/png'
     */
    accept?: string;
    /**
     * Extensões de arquivo aceitas (com ponto).
     * @example ['.jpg', '.png', '.webp']
     */
    supportedExtensions?: string[];
    /**
     * Callback chamado quando a imagem é alterada após o recorte.
     * Recebe a imagem em base64 ou objeto `ProfilePicturePickerData`.
     */
    onChangeImage?: (event: string | ProfilePicturePickerData) => void;
    /**
     * Callback chamado quando a imagem é removida pelo usuário.
     */
    onRemovedImage?: () => void;
    /**
     * Callback chamado quando o arquivo selecionado não passa na validação.
     * Recebe os erros de validação ocorridos (ex: tamanho, extensão).
     */
    onInvalidFile?: (event: FileValidationErrors) => void;
}
declare module './field' {
    interface FieldTypeMap {
        profilePicture: ProfilePictureConfig;
    }
}
