import { MetadataRegistry, MetadataType } from './types';
export declare class RegistryAccess {
    private registry;
    private strictFolderTypes?;
    private folderContentTypes?;
    private aliasTypes?;
    constructor(registry?: MetadataRegistry, projectDir?: string);
    getRegistry(): MetadataRegistry;
    /**
     * Query a metadata type by its name.
     *
     * @param name - Case-insensitive name of the metadata type
     * @returns The corresponding metadata type object
     */
    getTypeByName(name: string): MetadataType;
    /**
     * Query a metadata type by its file suffix.
     *
     * @param suffix - File suffix of the metadata type
     * @returns The corresponding metadata type object
     */
    getTypeBySuffix(suffix: string): MetadataType | undefined;
    /**
     * Find similar metadata type matches by its file suffix
     *
     * @param suffix - File suffix of the metadata type
     * @returns An array of similar suffix and metadata type matches
     */
    guessTypeBySuffix(suffix: string): Array<{
        suffixGuess: string;
        metadataTypeGuess: MetadataType;
    }> | undefined;
    /**
     * Searches for the first metadata type in the registry that returns `true`
     * for the given predicate function.
     *
     * Can return undefined if no type matches the predicate.
     *
     * @param predicate - Predicate to test types with
     * @returns The first metadata type object that fulfills the predicate
     */
    findType(predicate: (type: MetadataType) => boolean): MetadataType | undefined;
    /**
     * Query the types that require a strict parent directory
     *
     * @see {@link MetadataType.strictDirectoryName}
     *
     * @returns An array of metadata type objects that require strict parent folder names
     */
    getStrictFolderTypes(): MetadataType[];
    /**
     * Query for the types that have the folderContentType property defined.
     * E.g., reportFolder, dashboardFolder, documentFolder, emailFolder
     *
     * @see {@link MetadataType.folderContentType}
     *
     * @returns An array of metadata type objects that have folder content
     */
    getFolderContentTypes(): MetadataType[];
    /**
     * Query for the types that have the aliasFor property defined.
     * E.g., EmailTemplateFolder
     *
     * @see {@link MetadataType.aliasFor}
     *
     * @returns An array of metadata type objects that have aliasFor
     */
    getAliasTypes(): MetadataType[];
    /**
     * Return the parent metadata type from the registry for the given child type
     *
     * @param childName - Child metadata type name
     * @returns Parent metadata type object or undefined if no parent exists
     */
    getParentType(childName: string): MetadataType | undefined;
}
