import { DrawingID, PluginID } from '@buerli.io/core';
/**
 * !!! Important !!!
 *
 * Functions in this file are called outside of ErrorBoundary,
 * so an error appearing in such function will break whole application.
 *
 * This is why all point operators should be guarded by question mark.
 * And this is the reasone why we should not use any "regular" hooks, or just functions
 * which are already used in components exported from buerli-plugins.
 *
 * There should not be any hard logic, verifiers are just checking if tree contains particular data
 * (e.g. useCurProductVerifier checks if currentProduct exists in drawing.structure, and corresponding
 * object exists in drawing.structure.tree, otherwise it adds warning).
 *
 * If you need to reuse non trivial existing function, it's better to copypaste code of the function
 * and guard all access operator by question marks like it's already done in usePartAndAssemblyContVerifier
 * for useAllObjects.
 */
declare type Warning = {
    caption: string;
};
export declare type Warnings = Record<string, Warning | null>;
export declare function useDrawingVerifier(drawingId: DrawingID, warnings: Warnings): void;
export declare function useCurProductVerifier(drawingId: DrawingID, warnings: Warnings): void;
export declare function useCurNodeVerifier(drawingId: DrawingID, warnings: Warnings): void;
export declare function useRootVerifier(drawingId: DrawingID, warnings: Warnings): void;
export declare function useRootOrProdVerifier(drawingId: DrawingID, warnings: Warnings): void;
export declare function usePluginObjVerifier(drawingId: DrawingID, pluginId: PluginID, warnings: Warnings): void;
export declare function usePartAndAssemblyContVerifier(drawingId: DrawingID, warnings: Warnings): void;
export declare function useExprSetVerifier(drawingId: DrawingID, warnings: Warnings): void;
export {};
