import { EventEmitter } from '@angular/core';
import { ImageCroppedEvent } from 'ngx-image-cropper';
import * as i0 from "@angular/core";
/**
 * ImageCropComponent
 *
 * A modal-ready component for cropping images with a specified aspect ratio.
 * Uses ngx-image-cropper internally and provides a simple interface.
 *
 * @example Inside an ion-modal
 * ```html
 * <ion-modal [isOpen]="showCropModal">
 *   <ng-template>
 *     <val-image-crop
 *       [image]="selectedFile"
 *       [aspectRatio]="1"
 *       [roundCropper]="true"
 *       (cropComplete)="onCropComplete($event)"
 *       (cancel)="showCropModal = false"
 *     />
 *   </ng-template>
 * </ion-modal>
 * ```
 */
export declare class ImageCropComponent {
    private i18n;
    /** Image file to crop */
    readonly image: import("@angular/core").InputSignal<File>;
    /** Aspect ratio (1 for square, 16/9 for widescreen, etc.) */
    readonly aspectRatio: import("@angular/core").InputSignal<number>;
    /** Use round cropper (for avatars) */
    readonly roundCropper: import("@angular/core").InputSignal<boolean>;
    /** Resize output to specific width (0 = no resize) */
    readonly resizeToWidth: import("@angular/core").InputSignal<number>;
    /** i18n namespace for labels */
    readonly i18nNamespace: import("@angular/core").InputSignal<string>;
    /** Emitted when crop is confirmed with the cropped blob */
    cropComplete: EventEmitter<Blob>;
    /** Emitted when user cancels the crop */
    cancel: EventEmitter<void>;
    /** Emitted when image fails to load */
    loadFailed: EventEmitter<void>;
    /** Internal signal for cropped blob */
    protected croppedBlob: import("@angular/core").WritableSignal<Blob>;
    /** Computed text for cancel button */
    protected cancelText: import("@angular/core").Signal<string>;
    /** Computed text for confirm button */
    protected confirmText: import("@angular/core").Signal<string>;
    /** Computed text for title */
    protected titleText: import("@angular/core").Signal<string>;
    /** Handle crop event from ngx-image-cropper */
    onImageCropped(event: ImageCroppedEvent): void;
    /** Confirm and emit the cropped blob */
    confirmCrop(): void;
    /** Handle load failure */
    onLoadFailed(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ImageCropComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ImageCropComponent, "val-image-crop", never, { "image": { "alias": "image"; "required": true; "isSignal": true; }; "aspectRatio": { "alias": "aspectRatio"; "required": false; "isSignal": true; }; "roundCropper": { "alias": "roundCropper"; "required": false; "isSignal": true; }; "resizeToWidth": { "alias": "resizeToWidth"; "required": false; "isSignal": true; }; "i18nNamespace": { "alias": "i18nNamespace"; "required": false; "isSignal": true; }; }, { "cropComplete": "cropComplete"; "cancel": "cancel"; "loadFailed": "loadFailed"; }, never, never, true, never>;
}
