import { Application, Container, Graphics } from 'pixi.js';
import { IClip } from '../clips/iclip';
import { Transformer } from '../transfomer/transformer';
import { Studio } from '../studio';
export declare class SelectionManager {
    private studio;
    selectedClips: Set<IClip>;
    activeTransformer: Transformer | null;
    interactiveClips: Set<IClip>;
    getSelection(): IClip[];
    selectionGraphics: Graphics | null;
    isDragSelecting: boolean;
    private dragSelectionStart;
    private isUpdatingTextRealtime;
    private textClipResizedWidth;
    private textClipResizeHandle;
    private textClipResizedSx;
    private textClipResizedSy;
    private lastPointerDownTime;
    private lastPointerDownClip;
    constructor(studio: Studio);
    init(app: Application, artboard: Container): void;
    private onStagePointerDown;
    private onStagePointerMove;
    private onStagePointerUp;
    /**
     * Find clips that intersect with the given selection rectangle
     */
    private getIntersectingClips;
    /**
     * Update the transformer to show a preview of what will be selected
     */
    private updatePreviewSelection;
    /**
     * Update root.hitArea to match logical clip dimensions.
     * Must be called after clip.width/height change (e.g. after text reflow or resize).
     */
    refreshClipHitArea(clip: IClip): void;
    /**
     * Setup sprite interactivity for click selection
     */
    setupSpriteInteractivity(clip: IClip): void;
    /**
     * Find the topmost clip (highest zIndex) at a given point
     */
    getTopmostClipAtPoint(globalPoint: {
        x: number;
        y: number;
    }): IClip | null;
    /**
     * Select a clip and show transform controls
     */
    selectClip(clip: IClip, addToSelection?: boolean): void;
    selectClipsByIds(ids: string[]): void;
    setSelection(clips: IClip[]): void;
    deselectClip(): void;
    move(dx: number, dy: number): Promise<void>;
    clear(): void;
    recreateTransformer(): void;
    private destroyTransformer;
    private createTransformer;
    private syncSelectedClipsTransformsRealtime;
    private syncSelectedClipsTransforms;
    private syncSpriteToClipProperties;
    deleteSelected(): Promise<void>;
}
