export declare const SYMBOL_KIND_NAMESPACE = "namespace";
export declare const SYMBOL_KIND_CLASS = "class";
export declare const SYMBOL_KIND_TYPEDEF = "typedef";
export declare const CLASS_SYMBOL_METADATA_PROPERTY = "ui5-metadata";
export type SYMBOL_KIND = typeof SYMBOL_KIND_NAMESPACE | typeof SYMBOL_KIND_CLASS | typeof SYMBOL_KIND_TYPEDEF;
export interface MacrosAPI {
    symbols: UI5Symbol[];
}
export declare enum UI5Visibility {
    public = "public",
    restricted = "restricted",
    hidden = "hidden"
}
export interface BaseSymbol {
    name: string;
    basename: string;
    resource: string;
    module: string;
    static: boolean;
    visibility: UI5Visibility;
    description: string;
    displayName: string;
    title: string;
    subTitle: string;
    defaultAggreation?: string;
}
export type UI5Symbol = NamespaceSymbol | ClassSymbol | TypedefSymbol;
export interface NamespaceSymbol extends BaseSymbol {
    kind: typeof SYMBOL_KIND_NAMESPACE;
    export: string;
    nodes: [];
}
export interface ClassSymbol extends BaseSymbol {
    kind: typeof SYMBOL_KIND_CLASS;
    since?: string;
    events?: UI5Event[];
    extends?: string;
    [CLASS_SYMBOL_METADATA_PROPERTY]?: SymbolMetadata;
}
export interface TypedefSymbol extends BaseSymbol {
    kind: typeof SYMBOL_KIND_TYPEDEF;
    properties: UI5Property[];
    aggregations?: UI5Aggregation[];
}
export interface SymbolMetadata {
    stereotype: string;
    properties: UI5Property[];
    aggregations: UI5Aggregation[];
    defaultAggregation?: string;
}
export interface UI5PropertyGeneric {
    name: string;
    description: string;
    visibility: UI5Visibility;
}
export interface UI5PropertyCore extends UI5PropertyGeneric {
    methods: string[];
}
export interface UI5Event {
    name: string;
    description: string;
    visibility: UI5Visibility;
}
export interface UI5PropertyType {
    value: string;
}
export interface SapFeMetadata {
    allowedValues?: string[];
}
export interface UI5Metadata {
    'sap.fe': SapFeMetadata;
}
export interface UI5Property extends UI5PropertyCore {
    bindable?: boolean;
    group: string;
    defaultValue: unknown;
    type?: string;
    types?: UI5PropertyType[];
    allowedValues?: string[];
    'ui5-metadata'?: UI5Metadata;
}
export interface UI5Aggregation extends UI5PropertyCore {
    singularName: string;
    cardinality: string;
    linkEnabled: true;
    type: string | string[];
    bindable?: boolean;
    altTypes?: string[];
}
//# sourceMappingURL=types.d.ts.map