import { CardType, ElementCategory } from '../definitions/shared/base';
import { ActionStyle } from '../definitions/elements/ActionElement';
import { BooleanStyle } from '../definitions/elements/BooleanElement';
import { BuilderStyle } from '../definitions/elements/BuilderElement';
import { CardStyle } from '../definitions/elements/CardLayoutElement';
import { CodeStyle } from '../definitions/elements/CodeElement';
import { ConfigurationBlockStyle } from '../definitions/elements/ConfigurationBlockElement';
import { DisplayStyle } from '../definitions/elements/DisplayElement';
import { EditorStyle } from '../definitions/elements/EditorElement';
import { FileStyle } from '../definitions/elements/FileElement';
import { InputStyle } from '../definitions/elements/InputElement';
import { OptionSelectStyle } from '../definitions/elements/OptionSelectElement';
import { PickerStyle } from '../definitions/elements/PickerElement';
/**
 * A path under `src/elements/`, without the `./` prefix or the `.vue`
 * extension. e.g. `"input/TextInput"` resolves to
 * `src/elements/input/TextInput.vue`.
 */
export type ElementPath = string;
/**
 * A path under `src/cards/`. e.g. `"ElementListCard"` resolves to
 * `src/cards/ElementListCard.vue`.
 */
export type CardPath = string;
/**
 * Per-type map of style → path. Each top-level key is an ElementType;
 * the inner object covers every style variant for that type.
 *
 * Using `Record<Style, ElementPath>` here means TS errors if a new
 * style is added to the definitions but not given a renderer path.
 */
export interface ElementRegistry {
    action: Record<ActionStyle, ElementPath>;
    boolean: Record<BooleanStyle, ElementPath>;
    builder: Record<BuilderStyle, ElementPath>;
    card: Record<CardStyle, ElementPath>;
    code: Record<CodeStyle, ElementPath>;
    "configuration-block": Record<ConfigurationBlockStyle, ElementPath>;
    display: Record<DisplayStyle, ElementPath>;
    editor: Record<EditorStyle, ElementPath>;
    file: Record<FileStyle, ElementPath>;
    input: Record<InputStyle, ElementPath>;
    "option-select": Record<OptionSelectStyle, ElementPath>;
    picker: Record<PickerStyle, ElementPath>;
}
export declare const elementRegistry: ElementRegistry;
/**
 * Per-cardType map. Cards have no style discriminator — `cardType`
 * alone resolves the renderer.
 */
export declare const cardRegistry: Record<CardType, CardPath>;
/**
 * Default style picked when an element JSON omits the dot suffix
 * (e.g. `type: "input"` is normalised to `"input.text"`). Each
 * ElementCategory must have a default registered.
 */
export declare const elementDefaultStyle: Record<ElementCategory, string>;
/**
 * Returns the relative element path for a given dot-notation `type`
 * (e.g. `"input.text"`), or `null` when the type isn't registered.
 *
 * A bare category (e.g. `"input"`) is auto-completed using the
 * category's default style. The loader uses the returned path to look
 * up a Vue component module from `import.meta.glob`.
 */
export declare function resolveElementPath(type: string): ElementPath | null;
/**
 * Returns the relative card path for a given `cardType`, or `null` if
 * unregistered.
 */
export declare function resolveCardPath(cardType: string): CardPath | null;
//# sourceMappingURL=registry.d.ts.map