import { LitElement } from 'lit'; /** Relaciones de aspecto admitidas para el recorte. */ export type OkCropperAspect = 'free' | '1:1' | '4:3' | '16:9'; /** Rectángulo de recorte en porcentaje del viewport (0..100). */ export interface OkCropRect { /** Borde izquierdo (% del ancho). */ x: number; /** Borde superior (% del alto). */ y: number; /** Ancho (% del ancho del viewport). */ width: number; /** Alto (% del alto del viewport). */ height: number; } /** Detalle del evento `ok-crop`. */ export interface OkCropDetail { rect: OkCropRect; } export declare class OkCropper extends LitElement { static styles: import("lit").CSSResult; /** URL de la imagen a recortar. */ src?: string; /** Relación de aspecto forzada del recorte. */ aspect: OkCropperAspect; /** Rect de recorte inicial (en % del viewport). Si no se da, se usa un recorte centrado. */ value?: OkCropRect; /** Texto del botón de cancelar. */ cancelLabel: string; /** Texto del botón de recortar. */ cropLabel: string; private rect; private dragMode; private startX; private startY; private startRect; private vpRect; private activePointer; willUpdate(changed: Map): void; /** Limita un rect a los bordes [0..100] del viewport. */ private clampRect; /** Aspect ratio del viewport en px (para convertir proporciones de imagen ↔ % de viewport). */ private vpAspect; /** Re-encaja un rect para cumplir el aspect ratio activo (anclado en su esquina top-left). */ private applyAspect; private onPointerDown; private onPointerMove; /** Redimensiona desde una esquina, respetando mínimo, bordes y aspect ratio. */ private resize; private onPointerUp; disconnectedCallback(): void; private setAspect; private emitCrop; private emitCancel; render(): unknown; } declare global { interface HTMLElementTagNameMap { 'ok-cropper': OkCropper; } }