import { SystemContainerFactory } from '@contember/engine-system-api'; import { TenantContainerFactory } from '@contember/engine-tenant-api'; import { Builder } from '@contember/dic'; import { ServerConfig } from './config/config'; import { ModificationHandlerFactory } from '@contember/schema-migrations'; import { Initializer } from './bootstrap'; import { ProjectContainerFactoryFactory } from './project'; import { ProjectConfigResolver } from './config/projectConfigResolver'; import { TenantConfigResolver } from './config/tenantConfigResolver'; import { ProjectGroupContainerFactory } from './projectGroup/ProjectGroupContainer'; import { ProjectGroupResolver } from './projectGroup/ProjectGroupResolver'; import { Logger } from '@contember/logger'; import { ExecutionContainerFactory, GraphQlSchemaBuilderFactory, PermissionFactory } from '@contember/engine-content-api'; import { Providers } from './providers'; import { TenantApiMiddlewareFactory, TenantGraphQLContextFactory, TenantGraphQLHandlerFactory } from './tenant'; import { SystemApiMiddlewareFactory, SystemGraphQLContextFactory, SystemGraphQLHandlerFactory } from './system'; import { ContentApiControllerFactory, ContentGraphQLContextFactory, ContentQueryHandlerFactory, GraphQlSchemaFactory, GraphQLSchemaFactoryResult, NotModifiedChecker } from './content'; import { ProjectContextResolver } from './project-common'; import { ContentSchemaTransferMappingFactory, ExportApiControllerFactory, ExportExecutor, ImportApiMiddlewareFactory, ImportExecutor, SystemSchemaTransferMappingFactory } from './transfer'; import { Plugin } from './plugin/Plugin'; import { Application } from './application'; import { ApplicationWorkerManager } from './workers'; import { ContentQueryExecutorImpl } from './system/ContentQueryExecutor'; import { DatabaseMetadataResolver } from '@contember/database'; import Koa from 'koa'; import { ProjectGroupContainerResolver } from './projectGroup/ProjectGroupContainerResolver'; import { PrometheusRegistryFactory } from './prometheus/PrometheusRegistryFactory'; import { ProjectGroupContainerMetricsHook } from './prometheus/ProjectGroupContainerMetricsHook'; import { ContentApiSpecificCache } from './content/ContentApiSpecificCache'; import { Schema } from '@contember/schema'; export type ProcessType = 'singleNode' | 'clusterMaster' | 'clusterWorker'; export interface MasterContainer { initializer: Initializer; application: Application; providers: Providers; applicationWorkers: ApplicationWorkerManager; monitoringKoa: Koa; } export interface MasterContainerArgs { debugMode: boolean; serverConfig: ServerConfig; projectConfigResolver: ProjectConfigResolver; tenantConfigResolver: TenantConfigResolver; plugins: Plugin[]; logger: Logger; version?: string; processType: ProcessType; } export type MasterContainerBuilder = ReturnType; export type MasterContainerHook = (builder: MasterContainerBuilder) => MasterContainerBuilder; export declare class MasterContainerFactory { createBuilder(args: MasterContainerArgs): MasterContainerBuilder; createBuilderInternal({ serverConfig, debugMode, plugins, projectConfigResolver, tenantConfigResolver, version, logger, processType, }: MasterContainerArgs): Builder<{ serverConfig: { readonly port?: number | undefined; readonly http?: { readonly requestBodySize?: string | undefined; readonly suppressAccessLog?: string | boolean | undefined; } | undefined; readonly contentApi?: { readonly schemaCacheTtlSeconds?: number | undefined; readonly whereOptimizer?: { readonly disable?: boolean | undefined; readonly maxCrossOptimizationInput?: number | undefined; } | undefined; } | undefined; readonly logging?: { sentry?: { dsn: string; }; } | { readonly sentry?: { readonly dsn: string; } | undefined; } | undefined; readonly projectGroup?: ({ readonly domainMapping: string; } & { readonly configHeader?: string | undefined; readonly configEncryptionKey?: string | undefined; }) | undefined; readonly monitoringPort?: number | undefined; readonly workerCount?: string | number | undefined; readonly applicationWorker?: string | undefined; }; } & { debugMode: boolean; } & { version: string | undefined; } & { processType: ProcessType; } & { projectConfigResolver: ProjectConfigResolver; } & { tenantConfigResolver: TenantConfigResolver; } & { plugins: Plugin[]; } & { providers: { uuid: () => string; now: () => Date; bcrypt: (value: string) => Promise; bcryptCompare: (data: any, hash: string) => Promise; randomBytes: (bytes: number) => Promise; hash: (value: import("crypto").BinaryLike, algo: string) => Buffer; }; } & { tenantContainerFactory: TenantContainerFactory; } & { modificationHandlerFactory: ModificationHandlerFactory; } & { executionContainerFactory: ExecutionContainerFactory; } & { graphQlSchemaBuilderFactory: GraphQlSchemaBuilderFactory; } & { contentQueryExecutor: ContentQueryExecutorImpl; } & { systemContainerFactory: SystemContainerFactory; } & { contentPermissionFactory: PermissionFactory; } & { databaseMetadataResolver: DatabaseMetadataResolver; } & { graphqlSchemaCache: ContentApiSpecificCache; } & { graphQlSchemaFactory: GraphQlSchemaFactory; } & { projectContainerFactoryFactory: ProjectContainerFactoryFactory; } & { tenantGraphQLHandlerFactory: TenantGraphQLHandlerFactory; } & { systemGraphQLHandlerFactory: SystemGraphQLHandlerFactory; } & { logger: Logger; } & { projectGroupContainerFactory: ProjectGroupContainerFactory; } & { projectGroupContainerResolver: ProjectGroupContainerResolver; } & { promRegistryFactory: PrometheusRegistryFactory; } & { projectGroupContainerMetricsHook: ProjectGroupContainerMetricsHook; } & { promRegistry: import("prom-client").Registry; } & { projectGroupContainer: import("./projectGroup/ProjectGroupContainer").ProjectGroupContainer; } & { projectGroupResolver: ProjectGroupResolver; } & { notModifiedChecker: NotModifiedChecker; } & { contentGraphqlContextFactory: ContentGraphQLContextFactory; } & { contentQueryHandlerFactory: ContentQueryHandlerFactory; } & { projectContextResolver: ProjectContextResolver; } & { contentApiMiddlewareFactory: ContentApiControllerFactory; } & { tenantGraphQLContextFactory: TenantGraphQLContextFactory; } & { tenantApiMiddlewareFactory: TenantApiMiddlewareFactory; } & { systemGraphQLContextFactory: SystemGraphQLContextFactory; } & { systemApiMiddlewareFactory: SystemApiMiddlewareFactory; } & { contentSchemaTransferMappingFactory: ContentSchemaTransferMappingFactory; } & { systemSchemaTransferMappingFactory: SystemSchemaTransferMappingFactory; } & { importExecutor: ImportExecutor; } & { exportExecutor: ExportExecutor; } & { importApiMiddlewareFactory: ImportApiMiddlewareFactory; } & { exportApiMiddlewareFactory: ExportApiControllerFactory; } & { application: Application; } & { initializer: Initializer; } & { applicationWorkers: ApplicationWorkerManager; } & { monitoringKoa: Koa; }>; create(args: MasterContainerArgs): MasterContainer; } //# sourceMappingURL=MasterContainer.d.ts.map