import { RuntimeTraitInfo } from './RuntimeTraitInfo';
import { Namespace } from './Namespace';
import { Multiname } from './Multiname';
export declare class RuntimeTraits {
    readonly superTraits: RuntimeTraits;
    readonly protectedNs: Namespace;
    readonly protectedNsMappings: Record<string, RuntimeTraitInfo>;
    slots: RuntimeTraitInfo[];
    private _traits;
    private _nextSlotID;
    constructor(superTraits: RuntimeTraits, protectedNs: Namespace, protectedNsMappings: Record<string, RuntimeTraitInfo>);
    /**
     * Adds the given trait and returns any trait that might already exist under that name.
     *
     * See the comment for `Trait#resolveRuntimeTraits` for an explanation of the lookup scheme.
     */
    addTrait(trait: RuntimeTraitInfo): RuntimeTraitInfo;
    addSlotTrait(trait: RuntimeTraitInfo): void;
    private multinames;
    getTraitMultiname(mn: Multiname): RuntimeTraitInfo;
    /**
     * Returns the trait matching the given multiname parts, if any.
     *
     * See the comment for `Trait#resolveRuntimeTraits` for an explanation of the lookup scheme.
     */
    getTrait(namespaces: Namespace[], name: string): RuntimeTraitInfo;
    getTraitsList(): RuntimeTraitInfo[];
    getPublicTraitNames(): string[];
    getSlot(i: number): RuntimeTraitInfo;
}
//# sourceMappingURL=RuntimeTraits.d.ts.map