import { WithIndexer } from "../../../../fd-toolbox-core/server/types/with-indexer";
import { ResourceDescription } from "../../core/resource-description/resource-description";
import { OnDeleteAction } from "../meta-core/constants/db-schema-actions";
import { CrudAction, FileUploadType } from "../../../../fd-toolbox/enums/enums";
import { PropertyType } from "../../properties/property-type";
export interface InternalPropertyMeta {
    name: string;
    type?: PropertyType;
    markdown?: boolean;
    flagsEnum?: boolean;
    declaredWithType?: string;
    bigText?: boolean;
    required?: boolean;
    notDisplayable?: boolean;
    notEditDisplayable?: boolean;
    notListDisplayable?: boolean;
    notFilterDisplayable?: boolean;
    isViewVisible?: boolean;
    colorful?: boolean;
    notEditableFromOutside?: boolean;
    notAResource?: boolean;
    notRelation?: boolean;
    enumerationDisplayName?: string[];
    enumerationValues?: number[];
    expandDescription?: boolean;
    expandDescriptionProperties?: string[];
    outsideExcluded?: boolean;
    defaultSort?: boolean;
    requiredIfOtherArePresent?: string[];
    requiredIfPropHasValue?: [string, unknown];
    resourcePropertyId?: {
        oldResourcePropertyId: string;
    };
    orderByProperty?: string;
    orderByPriority?: number;
    useService?: boolean;
    dateOnly?: boolean;
    isNavigationProperty?: boolean;
    priority?: number;
    unique?: boolean;
    preventDefault?: boolean;
    phoneNumber?: boolean;
    isCurrency?: boolean;
    isSearchable?: boolean;
    uiRelationPriority?: number;
    onDelete?: OnDeleteAction;
    isUrl?: boolean;
    isEmail?: boolean;
    isRichText?: boolean;
    displayName?: string;
    fileUpload?: FileUploadType;
    notColorful?: boolean;
    isBlobImage?: boolean;
    isDynamic?: boolean;
    isIndexed?: boolean;
}
/** @internal */
export interface InternalResourceMeta {
    id: string;
    name: string;
    properties: WithIndexer<InternalPropertyMeta>;
    relativePath: string;
    persistence: {
        tableName: string;
    };
    description: ResourceDescription;
    oldResourcePropertyId?: string;
    accessByUserId?: boolean;
    accessByWorkspaceId?: boolean;
    transientResource?: boolean;
    allowedCrudActions?: CrudAction[];
    createOnlyResource?: boolean;
    getOnlyResource?: boolean;
    resource?: boolean;
    crudHandlers?: string[];
    dynamicMetaProviders?: string[];
    orderByProperty?: string;
    orderByPriority?: number;
    pluralName?: string;
    displayName?: string;
    isMarkdown?: boolean;
    isBigText?: boolean;
    icon?: string;
    userSingleton?: boolean;
    workspaceSingleton?: boolean;
    systemSingleton?: boolean;
    preferPluralName?: boolean;
    preferSingularName?: boolean;
    extendedFrom?: string;
}
export declare function getInternalResourceMeta(resourceName: string, throwIfNotFound?: boolean): Promise<InternalResourceMeta>;
export declare function setInternalResourceMeta(config: InternalResourceMeta): Promise<void>;
export declare function hasInternalResourceMeta(resourceName: string): Promise<boolean>;
export declare function getResourceMetaCacheKey(resourceName: string): string;
/** @internal */
export declare function getAllInternalResourceMetas(metaResourceNames?: string[]): Promise<WithIndexer<InternalResourceMeta>>;
