import { SlotProvider } from './slots';
import { RuntimeManifest } from './runtimes/runtime-manifest';
import { RuntimeDefinition } from './runtimes';
export type AspectManifest = {
    id: string;
    dependencies?: Aspect[];
    slots?: SlotProvider<unknown>[];
    defaultConfig?: {
        [key: string]: any;
    };
    declareRuntime?: RuntimeDefinition;
    files?: string[];
};
export declare class Aspect {
    id: string;
    dependencies: Aspect[];
    readonly slots: SlotProvider<unknown>[];
    readonly defaultConfig: {};
    readonly declareRuntime: RuntimeDefinition | undefined;
    readonly files: string[];
    constructor(id: string, dependencies: Aspect[], slots: SlotProvider<unknown>[], defaultConfig: {}, declareRuntime: RuntimeDefinition | undefined, files: string[]);
    private _runtimes;
    addRuntime(runtimeManifest: RuntimeManifest): this;
    getRuntime(runtimeDef: RuntimeDefinition): undefined | RuntimeManifest;
    getRuntimes(): RuntimeManifest[];
    static create(manifest: AspectManifest): Aspect;
}
