import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper';
import { IExtensionUserCreationProvider } from '../interfaces';
import { User } from '../entities/user.entity';
import { ComputedFieldTriggerConfig, ComputedFieldValueType } from '../dtos/create-field-metadata.dto';
import { CommonEntity } from '../entities/common.entity';
import { Locale } from '../entities/locale.entity';
import { SecurityRule } from '../entities/security-rule.entity';
import { IScheduledJob } from '../services/scheduled-jobs/scheduled-job.interface';
import { IDashboardQuestionDataProvider, IDashboardVariableSelectionProvider, IErrorCodeProvider, ISecurityRuleConfigProvider, ISelectionProvider, ISelectionProviderContext, ISolidDatabaseModule } from "../interfaces";
import { ObjectLiteral } from 'typeorm';
type ControllerMetadata = {
    name: string;
    methods: string[];
};
export declare enum RESERVED_SOLID_KEYWORDS {
    moduleMetadata = "moduleMetadata",
    modelMetadata = "modelMetadata",
    fieldMetadata = "fieldMetadata",
    dataSource = "dataSource",
    repository = "repository",
    entityManager = "entityManager",
    actionMetadata = "actionMetadata",
    emailAttachment = "emailAttachment",
    emailTemplate = "emailTemplate",
    listOfValues = "listOfValues",
    mediaStorageProvider = "mediaStorageProvider",
    media = "media",
    menuItemMetadata = "menuItemMetadata",
    mqMessageQueue = "mqMessageQueue",
    mqMessage = "mqMessage",
    permissionMetadata = "permissionMetadata",
    roleMetadata = "roleMetadata",
    securityRule = "securityRule",
    setting = "setting",
    smsTemplate = "smsTemplate",
    userMetadata = "userMetadata",
    user = "user",
    locale = "locale"
}
export interface TypeOrmEventContext {
    eventType?: string;
    entity?: ObjectLiteral | undefined;
    databaseEntity?: any;
    entityId?: any;
    metadataName?: string;
    updatedColumns?: string[];
    updatedRelations?: string[];
}
export interface ComputedFieldMetadata<TContext = any> {
    moduleName: string;
    modelName: string;
    fieldName: string;
    computedFieldValueType: ComputedFieldValueType;
    computedFieldTriggerConfig: ComputedFieldTriggerConfig[];
    computedFieldValueProviderName: string;
    computedFieldValueProviderCtxt: TContext;
    eventContext: TypeOrmEventContext;
}
export declare class SolidRegistry {
    private readonly logger;
    private extensionUserCreationProvider;
    private seeders;
    private scheduledJobProviders;
    private selectionProviders;
    private computedFieldProviders;
    private solidDatabaseModules;
    private controllers;
    private modules;
    private securityRules;
    private locales;
    private computedFieldMetadata;
    private dashboardVariableSelectionProviders;
    private dashboardQuestionDataProviders;
    private mailProviders;
    private whatsappProviders;
    private smsProviders;
    private securityRuleConfigProviders;
    private errorCodeProviders;
    private settingsProviders;
    private auditableModels;
    registerExtensionUserCreationProvider(provider: InstanceWrapper): void;
    getExtensionUserCreationProvider<T extends User = User>(): IExtensionUserCreationProvider<T, any> | null;
    registerErrorCodeProvider(errorCodeProvider: InstanceWrapper): void;
    registerWhatsappProvider(whatsappProvider: InstanceWrapper): void;
    registerSmsProvider(smsProvider: InstanceWrapper): void;
    registerSecurityRuleConfigProvider(securityRuleConfigProvider: InstanceWrapper): void;
    registerMailProvider(mailProvider: InstanceWrapper): void;
    registerController(name: string, methodNames: string[]): void;
    registerControllers(controllers: Set<ControllerMetadata>): void;
    registerSeeder(seeder: InstanceWrapper): void;
    registerSelectionProvider(selectionProvider: InstanceWrapper): void;
    registerDashboardVariableSelectionProvider(dashboardSelectionProvider: InstanceWrapper): void;
    registerDashboardQuestionDataProvider(dashboardQuestionDataProvider: InstanceWrapper): void;
    registerComputedFieldProvider(computedFieldProvider: InstanceWrapper): void;
    registerScheduledJobProvider(scheduledJobProvider: InstanceWrapper): void;
    registerSolidDatabaseModule(solidDatabaseModule: InstanceWrapper): void;
    registerModules(modules: InstanceWrapper[]): void;
    registerSettingsProvider(provider: InstanceWrapper): void;
    registerSecurityRules(securityRules: SecurityRule[]): void;
    registerlocales(locales: Locale[]): void;
    registerComputedFieldMetadata(computedFieldMetadata: ComputedFieldMetadata[]): void;
    getSettingsProviders(): InstanceWrapper[];
    getSettingsProviderInstance<T extends ISelectionProviderContext>(name: string): ISelectionProvider<T>;
    getMailProviders(): Array<InstanceWrapper>;
    getWhatsappProviders(): Array<InstanceWrapper>;
    getSmsProviders(): Array<InstanceWrapper>;
    getSecurityRuleConfigProviders(): Array<InstanceWrapper>;
    getSecurityRuleConfigProviderInstance(name: string): ISecurityRuleConfigProvider;
    getSeeders(): Array<InstanceWrapper>;
    getControllers(): ControllerMetadata[];
    getSelectionProviders(): Array<InstanceWrapper>;
    getSelectionProviderInstance<T extends ISelectionProviderContext>(name: string): ISelectionProvider<T>;
    getDashboardVariableSelectionProviders(): Array<InstanceWrapper>;
    getDashboardVariableSelectionProviderInstance<T extends ISelectionProviderContext>(name: string): IDashboardVariableSelectionProvider<T>;
    getErrorCodeProviders(): Array<InstanceWrapper>;
    getErrorCodeProviderInstance(name: string): IErrorCodeProvider | undefined;
    getDashboardQuestionDataProviders(): Array<InstanceWrapper>;
    getDashboardQuestionDataProviderInstance<TContext, TData>(name: string): IDashboardQuestionDataProvider<TContext, TData>;
    getComputedFieldProviders(): Array<InstanceWrapper>;
    getScheduledJobProviders(): Array<InstanceWrapper>;
    getScheduledJobProviderInstance(name: string): IScheduledJob;
    getComputedFieldProvider(name: string): InstanceWrapper;
    getSolidDatabaseModules(): Array<InstanceWrapper>;
    getDefaultSolidDatabaseModule(): ISolidDatabaseModule;
    getModules(): Array<InstanceWrapper>;
    getModule(name: string): InstanceWrapper;
    getComputedFieldMetadata(): ComputedFieldMetadata[];
    getDefaultLocale(): Locale | null;
    getSecurityRules(modelSingularName: string, roleNames?: string[]): SecurityRule[];
    registerAuditableModels(models: Set<string>): void;
    isAuditableModel(modelSingularName: string): boolean;
    getCommonEntityKeys(): (keyof CommonEntity | 'createdBy' | 'updatedBy')[];
    getAllSettingsProviderInstance<T extends ISelectionProviderContext>(): ISelectionProvider<T>;
}
export {};
//# sourceMappingURL=solid-registry.d.ts.map