import type { AppLoggerLevel } from "@paroicms/internal-server-lib";
import type { JtFqdnSitePackConf, JtGoogleAuthConf, JtHttpRedirection, JtImageProcessorConf, JtLocalDevAccountConf, JtPlatformAdminAccountConf, JtSingleSiteConf, JtSubDomainSitePackConf, PluginStaticConfigurations } from "@paroicms/public-server-lib";
export type AppConf = SingleSiteAppConf | MultisiteAppConf;
export interface AppConfBase {
    port: number;
    hostname?: string;
    publicProtocol: "http" | "https";
    publicPort: number;
    adminUiPort: number;
    logLevel: "silent" | AppLoggerLevel;
    logFile?: string;
    allowRobots: boolean;
    immutableAssets: boolean;
    cacheTimeToIdle: CacheDuration;
    clearCacheAfterStart?: boolean;
    clearImageCacheAfterStart?: boolean;
    graphqlDevTools?: boolean;
    generateMissingDatabases?: boolean;
    googleAuth?: GoogleAuthConf;
    imageProcessor: ImageProcessorConf;
    localDevAccount?: LocalDevAccountConf;
    platformAdminAccounts?: PlatformAdminAccountConf[];
    plugins: PluginStaticConfigurations;
    httpRedirections?: HttpRedirectionConf[];
}
export type CacheDuration = `${number}d` | "disabled" | "infinite";
export interface SingleSiteAppConf extends AppConfBase {
    kind: "singleSite";
    singleSite: SingleSiteConf;
}
export interface MultisiteAppConf extends AppConfBase {
    kind: "multisite";
    platform: {
        dataDir: string;
    };
    sitePacks: (FqdnSitePackConf | SubDomainSitePackConf)[];
}
export type SingleSiteConf = JtSingleSiteConf;
export type FqdnSitePackConf = JtFqdnSitePackConf;
export type SubDomainSitePackConf = JtSubDomainSitePackConf;
export type GoogleAuthConf = JtGoogleAuthConf;
export type ImageProcessorConf = JtImageProcessorConf;
export type LocalDevAccountConf = JtLocalDevAccountConf;
export type PlatformAdminAccountConf = JtPlatformAdminAccountConf;
export type HttpRedirectionConf = JtHttpRedirection;
