import * as React from "react";
import { Scaffolder } from "./scaffolding/scaffold";
import { Schematic } from "./Schematic";
import { SchematicKind } from "./SchematicKind";
export interface DraggedSchematic {
    id: string;
    type: string;
    node: React.ReactNode;
}
export interface SchematicBuilderContextValue {
    name: string;
    basePath?: string;
    basePackage?: string;
    baseDir?: string | ((schematic: Schematic) => string);
    schematicKinds: Map<string, SchematicKind>;
    scaffolders: Scaffolder<any>[] | ((schematic: Schematic) => Scaffolder<any>[]);
    getRootSchematic: () => Schematic;
    useSchematic: <T>(selector: (schematic: Schematic) => T) => T;
    setSchematic: ((schematic: Partial<Schematic>) => void) & ((setter: (schematic: Schematic) => Partial<Schematic>) => void);
    removeSchematic: () => void;
    parentPackage?: string;
    parentId?: string;
    parentChildName?: string;
    draggedSchematic: DraggedSchematic | null;
    disableDrop?: boolean;
    ignoreDrop?: boolean;
    latestSchematicFileHandle: React.MutableRefObject<FileSystemFileHandle | null>;
}
export declare const SchematicBuilderContext: React.Context<SchematicBuilderContextValue | null>;
export declare function useSchematicBuilderContext(): SchematicBuilderContextValue;
