import { ListItem } from '@limetech/lime-elements';
import { FunctionalComponent } from '../../stencil-public-runtime';
import { JsonValue, LimeWebComponentContext, LimeWebComponentPlatform, PrimitiveMetadata, Rule, RuleAll, RuleAny, RuleValidationIssue, Translator } from '@limetech/lime-web-components';
import { RulePath } from './rule-operations';
/**
 * State and callbacks the rule-editor passes down through the
 * recursive render tree. Built once per render in the editor's
 * `render()` and forwarded by every view.
 */
export interface RuleNodeRenderContext {
    issues: RuleValidationIssue[];
    metadataById: Map<string, PrimitiveMetadata>;
    primitiveOptions: Array<ListItem<string>>;
    isMutable: boolean;
    readonly: boolean;
    disabled: boolean;
    platform: LimeWebComponentPlatform;
    context: LimeWebComponentContext;
    translator: Translator;
    openChipPath: RulePath | null;
    onDelete: (path: RulePath) => void;
    onUpdateArgs: (path: RulePath, args: JsonValue) => void;
    onReplaceNode: (path: RulePath, replacement: Rule) => void;
    onChipInteract: (path: RulePath) => void;
    onPopoverClose: () => void;
}
interface NodeProps {
    node: Rule;
    path: RulePath;
    ctx: RuleNodeRenderContext;
}
/**
 * Render a `Rule` node and recurse into its children.
 * @param props
 */
export declare const RuleNodeView: FunctionalComponent<NodeProps>;
/**
 * If `node` is a group (`all`/`any`) or a negated group, return the
 * inner group together with its negation flag. Otherwise `null`.
 * Used by the dispatcher and by the editor's input normalization.
 * @param node
 */
export declare function extractGroup(node: Rule): {
    node: RuleAll | RuleAny;
    isNegated: boolean;
} | null;
export declare const IssuesView: FunctionalComponent<{
    issues: RuleValidationIssue[];
}>;
export {};
//# sourceMappingURL=rule-editor-views.d.ts.map