import { Schema, AtomicChildDescription, ChildDescription, AtomicSubtreeDescription, SubtreeDescription, KeywordDescription } from "./schema_raw";
import { RuntimeConstants } from "./vsocket";
export declare type ScalarAnnotations = {
    has_index: boolean;
    local_multiplicity: number;
};
export declare type AnnotatedAtomicChildDescription = AtomicChildDescription<AtomicSubtreeAnnotations, ScalarAnnotations>;
export declare type AtomicSubtreeAnnotations = {
    children: AnnotatedAtomicChildDescription[];
} & ScalarAnnotations;
export declare type AnnotatedChildDescription = ChildDescription<SubtreeAnnotations, AtomicSubtreeAnnotations, ScalarAnnotations>;
export declare type SubtreeAnnotations = {
    children: AnnotatedChildDescription[];
    stride: number;
    has_index: boolean;
    local_multiplicity: number;
    starting_index: {
        [child_name: string]: number;
    };
    type_identifier?: string;
};
export declare type AnnotatedSubtreeDescription = SubtreeDescription<SubtreeAnnotations>;
export declare type AnnotatedAtomicSubtreeDescription = AtomicSubtreeDescription<AtomicSubtreeAnnotations>;
export declare type AnnotatedKeywordDescription = KeywordDescription<ScalarAnnotations>;
export declare function children_of_subtree(schema: Schema, st: SubtreeDescription): ChildDescription<import("./schema_raw").MaybeChildrenMaybeTypeIdentifier, {}, {}>[];
export declare function children_of_atomic_subtree(schema: Schema, st: AtomicSubtreeDescription): AtomicChildDescription<import("./schema_raw").MaybeAtomicChildrenMaybeTypeIdentifier, {}>[];
export declare type AnnotatedComponentDescription = AnnotatedSubtreeDescription & {
    ua_name: string;
    owning_module: string;
    bound_to?: string[];
};
export declare type AnnotatedSchema = Omit<Schema, "keywords"> & {
    keywords: AnnotatedComponentDescription[];
};
export declare function annotate(runtime_constants: RuntimeConstants, schema: Schema): AnnotatedSchema;
export declare function find_branch(annotated_schema: AnnotatedSchema, branch_name: string): AnnotatedChildDescription;
export declare function find_keyword(annotated_schema: AnnotatedSchema, branch_name: string, kw_name: string): AnnotatedKeywordDescription | AnnotatedAtomicSubtreeDescription;
export declare function find_subtree(annotated_schema: AnnotatedSchema, branch_name: string): AnnotatedSubtreeDescription;
