import { ElementRef, EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
import Cropper from 'cropperjs';
import { FooterComponent, HeaderComponent } from '@seniorsistemas/angular-components/structure';
import { ActiveDialog } from '@seniorsistemas/angular-components/dialog';
import * as i0 from "@angular/core";
/**
 * @description Componente de recorte de imagem que integra a biblioteca `cropperjs`.
 * Exibe um dialog com uma área interativa para selecionar, recortar e remover imagens,
 * suportando razão de aspecto configurável, formato circular e templates de cabeçalho/rodapé.
 *
 * @example
 * ```html
 * <s-image-cropper
 *   [(visible)]="dialogAberto"
 *   [imageSource]="urlDaImagem"
 *   [aspectRatio]="1"
 *   (croppedImage)="onCroppedImage($event)" />
 * ```
 *
 * @category Inputs
 */
export declare class ImageCropperComponent implements OnInit, OnChanges {
    activeDialog: ActiveDialog | null;
    static nextId: number;
    /** @description Identificador único do componente no DOM. Gerado automaticamente se não informado. */
    id: string;
    /** @description Controla a visibilidade do dialog de corte. @default false */
    visible: boolean;
    /** @description Título exibido no cabeçalho do dialog. @default 'Recortar imagem' */
    header: string;
    /** @description Rótulo do botão de confirmar o corte. @default 'Recortar' */
    cropLabel: string;
    /** @description Rótulo do botão de trocar a imagem. @default 'Trocar' */
    selectAnotherLabel: string;
    /** @description Rótulo do botão de remover a imagem. @default 'Remover' */
    removeLabel: string;
    /** @description Rótulo do botão de cancelar. @default 'Cancelar' */
    cancelLabel: string;
    /** @description Título do empty state quando nenhuma imagem foi selecionada. */
    emptyStateTitle: string;
    /** @description Rótulo do botão de ação do empty state. @default 'Escolher imagem' */
    emptyStateActionLabel: string;
    /** @description Classe do ícone exibido no empty state. @default 'fa fa-picture-o' */
    emptyStateIconClass: string;
    /** @description Razão de aspecto para o recorte (ex.: `1` para quadrado, `16/9`). @default NaN (livre) */
    aspectRatio: number;
    /** @description Quando `true`, exibe a área de recorte no formato circular. @default false */
    rounded: boolean;
    /** @description Exibe o botão para trocar a imagem selecionada. @default true */
    allowSelectAnother: boolean;
    /** @description Exibe o botão para remover a imagem. @default true */
    allowRemove: boolean;
    /** @description Exibe o botão para cancelar o recorte. @default true */
    allowCancel: boolean;
    /** @description URL ou base64 da imagem a ser carregada no cropper. */
    imageSource?: string;
    /** @description Emitido quando o valor de `visible` muda, habilitando two-way binding com `[(visible)]`. */
    visibleChange: EventEmitter<boolean>;
    /** @description Emitido quando o usuário troca a imagem selecionada. */
    changeImage: EventEmitter<any>;
    /** @description Emitido com a imagem recortada em formato base64 string. */
    croppedImage: EventEmitter<string>;
    /** @description Emitido com o `HTMLCanvasElement` resultante do recorte. */
    croppedCanvas: EventEmitter<HTMLCanvasElement>;
    /** @description Emitido quando o usuário confirma a remoção da imagem. */
    removedImage: EventEmitter<any>;
    /** @description Emitido quando o usuário cancela o recorte. */
    cancel: EventEmitter<any>;
    image: ElementRef<HTMLImageElement> | null;
    headerSection: HeaderComponent | null;
    footerSection: FooterComponent | null;
    cropper: Cropper | null;
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    private initCropper;
    getRoundedCanvas(sourceCanvas: HTMLCanvasElement): HTMLCanvasElement | null;
    onCropImage(): void;
    onChangeImage(): void;
    onRemoveImage(): void;
    onCancel(): void;
    onModalVisibleChange(visible: boolean): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ImageCropperComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ImageCropperComponent, "s-image-cropper", never, { "id": { "alias": "id"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "header": { "alias": "header"; "required": false; }; "cropLabel": { "alias": "cropLabel"; "required": false; }; "selectAnotherLabel": { "alias": "selectAnotherLabel"; "required": false; }; "removeLabel": { "alias": "removeLabel"; "required": false; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; }; "emptyStateTitle": { "alias": "emptyStateTitle"; "required": false; }; "emptyStateActionLabel": { "alias": "emptyStateActionLabel"; "required": false; }; "emptyStateIconClass": { "alias": "emptyStateIconClass"; "required": false; }; "aspectRatio": { "alias": "aspectRatio"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "allowSelectAnother": { "alias": "allowSelectAnother"; "required": false; }; "allowRemove": { "alias": "allowRemove"; "required": false; }; "allowCancel": { "alias": "allowCancel"; "required": false; }; "imageSource": { "alias": "imageSource"; "required": false; }; }, { "visibleChange": "visibleChange"; "changeImage": "changeImage"; "croppedImage": "croppedImage"; "croppedCanvas": "croppedCanvas"; "removedImage": "removedImage"; "cancel": "cancel"; }, ["headerSection", "footerSection"], ["s-header", "s-footer"], true, never>;
}
