import type { PfeConfig } from '@patternfly/pfe-tools/config.js';
import type { Attribute, ClassField, ClassMember, ClassMethod, CssCustomProperty, CssPart, CustomElementDeclaration, Declaration, Demo, Event, Export, Module, Package, Slot } from 'custom-elements-manifest/schema';
export interface PackageJSON {
    customElements?: string;
    name: string;
    version: string;
    private?: boolean;
    contributors?: string[];
    author?: string;
    workspaces?: string[];
}
export interface DemoRecord extends Demo {
    tagName: string;
    primaryElementName: string;
    permalink: string;
    slug: string;
    title: string;
    filePath?: string;
    manifest: Manifest;
}
export declare const isField: (x: ClassMember) => x is ClassField;
export declare const isMethod: (x: ClassMember) => x is ClassMethod;
export declare const isStatic: (x: ClassMember) => x is ClassMethod & {
    static: true;
};
export declare const isPublic: (x: ClassMember) => boolean;
export declare const isPublicInstanceField: (x: ClassMember) => x is ClassField;
export declare const isPublicInstanceMethod: (x: ClassMember) => x is ClassMethod;
export declare const isCustomElement: (x: Declaration) => x is CustomElementDeclaration;
export declare const isTheField: (x: ClassField) => (y: Attribute) => boolean;
declare class ManifestCustomElement {
    declaration: CustomElementDeclaration;
    module: Module;
    manifest: Manifest;
    /** The element's name */
    tagName?: string;
    /** The element's attributes */
    attributes: Attribute[];
    /** The element's cssCustomProperties */
    cssCustomProperties: CssCustomProperty[];
    /** The element's cssParts */
    cssParts: CssPart[];
    /** The element's description */
    description: string;
    /** The element's events */
    events: Event[];
    /** The element's methods */
    methods: ClassMethod[];
    /** The element's properties */
    properties: ClassField[];
    /** The element's slots */
    slots: Slot[];
    /** The element's summary */
    summary: string;
    /** The export for the element */
    export?: Export;
    /** The demos for the element */
    demos?: Demo[];
    constructor(declaration: CustomElementDeclaration, module: Module, manifest: Manifest);
}
export declare class Manifest {
    #private;
    manifest: Package | null;
    packageJson: PackageJSON | null;
    location?: string | undefined;
    static empty(): Manifest;
    static from({ package: packageJson, location }: {
        package: PackageJSON;
        location: string;
    }): Manifest;
    static getAll(rootDir?: string): Manifest[];
    static prettyTag: (tagName: string, aliases?: Record<string, string>) => string;
    declarations: Map<string, ManifestCustomElement>;
    /** file path to the custom elements manifest */
    path: string;
    constructor(manifest: Package | null, packageJson: PackageJSON | null, location?: string | undefined);
    /**
     */
    getTagNames(): string[];
    /**
     */
    getAttributes(tagName: string): undefined | Attribute[];
    /**
     */
    getCssCustomProperties(tagName: string): undefined | CssCustomProperty[];
    /**
     */
    getCssParts(tagName: string): undefined | CssPart[];
    /**
     */
    getDescription(tagName: string): undefined | string;
    /**
     */
    getEvents(tagName: string): undefined | Event[];
    /**
     */
    getMethods(tagName: string): undefined | ClassMethod[];
    /**
     */
    getProperties(tagName: string): undefined | ClassField[];
    /**
     */
    getSummary(tagName: string): undefined | string;
    /**
     */
    getSlots(tagName: string): undefined | Slot[];
    /**
     */
    getDemos(tagName: string): Demo[];
    getAllDemos(): Demo[];
    getDemoMetadata(tagName: string, options: Required<PfeConfig>): DemoRecord[];
}
export {};
