import { AreaTypeValue } from '../core/types/actions';
import { IArea } from '../types/areaTypes';
/**
 * Représente une position d'area.
 */
export interface AreaPosition {
    x: number;
    y: number;
}
/**
 * Hook pour obtenir une zone spécifique par ID
 */
export declare const useAreaById: (areaId: string) => IArea<string>;
/**
 * Hook pour obtenir le layout d'une zone
 */
export declare const useAreaLayoutById: (areaId: string) => import("../types/areaTypes").AreaLayout | import("../types/areaTypes").AreaRowLayout;
/**
 * Hook pour obtenir la zone active
 */
export declare const useActiveArea: () => IArea<string> | null;
/**
 * Hook pour obtenir toutes les zones
 */
export declare const useAllAreas: () => {
    [key: string]: IArea<string>;
};
/**
 * Hook pour obtenir tous les layouts
 */
export declare const useAllLayouts: () => {
    [key: string]: import("../types/areaTypes").AreaLayout | import("../types/areaTypes").AreaRowLayout;
};
/**
 * Hook pour obtenir les erreurs de zones
 */
export declare const useAreaErrors: () => string[];
/**
 * Hook pour obtenir la zone racine
 */
export declare const useRootArea: () => IArea<string> | null;
/**
 * Hook pour obtenir le layout de la zone racine
 */
export declare const useRootAreaLayout: () => import("../types/areaTypes").AreaLayout | import("../types/areaTypes").AreaRowLayout | null;
/**
 * Hook pour obtenir les viewports
 */
export declare const useAreaViewports: () => {
    [key: string]: import("..").Rect;
};
/**
 * Hook pour obtenir la zone à ouvrir
 */
export declare const useAreaToOpen: () => {
    position: import("..").Point;
    area: {
        type: string;
        state: any & {
            sourceId?: string;
        };
    };
} | null;
/**
 * Hook pour obtenir le preview de jointure
 */
export declare const useJoinPreview: () => import("../core/slices/actions/areas-join-preview").JoinPreviewState | null;
/**
 * Hook pour obtenir l'ID de l'écran actif
 */
export declare const useActiveScreenId: () => string;
/**
 * Hook pour obtenir les actions de zones
 */
export declare const useAreaActions: () => {
    addArea: (area: IArea<AreaTypeValue>) => string;
    removeArea: (id: string) => void;
    setActiveArea: (id: string | null) => void;
    updateArea: (areaData: Partial<IArea<AreaTypeValue>> & {
        id: string;
    }) => void;
    updateLayout: (layoutData: Partial<import("../types/areaTypes").AreaRowLayout> & {
        id: string;
    }) => void;
    setAreaToOpen: (payload: import("../core/slices/areas-slice").AreasState["areaToOpen"]) => void;
    updateAreaToOpenPosition: (position: import("..").Point) => void;
    finalizeAreaPlacement: (payload?: {
        targetId?: string;
        placement?: import("..").PlaceArea;
    }) => void;
    cleanupTemporaryStates: () => void;
    setJoinPreview: (payload: import("../core/slices/actions/areas-join-preview").JoinPreviewState | null) => void;
    joinOrMoveArea: (payload: {
        sourceAreaId: string;
        targetAreaId: string;
        direction: import("..").CardinalDirection;
    }) => void;
    splitArea: (payload: {
        areaIdToSplit: string;
        parentRowId: string | null;
        horizontal: boolean;
        corner: import("..").IntercardinalDirection;
    }) => import("../core/slices/actions/area-split").SplitResult | null;
    setRowSizes: (payload: {
        rowId: string;
        sizes: number[];
    }) => void;
    setViewports: (viewports: Record<string, import("..").Rect>) => void;
};
/**
 * Hook principal optimisé pour la gestion des zones
 */
export declare function useAreaOptimized(): {
    createArea: (type: AreaTypeValue, state: any, position?: AreaPosition, id?: string) => string;
    removeArea: (id: string) => void;
    setActive: (id: string | null) => void;
    update: (id: string, changes: Partial<IArea<AreaTypeValue>>) => void;
    addArea: (area: IArea<AreaTypeValue>) => string;
    setActiveArea: (id: string | null) => void;
    updateArea: (areaData: Partial<IArea<AreaTypeValue>> & {
        id: string;
    }) => void;
    updateLayout: (layoutData: Partial<import("../types/areaTypes").AreaRowLayout> & {
        id: string;
    }) => void;
    setAreaToOpen: (payload: import("../core/slices/areas-slice").AreasState["areaToOpen"]) => void;
    updateAreaToOpenPosition: (position: import("..").Point) => void;
    finalizeAreaPlacement: (payload?: {
        targetId?: string;
        placement?: import("..").PlaceArea;
    }) => void;
    cleanupTemporaryStates: () => void;
    setJoinPreview: (payload: import("../core/slices/actions/areas-join-preview").JoinPreviewState | null) => void;
    joinOrMoveArea: (payload: {
        sourceAreaId: string;
        targetAreaId: string;
        direction: import("..").CardinalDirection;
    }) => void;
    splitArea: (payload: {
        areaIdToSplit: string;
        parentRowId: string | null;
        horizontal: boolean;
        corner: import("..").IntercardinalDirection;
    }) => import("../core/slices/actions/area-split").SplitResult | null;
    setRowSizes: (payload: {
        rowId: string;
        sizes: number[];
    }) => void;
    setViewports: (viewports: Record<string, import("..").Rect>) => void;
};
